aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoralex <[email protected]>2017-06-14 18:27:16 +0200
committerZeyla Hellyer <[email protected]>2017-06-14 09:27:16 -0700
commit39a28d3bf5d7005c3549a09542d27c08660f49cb (patch)
tree9d6f45eb28d711723541df1a789d65f953cd2d84 /src
parentSwitch from #[doc(hidden)] to pub(crate) (diff)
downloadserenity-39a28d3bf5d7005c3549a09542d27c08660f49cb.tar.xz
serenity-39a28d3bf5d7005c3549a09542d27c08660f49cb.zip
Add `Member::permissions`
Diffstat (limited to 'src')
-rw-r--r--src/error.rs6
-rw-r--r--src/model/guild/member.rs27
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.
///