Add support for server specific nicknames.
This commit is contained in:
		| @@ -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): | ||||||
|   | |||||||
| @@ -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) | ||||||
|   | |||||||
| @@ -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 | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user