diff --git a/src/events/bot/interaction_create.rs b/src/events/bot/interaction_create.rs new file mode 100644 index 0000000..ff8a12d --- /dev/null +++ b/src/events/bot/interaction_create.rs @@ -0,0 +1,24 @@ +use serenity::all::*; +use crate::commands::SlashCommand; + +pub async fn handle( + ctx: &Context, + interaction: &Interaction, + commands: &[Box], +) { + let Interaction::Command(command) = interaction else { + return; + }; + + let name: &str = command.data.name.as_str(); + + match commands.iter().find(|cmd| cmd.name() == name) { + Some(cmd) => { + if let Err(why) = cmd.run(ctx, command).await { + eprintln!("❌ | Error on {name}: {why:?}"); + } + } + None => eprintln!("⚠️ | Unable to fetch: /{name}"), + } +} +