aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRapptz <[email protected]>2015-09-04 23:50:32 -0400
committerRapptz <[email protected]>2015-09-04 23:50:32 -0400
commite11aaa05667d00213d52bfbfbe8dee1248d717e1 (patch)
treed4394f779d07cce193896dda8a5674c6cc44272b
parentAdd support for creating invites. (diff)
downloaddiscord.py-e11aaa05667d00213d52bfbfbe8dee1248d717e1.tar.xz
discord.py-e11aaa05667d00213d52bfbfbe8dee1248d717e1.zip
Add on_member_update event.
-rw-r--r--discord/client.py17
-rw-r--r--docs/api.rst6
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)