From b643a6a235b0c1c9902b97421f24eff2b0d0a5ac Mon Sep 17 00:00:00 2001 From: seth Date: Fri, 9 Aug 2024 23:35:41 -0400 Subject: tree-wide: end of summer cleanup (#214) * api: refactor & rename module to http * client: split from main.rs * tree-wide: use eyre::Report as error * nix: alejandra -> nixfmt * nix: start using treefmt-nix * nix: simplify flake * nix: refactor derivation & docker image * nix: remove overlay * ci: update & cleanup workflows * commands: assign all commands automatically * commands/copypasta: remove * http/teawie: update response struct for upstream rust rewrite * handlers: rename modules to events; flatten * crates: rename self to teawie-bot * nix: fenix -> rust-overlay i want a specific rust version grrrrrrr * ci: pin rust to 1.79 this is what our nix dev shell uses and what we can compile on. it seems the time crate doesn't like v1.80 of the compiler :( * ci: always run release gates * nix: fix static toolchain * nix: rust-overlay -> nixpkgs * ci: adopt actions-rust-lang actions * nix: use docker arch names for containers * crates/time: 0.3.30 -> 0.3.36 fixes building on rust 1.80.0 --- src/events/mod.rs | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/events/mod.rs (limited to 'src/events/mod.rs') 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(()) +} -- cgit v1.2.3