aboutsummaryrefslogtreecommitdiff
path: root/src/bot.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bot.rs')
-rw-r--r--src/bot.rs61
1 files changed, 29 insertions, 32 deletions
diff --git a/src/bot.rs b/src/bot.rs
index 6da1ac4..7d85c89 100644
--- a/src/bot.rs
+++ b/src/bot.rs
@@ -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");