mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-05-10 15:59:50 +00:00
Handle GUILD_MEMBER_REMOVE/GUILD_MEMBER_ADD events.
Thanks izy.
This commit is contained in:
parent
197e7c2861
commit
b466a2615e
@ -98,6 +98,8 @@ class Client(object):
|
|||||||
'on_status': _null_event,
|
'on_status': _null_event,
|
||||||
'on_channel_delete': _null_event,
|
'on_channel_delete': _null_event,
|
||||||
'on_channel_create': _null_event,
|
'on_channel_create': _null_event,
|
||||||
|
'on_member_join': _null_event,
|
||||||
|
'on_member_remove': _null_event,
|
||||||
}
|
}
|
||||||
|
|
||||||
gateway = requests.get(endpoints.GATEWAY)
|
gateway = requests.get(endpoints.GATEWAY)
|
||||||
@ -128,6 +130,9 @@ class Client(object):
|
|||||||
def _get_message(self, msg_id):
|
def _get_message(self, msg_id):
|
||||||
return next((m for m in self.messages if m.id == msg_id), None)
|
return next((m for m in self.messages if m.id == msg_id), None)
|
||||||
|
|
||||||
|
def _get_server(self, guild_id):
|
||||||
|
return next((s for s in self.servers if s.id == guild_id), None)
|
||||||
|
|
||||||
def _resolve_mentions(self, content, mentions):
|
def _resolve_mentions(self, content, mentions):
|
||||||
if isinstance(mentions, list):
|
if isinstance(mentions, list):
|
||||||
return [user.id for user in mentions]
|
return [user.id for user in mentions]
|
||||||
@ -252,8 +257,7 @@ class Client(object):
|
|||||||
older_message = message
|
older_message = message
|
||||||
|
|
||||||
elif event == 'PRESENCE_UPDATE':
|
elif event == 'PRESENCE_UPDATE':
|
||||||
guild_id = data.get('guild_id')
|
server = self._get_server(data.get('guild_id'))
|
||||||
server = next((s for s in self.servers if s.id == guild_id), None)
|
|
||||||
if server is not None:
|
if server is not None:
|
||||||
status = data.get('status')
|
status = data.get('status')
|
||||||
member_id = data['user']['id']
|
member_id = data['user']['id']
|
||||||
@ -266,8 +270,7 @@ class Client(object):
|
|||||||
elif event == 'USER_UPDATE':
|
elif event == 'USER_UPDATE':
|
||||||
self.user = User(**data)
|
self.user = User(**data)
|
||||||
elif event == 'CHANNEL_DELETE':
|
elif event == 'CHANNEL_DELETE':
|
||||||
guild_id = data.get('guild_id')
|
server = self._get_server(data.get('guild_id'))
|
||||||
server = next((s for s in self.servers if s.id == guild_id), None)
|
|
||||||
if server is not None:
|
if server is not None:
|
||||||
channel_id = data.get('id')
|
channel_id = data.get('id')
|
||||||
channel = next((c for c in server.channels if c.id == channel_id), None)
|
channel = next((c for c in server.channels if c.id == channel_id), None)
|
||||||
@ -282,13 +285,23 @@ class Client(object):
|
|||||||
channel = PrivateChannel(id=pm_id, user=recipient)
|
channel = PrivateChannel(id=pm_id, user=recipient)
|
||||||
self.private_channels.append(channel)
|
self.private_channels.append(channel)
|
||||||
else:
|
else:
|
||||||
guild_id = data.get('guild_id')
|
server = self._get_server(data.get('guild_id'))
|
||||||
server = next((s for s in self.servers if s.id == guild_id), None)
|
|
||||||
if server is not None:
|
if server is not None:
|
||||||
channel = Channel(server=server, **data)
|
channel = Channel(server=server, **data)
|
||||||
server.channels.append(channel)
|
server.channels.append(channel)
|
||||||
|
|
||||||
self._invoke_event('on_channel_create', channel)
|
self._invoke_event('on_channel_create', channel)
|
||||||
|
elif event == 'GUILD_MEMBER_ADD':
|
||||||
|
server = self._get_server(data.get('guild_id'))
|
||||||
|
member = Member(deaf=False, mute=False, **data)
|
||||||
|
server.members.append(member)
|
||||||
|
self._invoke_event('on_member_join', member)
|
||||||
|
elif event == 'GUILD_MEMBER_REMOVE':
|
||||||
|
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)
|
||||||
|
server.members.remove(member)
|
||||||
|
self._invoke_event('on_member_remove', member)
|
||||||
|
|
||||||
def _opened(self):
|
def _opened(self):
|
||||||
print('Opened at {}'.format(int(time.time())))
|
print('Opened at {}'.format(int(time.time())))
|
||||||
|
@ -73,6 +73,13 @@ All events are 'sandboxed', in that if an exception is thrown while the event is
|
|||||||
|
|
||||||
:param channel: The :class:`Channel` that got added or deleted.
|
:param channel: The :class:`Channel` that got added or deleted.
|
||||||
|
|
||||||
|
.. function:: on_member_join(member)
|
||||||
|
on_member_remove(member)
|
||||||
|
|
||||||
|
Called when a :class:`Member` leaves or joins a :class:`Server`.
|
||||||
|
|
||||||
|
:param member: The :class:`Member` that joined or left.
|
||||||
|
|
||||||
Data Classes
|
Data Classes
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user