diff options
Diffstat (limited to 'src/model/guild/member.rs')
| -rw-r--r-- | src/model/guild/member.rs | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/model/guild/member.rs b/src/model/guild/member.rs index 09474f9..7c0c784 100644 --- a/src/model/guild/member.rs +++ b/src/model/guild/member.rs @@ -78,15 +78,18 @@ impl Member { /// [Manage Roles]: permissions/constant.MANAGE_ROLES.html #[cfg(feature = "cache")] pub fn add_role<R: Into<RoleId>>(&mut self, role_id: R) -> Result<()> { - let role_id = role_id.into(); + self._add_role(role_id.into()) + } - if self.roles.contains(&role_id) { + #[cfg(feature = "cache")] + fn _add_role(&mut self, id: RoleId) -> Result<()> { + if self.roles.contains(&id) { return Ok(()); } - match http::add_member_role(self.guild_id.0, self.user.read().unwrap().id.0, role_id.0) { + match http::add_member_role(self.guild_id.0, self.user.read().unwrap().id.0, id.0) { Ok(()) => { - self.roles.push(role_id); + self.roles.push(id); Ok(()) }, @@ -312,15 +315,18 @@ impl Member { /// [Manage Roles]: permissions/constant.MANAGE_ROLES.html #[cfg(feature = "cache")] pub fn remove_role<R: Into<RoleId>>(&mut self, role_id: R) -> Result<()> { - let role_id = role_id.into(); + self._remove_role(role_id.into()) + } - if !self.roles.contains(&role_id) { + #[cfg(feature = "cache")] + fn _remove_role(&mut self, id: RoleId) -> Result<()> { + if !self.roles.contains(&id) { return Ok(()); } - match http::remove_member_role(self.guild_id.0, self.user.read().unwrap().id.0, role_id.0) { + match http::remove_member_role(self.guild_id.0, self.user.read().unwrap().id.0, id.0) { Ok(()) => { - self.roles.retain(|r| r.0 != role_id.0); + self.roles.retain(|r| r.0 != id.0); Ok(()) }, |