From 70a9bc5c9b29003dc8e67328a268d6a0cb94dd30 Mon Sep 17 00:00:00 2001 From: GnomedDev Date: Sat, 16 Nov 2024 15:59:55 +0000 Subject: [PATCH] Get rid of assumptions that Message::member is Some --- tts_core/src/traits.rs | 4 +++- tts_events/src/message/tts.rs | 23 ++++++++++++----------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/tts_core/src/traits.rs b/tts_core/src/traits.rs index 0024aeb..6e64680 100644 --- a/tts_core/src/traits.rs +++ b/tts_core/src/traits.rs @@ -51,7 +51,9 @@ impl<'ctx> PoiseContextExt<'ctx> for Context<'ctx> { match self { poise::Context::Application(poise::ApplicationContext { interaction, .. }) => { let channel = interaction.channel.as_ref().try_unwrap()?; - let author_member = interaction.member.as_deref().try_unwrap()?; + let Some(author_member) = interaction.member.as_deref() else { + return Ok(serenity::Permissions::dm_permissions()); + }; let mut permissions = author_member.permissions.try_unwrap()?; if matches!( diff --git a/tts_events/src/message/tts.rs b/tts_events/src/message/tts.rs index cbf962c..fdb3c00 100644 --- a/tts_events/src/message/tts.rs +++ b/tts_events/src/message/tts.rs @@ -224,18 +224,19 @@ fn run_checks( } } - if let Some(required_role) = guild_row.required_role { - let message_member = message.member.as_deref().try_unwrap()?; - if !message_member.roles.contains(&required_role) { - let Some(channel) = guild.channels.get(&message.channel_id) else { - return Ok(None); - }; + if let Some(required_role) = guild_row.required_role + && let Some(message_member) = &message.member + && !message_member.roles.contains(&required_role) + { + let Some(channel) = guild.channels.get(&message.channel_id) else { + return Ok(None); + }; - let author_permissions = - guild.partial_member_permissions_in(channel, message.author.id, message_member); - if !author_permissions.administrator() { - return Ok(None); - } + if !guild + .partial_member_permissions_in(channel, message.author.id, message_member) + .administrator() + { + return Ok(None); } }