From 8c011d29fd906ef9670cac4db8ccfd2a17e0d34c Mon Sep 17 00:00:00 2001 From: Raphael Date: Mon, 16 Mar 2026 14:40:20 +0100 Subject: [PATCH] fix(command/moderation): adding the position 0 for ban The serenity lib return None on .member_highest_role so adding an unwrap_or(0) --- src/commands/moderation/ban.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/commands/moderation/ban.rs b/src/commands/moderation/ban.rs index 408fd04..1c53f8b 100644 --- a/src/commands/moderation/ban.rs +++ b/src/commands/moderation/ban.rs @@ -82,10 +82,19 @@ impl SlashCommand for Ban { command.create_response(&ctx.http, response).await?; return Ok(()); } - let target_role: &Role = guild.member_highest_role(&target_member).unwrap(); - let executor_role: &Role = guild.member_highest_role(&executor_member).unwrap(); - let bot_role: &Role = guild.member_highest_role(&bot_member).unwrap(); - if target_role > executor_role || target_role > bot_role || target_id == guild.owner_id { + let target_role_pos: u16 = guild + .member_highest_role(&target_member) + .map(|r| r.position) + .unwrap_or(0); + let executor_role_pos: u16 = guild + .member_highest_role(&executor_member) + .map(|r| r.position) + .unwrap_or(0); + let bot_role_pos: u16 = guild + .member_highest_role(&bot_member) + .map(|r| r.position) + .unwrap_or(0); + if target_role_pos > executor_role_pos || target_role_pos > bot_role_pos || target_id == guild.owner_id { let message: CreateInteractionResponseMessage = CreateInteractionResponseMessage::new() .content(format!("{} | You cannot ban this user because they are hierarchically above you", _emoji.answer.error)) .ephemeral(true);