diff options
| author | Lakelezz <[email protected]> | 2018-11-11 17:38:12 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2018-11-11 17:38:12 +0100 |
| commit | ed17114c3d5052eb88b95217bd248bba9a294e6a (patch) | |
| tree | d7031776fa64a87b07ebcb234335fb653f23542b /src/model/user.rs | |
| parent | Update `base64` and `sodiumoxide` (#431) (diff) | |
| download | serenity-ed17114c3d5052eb88b95217bd248bba9a294e6a.tar.xz serenity-ed17114c3d5052eb88b95217bd248bba9a294e6a.zip | |
Add Nick Methods for `Message` and `UserId` (#432)
Diffstat (limited to 'src/model/user.rs')
| -rw-r--r-- | src/model/user.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/model/user.rs b/src/model/user.rs index 1e90cb4..2c4ad00 100644 --- a/src/model/user.rs +++ b/src/model/user.rs @@ -712,6 +712,29 @@ impl User { /// ``` #[inline] pub fn tag(&self) -> String { tag(&self.name, self.discriminator) } + + /// Returns the user's nickname in the given `guild_id`. + /// + /// If none is used, it returns `None`. + #[inline] + pub fn nick_in<G>(&self, guild_id: G) -> Option<String> + where G: Into<GuildId> { + self._nick_in(guild_id.into()) + } + + fn _nick_in(&self, guild_id: GuildId) -> Option<String> { + #[cfg(feature = "cache")] + { + guild_id.to_guild_cached().and_then(|guild| { + guild.read().members.get(&self.id).and_then(|member| member.nick.clone()) + }) + } + + #[cfg(not(feature = "cache"))] + { + guild_id.member(&self.id).and_then(|member| member.nick.clone()) + } + } } impl fmt::Display for User { |