diff options
Diffstat (limited to 'src/handler.rs')
-rw-r--r-- | src/handler.rs | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/src/handler.rs b/src/handler.rs deleted file mode 100644 index 00cf0eb..0000000 --- a/src/handler.rs +++ /dev/null @@ -1,70 +0,0 @@ -use poise::serenity_prelude as serenity; - -use crate::models::ReactionRole; -use crate::{Data, Error}; - -pub async fn event_handler( - ctx: &serenity::Context, - event: &poise::Event<'_>, - data: &Data, -) -> Result<(), Error> { - { - let pool = data.pg.lock().unwrap().clone(); - match event { - poise::Event::ReactionAdd { add_reaction } => { - let current_user = ctx.http.get_current_user().await?; - if add_reaction.user_id.unwrap() == current_user.id { - return Ok(()); - } - let rrole = sqlx::query_as!( - ReactionRole, - "SELECT * FROM reaction_roles WHERE message_id=$1 AND reaction=$2", - add_reaction.message_id.0.to_string(), - add_reaction.emoji.to_string() - ) - .fetch_one(&pool) - .await?; - let member = ctx - .http - .get_member( - rrole.guild_id.parse::<u64>()?, - add_reaction.user_id.unwrap().0, - ) - .await?; - let member_roles = member.roles; - let role_id = serenity::RoleId(rrole.role_id.parse::<u64>()?); - if member_roles.contains(&role_id) { - ctx.http - .remove_member_role( - member.guild_id.0, - member.user.id.0, - role_id.0, - Some("Reaction Role Menu"), - ) - .await?; - } else { - ctx.http - .add_member_role( - rrole.guild_id.parse::<u64>()?, - add_reaction.user_id.unwrap().0, - rrole.role_id.parse::<u64>()?, - Some("Reaction Role"), - ) - .await?; - } - - let dm_chan = add_reaction - .user_id - .unwrap() - .create_dm_channel(&ctx.http) - .await?; - dm_chan.say(ctx, format!("Toggled the role!")).await?; - - add_reaction.delete(&ctx.http).await?; - } - _ => (), - } - } - - Ok(()) -} |