diff options
| author | Zeyla Hellyer <[email protected]> | 2018-01-06 15:02:05 -0800 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2018-01-06 15:02:05 -0800 |
| commit | 222382ca48cb9786aaf5d0b5fc16958e482e7c5f (patch) | |
| tree | 9607694a5ec604e4ff3b73938772093e4d90cba3 /src/model/guild/member.rs | |
| parent | Add Guild::greater_member_hierarchy (diff) | |
| download | serenity-222382ca48cb9786aaf5d0b5fc16958e482e7c5f.tar.xz serenity-222382ca48cb9786aaf5d0b5fc16958e482e7c5f.zip | |
Add some role position hierarchy checks
Diffstat (limited to 'src/model/guild/member.rs')
| -rw-r--r-- | src/model/guild/member.rs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/model/guild/member.rs b/src/model/guild/member.rs index 3622489..b93349e 100644 --- a/src/model/guild/member.rs +++ b/src/model/guild/member.rs @@ -309,16 +309,18 @@ impl Member { pub fn kick(&self) -> Result<()> { #[cfg(feature = "cache")] { - let req = Permissions::KICK_MEMBERS; + let cache = CACHE.read(); - let has_perms = CACHE - .read() - .guilds - .get(&self.guild_id) - .map(|guild| guild.read().has_perms(req)); + if let Some(guild) = self.guilds.get(&self.guild_id) { + let reader = guild.read(); + + if !guild.has_perms(req) { + let req = Permissions::KICK_MEMBERS; + + return Err(Error::Model(ModelError::InvalidPermissions(req))); + } - if let Some(false) = has_perms { - return Err(Error::Model(ModelError::InvalidPermissions(req))); + guild.check_hierarchy(&self.user.read().id)?; } } |