diff options
| author | alex <[email protected]> | 2017-06-14 18:27:16 +0200 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2017-06-14 09:27:16 -0700 |
| commit | 39a28d3bf5d7005c3549a09542d27c08660f49cb (patch) | |
| tree | 9d6f45eb28d711723541df1a789d65f953cd2d84 /src | |
| parent | Switch from #[doc(hidden)] to pub(crate) (diff) | |
| download | serenity-39a28d3bf5d7005c3549a09542d27c08660f49cb.tar.xz serenity-39a28d3bf5d7005c3549a09542d27c08660f49cb.zip | |
Add `Member::permissions`
Diffstat (limited to 'src')
| -rw-r--r-- | src/error.rs | 6 | ||||
| -rw-r--r-- | src/model/guild/member.rs | 27 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/error.rs b/src/error.rs index 6aa65e7..a9484d5 100644 --- a/src/error.rs +++ b/src/error.rs @@ -139,6 +139,12 @@ impl From<ParseIntError> for Error { } } +impl From<ModelError> for Error { + fn from(e: ModelError) -> Error { + Error::Model(e) + } +} + #[cfg(feature="voice")] impl From<OpusError> for Error { fn from(e: OpusError) -> Error { diff --git a/src/model/guild/member.rs b/src/model/guild/member.rs index 69ba59f..a993706 100644 --- a/src/model/guild/member.rs +++ b/src/model/guild/member.rs @@ -218,6 +218,33 @@ impl Member { self.guild_id.kick(self.user.read().unwrap().id) } + /// Returns the permissions for the member. + /// + /// # Examples + /// + /// ```rust,ignore + /// // assuming there's a `member` variable gotten from anything. + /// println!("The permission bits for the member are: {}", member.permissions().expect("permissions").bits); + /// ``` + /// + /// # Errors + /// + /// Returns a [`ModelError::GuildNotFound`] if the guild the member's in could not be + /// found in the cache. + /// + /// [`ModelError::GuildNotFound`]: enum.ModelError.html#variant.GuildNotFound + #[cfg(feature="cache")] + pub fn permissions(&self) -> Result<Permissions> { + let guild = match self.guild_id.find() { + Some(guild) => guild, + None => return Err(From::from(ModelError::GuildNotFound)), + }; + + let guild = guild.read().unwrap(); + + Ok(guild.permissions_for(ChannelId(guild.id.0), self.user.read().unwrap().id)) + } + /// Removes a [`Role`] from the member, editing its roles in-place if the /// request was successful. /// |