diff options
Diffstat (limited to 'src/model')
| -rw-r--r-- | src/model/guild/member.rs | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/src/model/guild/member.rs b/src/model/guild/member.rs index 29172a0..20b45b8 100644 --- a/src/model/guild/member.rs +++ b/src/model/guild/member.rs @@ -361,27 +361,17 @@ impl Member { /// If role data can not be found for the member, then `None` is returned. #[cfg(feature = "cache")] pub fn roles(&self) -> Option<Vec<Role>> { - CACHE - .read() - .unwrap() - .guilds - .values() - .find(|guild| { - guild.read().unwrap().members.values().any(|m| { - m.user.read().unwrap().id == self.user.read().unwrap().id && - m.joined_at == self.joined_at - }) - }) - .map(|guild| { - guild - .read() - .unwrap() - .roles - .values() - .filter(|role| self.roles.contains(&role.id)) - .cloned() - .collect() - }) + self + .guild_id + .find() + .map(|g| g + .read() + .unwrap() + .roles + .values() + .filter(|role| self.roles.contains(&role.id)) + .cloned() + .collect()) } /// Unbans the [`User`] from the guild. |