diff options
| author | Lakelezz <[email protected]> | 2017-10-07 14:34:39 +0200 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2017-10-09 15:48:18 -0700 |
| commit | ee207b331d571d5afb5c35c8f119937d0196663a (patch) | |
| tree | b1e62ce42c649bf8e6b5c9d8e3dbd2ab0a92044e /src/framework/standard/mod.rs | |
| parent | Make `has_correct_permissions` a free-standing function (diff) | |
| download | serenity-ee207b331d571d5afb5c35c8f119937d0196663a.tar.xz serenity-ee207b331d571d5afb5c35c8f119937d0196663a.zip | |
Help-commands filtering and Member-prefix-search (#182)
Diffstat (limited to 'src/framework/standard/mod.rs')
| -rw-r--r-- | src/framework/standard/mod.rs | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/framework/standard/mod.rs b/src/framework/standard/mod.rs index 6052741..a44c6e7 100644 --- a/src/framework/standard/mod.rs +++ b/src/framework/standard/mod.rs @@ -22,7 +22,7 @@ use std::default::Default; use std::sync::Arc; use client::Context; use super::Framework; -use model::{ChannelId, GuildId, Message, UserId}; +use model::{ChannelId, GuildId, Guild, Member, Message, UserId}; use model::permissions::Permissions; use internal::RwLockExt; @@ -514,12 +514,7 @@ impl StandardFramework { if let Some(member) = guild.members.get(&message.author.id) { 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 { + if !has_correct_roles(&command, &guild, &member) { return Some(DispatchError::LackingRole); } } @@ -939,7 +934,7 @@ impl Framework for StandardFramework { } #[cfg(feature = "cache")] -pub(crate) fn has_correct_permissions(command: &Arc<Command>, message: &Message) -> bool { +pub(crate) fn has_correct_permissions(command: &Command, message: &Message) -> bool { if !command.required_permissions.is_empty() { if let Some(guild) = message.guild() { let perms = guild @@ -950,4 +945,12 @@ pub(crate) fn has_correct_permissions(command: &Arc<Command>, message: &Message) } true -}
\ No newline at end of file +} + +#[cfg(feature = "cache")] +pub(crate) fn has_correct_roles(cmd: &Command, guild: &Guild, member: &Member) -> bool { + cmd.allowed_roles + .iter() + .flat_map(|r| guild.role_by_name(r)) + .any(|g| member.roles.contains(&g.id)) +} |