diff options
Diffstat (limited to 'src/framework/standard/mod.rs')
| -rw-r--r-- | src/framework/standard/mod.rs | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/framework/standard/mod.rs b/src/framework/standard/mod.rs index 4fc728d..bd1300d 100644 --- a/src/framework/standard/mod.rs +++ b/src/framework/standard/mod.rs @@ -523,17 +523,21 @@ impl StandardFramework { } else if self.configuration.disabled_commands.contains(built) { Some(DispatchError::CommandDisabled(built.to_owned())) } else { - if command.allowed_roles.len() > 0 { + if !command.allowed_roles.is_empty() { if let Some(guild) = message.guild() { let guild = guild.read().unwrap(); if let Some(member) = guild.members.get(&message.author.id) { - let right_role = command - .allowed_roles - .iter() - .flat_map(|r| guild.role_by_name(&r)) - .any(|g| member.roles.contains(&g.id)); - if !right_role { - return Some(DispatchError::LackingRole); + if let Ok(permissions) = member.permissions() { + if !permissions.administrator() { + let right_role = command + .allowed_roles + .iter() + .flat_map(|r| guild.role_by_name(&r)) + .any(|g| member.roles.contains(&g.id)); + if !right_role { + return Some(DispatchError::LackingRole); + } + } } } } |