From f32b142c81696874116540b0614f46a599111cb1 Mon Sep 17 00:00:00 2001 From: jude Date: Tue, 13 Oct 2020 11:36:20 +0100 Subject: [PATCH] fix for permission checking --- src/framework.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/framework.rs b/src/framework.rs index e9b79ff..f6c6e3a 100644 --- a/src/framework.rs +++ b/src/framework.rs @@ -21,6 +21,7 @@ use regex::{Match, Regex}; use std::{collections::HashMap, env, fmt}; use crate::{consts::PREFIX, models::ChannelData, SQLPool}; +use serenity::futures::TryFutureExt; type CommandFn = for<'fut> fn(&'fut Context, &'fut Message, String) -> BoxFuture<'fut, CommandResult>; @@ -45,6 +46,21 @@ impl Command { if self.required_perms == PermissionLevel::Unrestricted { true } else { + if member + .permissions(&ctx) + .map_ok_or_else( + |_| false, + |perms| { + perms.manage_guild() + || (self.required_perms == PermissionLevel::Managed + && perms.manage_messages()) + }, + ) + .await + { + return true; + } + for role_id in &member.roles { let role = role_id.to_role_cached(&ctx).await;