aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/member.py5
-rw-r--r--discord/state.py7
-rw-r--r--discord/user.py11
3 files changed, 21 insertions, 2 deletions
diff --git a/discord/member.py b/discord/member.py
index 86d818f3..ccfdc1a9 100644
--- a/discord/member.py
+++ b/discord/member.py
@@ -64,11 +64,13 @@ class Member(User):
The game that the user is currently playing. Could be None if no game is being played.
server : :class:`Server`
The server that the member belongs to.
+ nick : Optional[str]
+ The server specific nickname of the user.
"""
__slots__ = [ 'deaf', 'mute', 'self_mute', 'self_deaf', 'is_afk',
'voice_channel', 'roles', 'joined_at', 'status', 'game',
- 'server' ]
+ 'server', 'nick' ]
def __init__(self, **kwargs):
super().__init__(**kwargs.get('user'))
@@ -80,6 +82,7 @@ class Member(User):
game = kwargs.get('game', {})
self.game = Game(**game) if game else None
self.server = kwargs.get('server', None)
+ self.nick = kwargs.get('nick', None)
self._update_voice_state(mute=self.mute, deaf=self.deaf)
def _update_voice_state(self, **kwargs):
diff --git a/discord/state.py b/discord/state.py
index fdffd444..850a74f9 100644
--- a/discord/state.py
+++ b/discord/state.py
@@ -317,9 +317,14 @@ class ConnectionState:
member.discriminator = user['discriminator']
member.avatar = user['avatar']
member.bot = user.get('bot', False)
- member.roles = [server.default_role]
+
+ # the nickname change is optional,
+ # if it isn't in the payload then it didn't change
+ if 'nick' in data:
+ member.nick = data['nick']
# update the roles
+ member.roles = [server.default_role]
for role in server.roles:
if role.id in data['roles']:
member.roles.append(role)
diff --git a/discord/user.py b/discord/user.py
index 822f7be1..b1cc0b4c 100644
--- a/discord/user.py
+++ b/discord/user.py
@@ -125,3 +125,14 @@ class User:
This is when the user's discord account was created."""
return snowflake_time(self.id)
+ @property
+ def display_name(self):
+ """Returns the user's display name.
+
+ For regular users this is just their username, but
+ if they have a server specific nickname then that
+ is returned instead.
+ """
+ nickname = getattr(self, 'nick', None)
+ return nickname if nickname is not None else self.name
+