aboutsummaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
Diffstat (limited to 'src/model')
-rw-r--r--src/model/guild/member.rs32
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.