diff options
Diffstat (limited to 'src/bot.rs')
| -rw-r--r-- | src/bot.rs | 61 |
1 files changed, 29 insertions, 32 deletions
@@ -22,7 +22,9 @@ use poise::{ }; use serenity::{ all::{ + Guild, GuildId, + PartialGuild, ReactionType, }, builder::CreateMessage, @@ -61,40 +63,41 @@ impl TypeMapKey for HttpKey { type Value = reqwest::Client; } -struct Handler; - -#[serenity::async_trait] -impl EventHandler for Handler { - async fn ready(&self, ctx: Context, r: Ready) { - let guild = r.guilds.iter().find(|g| g.id == CONFIG.discord.guild()); - - if guild.is_none() { - tracing::info!(join_url = OAUTH_URL.as_str(), "bot isn't in configured guild"); - return; - } +#[cfg(debug_assertions)] +const BOTNAME: &str = "thulani (dev)"; - tracing::info!("connected"); +#[cfg(not(debug_assertions))] +const BOTNAME: &str = "thulani"; - #[cfg(debug_assertions)] - let botname = "thulani (dev)"; +struct Handler; - #[cfg(not(debug_assertions))] - let botname = "thulani"; +async fn ready_guild(ctx: &Context, guild_id: GuildId) { + let sb = songbird::get(ctx).await.unwrap(); - if let Some(guild) = guild { - if let Err(e) = guild.id.edit_nickname(&ctx, Some(botname)).await { - tracing::error!("changing nickname: {:?}", e); - } - } + if let Err(e) = guild_id.edit_nickname(ctx, Some(BOTNAME)).await { + tracing::error!(error = %e, %guild_id, "changing nickname"); + } - let sb = songbird::get(&ctx).await.unwrap(); + let c = sb.get_or_insert(guild_id); + let mut call = c.lock().await; - let c = sb.get_or_insert(CONFIG.discord.guild()); - let mut call = c.lock().await; + call.remove_all_global_events(); + call.add_global_event(Event::Track(TrackEvent::End), SongbirdHandler(c.clone())); +} - call.remove_all_global_events(); +#[serenity::async_trait] +impl EventHandler for Handler { + async fn ready(&self, _ctx: Context, r: Ready) { + tracing::info!( + join_url = OAUTH_URL.as_str(), + visible_guilds = r.guilds.len(), + "connected to discord" + ); + } - call.add_global_event(Event::Track(TrackEvent::End), SongbirdHandler(c.clone())); + async fn guild_create(&self, ctx: Context, guild: Guild, _is_new: Option<bool>) { + tracing::info!(guild_id = %guild.id, guild_name = %guild.name, "received guild_create"); + ready_guild(&ctx, guild.id).await; } async fn resume(&self, _ctx: Context, _resume: ResumedEvent) { @@ -332,12 +335,6 @@ fn check(ctx: PoiseContext) -> BoxFuture<anyhow::Result<bool>> { ) .entered(); - if !ctx.guild_id().map_or(false, |x| x == CONFIG.discord.guild()) { - tracing::info!("rejecting command, wrong guild"); - - return Ok(false); - } - if ctx.author().id == CONFIG.discord.owner() { tracing::info!("author is owner"); |
