diff options
Diffstat (limited to 'src/events/mod.rs')
| -rw-r--r-- | src/events/mod.rs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/events/mod.rs b/src/events/mod.rs new file mode 100644 index 0000000..390c3a8 --- /dev/null +++ b/src/events/mod.rs @@ -0,0 +1,52 @@ +use crate::{client::Data, consts}; + +use eyre::Result; +use log::{debug, info}; +use poise::serenity_prelude::{self as serenity, CreateBotAuthParameters}; +use serenity::FullEvent; + +pub mod error; +mod guild; +mod message; +mod pinboard; +mod reactboard; + +pub async fn handle(ctx: &serenity::Context, event: &FullEvent, data: &Data) -> Result<()> { + match event { + FullEvent::Ready { data_about_bot } => { + info!("Logged in as {}!", data_about_bot.user.name); + + if let Ok(invite_link) = CreateBotAuthParameters::new().auto_client_id(ctx).await { + let link = invite_link + .scopes(consts::bot_scopes()) + .permissions(*consts::bot_permissions()) + .build(); + info!("Invite me to your server at {link}"); + } else { + debug!("Not displaying invite_link since we couldn't find our client ID"); + } + } + + FullEvent::Message { new_message } => { + message::handle(ctx, new_message, data).await?; + pinboard::handle(ctx, new_message, data).await?; + } + + FullEvent::ReactionAdd { add_reaction } => { + reactboard::handle(ctx, add_reaction, data).await?; + } + + FullEvent::GuildCreate { guild, is_new: _ } => { + guild::handle_create(guild, data).await?; + } + + FullEvent::GuildDelete { + incomplete, + full: _, + } => guild::handle_delete(incomplete, data).await?, + + _ => {} + } + + Ok(()) +} |
