Browse Source

Add support for server specific nicknames.

pull/190/head
Rapptz 9 years ago
parent
commit
133e8d3a44
  1. 5
      discord/member.py
  2. 7
      discord/state.py
  3. 11
      discord/user.py

5
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. The game that the user is currently playing. Could be None if no game is being played.
server : :class:`Server` server : :class:`Server`
The server that the member belongs to. 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', __slots__ = [ 'deaf', 'mute', 'self_mute', 'self_deaf', 'is_afk',
'voice_channel', 'roles', 'joined_at', 'status', 'game', 'voice_channel', 'roles', 'joined_at', 'status', 'game',
'server' ] 'server', 'nick' ]
def __init__(self, **kwargs): def __init__(self, **kwargs):
super().__init__(**kwargs.get('user')) super().__init__(**kwargs.get('user'))
@ -80,6 +82,7 @@ class Member(User):
game = kwargs.get('game', {}) game = kwargs.get('game', {})
self.game = Game(**game) if game else None self.game = Game(**game) if game else None
self.server = kwargs.get('server', None) self.server = kwargs.get('server', None)
self.nick = kwargs.get('nick', None)
self._update_voice_state(mute=self.mute, deaf=self.deaf) self._update_voice_state(mute=self.mute, deaf=self.deaf)
def _update_voice_state(self, **kwargs): def _update_voice_state(self, **kwargs):

7
discord/state.py

@ -317,9 +317,14 @@ class ConnectionState:
member.discriminator = user['discriminator'] member.discriminator = user['discriminator']
member.avatar = user['avatar'] member.avatar = user['avatar']
member.bot = user.get('bot', False) 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 # update the roles
member.roles = [server.default_role]
for role in server.roles: for role in server.roles:
if role.id in data['roles']: if role.id in data['roles']:
member.roles.append(role) member.roles.append(role)

11
discord/user.py

@ -125,3 +125,14 @@ class User:
This is when the user's discord account was created.""" This is when the user's discord account was created."""
return snowflake_time(self.id) 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

Loading…
Cancel
Save