refactor: cleanup joining and role managment

Changed files
+21 -49
src
event_handler
+21 -49
src/event_handler/kitten.rs
··· 1 1 use color_eyre::eyre::{eyre, Result}; 2 2 use poise::serenity_prelude::{Context, FullEvent}; 3 3 use reqwest::Client; 4 - use serenity::all::{ChannelId, Member, PartialMember, RoleId, UserId}; 4 + use serenity::all::{ChannelId, Member, RoleId, UserId}; 5 5 6 6 pub async fn handle(ctx: &Context, event: &FullEvent, _client: &Client) -> Result<()> { 7 7 if let FullEvent::GuildMemberAddition { new_member } = event { 8 + if new_member.guild_id != 1095080242219073606 { 9 + return Ok(()); 10 + } 11 + 12 + if new_member.user.bot { 13 + return Ok(()); 14 + } 15 + 8 16 warn_onboarding(ctx, &new_member.user.id).await?; 9 - } else if let FullEvent::GuildMemberUpdate { 17 + } 18 + 19 + if let FullEvent::GuildMemberUpdate { 10 20 old_if_available: _, 11 - new, 21 + new: Some(member), 12 22 event: _, 13 23 } = event 14 24 { 15 - if let Some(member) = new { 16 - if member.user.bot { 17 - return Ok(()); 18 - } 19 - // check if the user does not have the kitten role 20 - if !member.roles.iter().any(|role| *role == 1249814690486423612) { 21 - // check if the user has the pronouns role 22 - if member 23 - .roles 24 - .iter() 25 - .filter(|role| is_pronouns_role(**role)) 26 - .count() 27 - > 0 28 - { 29 - add_kitten_role(ctx, member).await?; 30 - } 31 - } 32 - } 33 - } else if let FullEvent::Message { new_message } = event { 34 - let user = &new_message.author; 35 - let partial_member: PartialMember = user 36 - .member 37 - .clone() 38 - .ok_or(eyre!("Failed to get member"))? 39 - .as_mut() 40 - .to_owned(); 41 - let member = Member::from(partial_member); 42 25 if member.user.bot { 43 26 return Ok(()); 44 27 } 45 - // check if the user has the kitten role 46 - if member.roles.iter().any(|role| *role == 1249814690486423612) { 47 - // check if the user does not have pronouns selected 28 + 29 + // check if the user does not have the kitten role 30 + if !member.roles.iter().any(|role| *role == 1249814690486423612) { 31 + // check if the user has the pronouns role 48 32 if member 49 33 .roles 50 34 .iter() 51 35 .filter(|role| is_pronouns_role(**role)) 52 36 .count() 53 - == 0 37 + > 0 54 38 { 55 - // delete the message 56 - new_message 57 - .delete(ctx) 58 - .await 59 - .map_err(|e| eyre!("Failed to delete message: {}", e))?; 60 - 61 - // send a message 62 - warn_onboarding(ctx, &user.id).await?; 63 - 64 - // remove the kitten role 65 - 66 - member 67 - .remove_role(ctx, 1249814690486423612) 68 - .await 69 - .map_err(|e| eyre!("Failed to remove role: {}", e))?; 39 + add_kitten_role(ctx, member).await?; 70 40 } 71 41 } 72 42 } 43 + 73 44 Ok(()) 74 45 } 75 46 ··· 82 53 ), 83 54 ) 84 55 .await?; 56 + 85 57 Ok(()) 86 58 } 87 59