diff options
| author | Rapptz <[email protected]> | 2015-09-04 23:50:32 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2015-09-04 23:50:32 -0400 |
| commit | e11aaa05667d00213d52bfbfbe8dee1248d717e1 (patch) | |
| tree | d4394f779d07cce193896dda8a5674c6cc44272b | |
| parent | Add support for creating invites. (diff) | |
| download | discord.py-e11aaa05667d00213d52bfbfbe8dee1248d717e1.tar.xz discord.py-e11aaa05667d00213d52bfbfbe8dee1248d717e1.zip | |
Add on_member_update event.
| -rw-r--r-- | discord/client.py | 17 | ||||
| -rw-r--r-- | docs/api.rst | 6 |
2 files changed, 23 insertions, 0 deletions
diff --git a/discord/client.py b/discord/client.py index b55e9cbf..33ab5d7c 100644 --- a/discord/client.py +++ b/discord/client.py @@ -107,6 +107,7 @@ class Client(object): 'on_channel_create': _null_event, 'on_member_join': _null_event, 'on_member_remove': _null_event, + 'on_member_join': _null_event, 'on_server_create': _null_event, 'on_server_delete': _null_event, } @@ -294,6 +295,22 @@ class Client(object): member = next((m for m in server.members if m.id == user_id), None) server.members.remove(member) self._invoke_event('on_member_remove', member) + elif event == 'GUILD_MEMBER_UPDATE': + server = self._get_server(data.get('guild_id')) + user_id = data['user']['id'] + member = next((m for m in server.members if m.id == user_id), None) + if member is not None: + user = data['user'] + member.name = user['username'] + member.discriminator = user['discriminator'] + member.avatar = user['avatar'] + member.roles = [] + # update the roles + for role in server.roles: + if role.id in data['roles']: + member.roles.append(role) + + self._invoke_event('on_member_update', member) elif event == 'GUILD_CREATE': self._add_server(data) self._invoke_event('on_server_create', self.servers[-1]) diff --git a/docs/api.rst b/docs/api.rst index 23f1e458..945f34e6 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -80,6 +80,12 @@ All events are 'sandboxed', in that if an exception is thrown while the event is :param member: The :class:`Member` that joined or left. +.. function:: on_member_update(member) + + Called when a :class:`Member` updates their profile. + + :param member: The :class:`Member` that updated their profile with the updated info. + .. function:: on_server_create(server) on_server_delete(server) |