mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-06-07 20:28:38 +00:00
Add on_server_create and on_server_delete events.
This commit is contained in:
parent
4124b097c7
commit
c98a723f06
@ -100,6 +100,8 @@ class Client(object):
|
|||||||
'on_channel_create': _null_event,
|
'on_channel_create': _null_event,
|
||||||
'on_member_join': _null_event,
|
'on_member_join': _null_event,
|
||||||
'on_member_remove': _null_event,
|
'on_member_remove': _null_event,
|
||||||
|
'on_server_create': _null_event,
|
||||||
|
'on_server_delete': _null_event,
|
||||||
}
|
}
|
||||||
|
|
||||||
# the actual headers for the request...
|
# the actual headers for the request...
|
||||||
@ -114,34 +116,7 @@ class Client(object):
|
|||||||
def _get_server(self, guild_id):
|
def _get_server(self, guild_id):
|
||||||
return next((s for s in self.servers if s.id == guild_id), None)
|
return next((s for s in self.servers if s.id == guild_id), None)
|
||||||
|
|
||||||
def _resolve_mentions(self, content, mentions):
|
def _add_server(self, guild):
|
||||||
if isinstance(mentions, list):
|
|
||||||
return [user.id for user in mentions]
|
|
||||||
elif mentions == True:
|
|
||||||
return re.findall(r'@<(\d+)>', content)
|
|
||||||
else:
|
|
||||||
return []
|
|
||||||
|
|
||||||
def _invoke_event(self, event_name, *args, **kwargs):
|
|
||||||
try:
|
|
||||||
self.events[event_name](*args, **kwargs)
|
|
||||||
except Exception as e:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def _received_message(self, msg):
|
|
||||||
response = json.loads(str(msg))
|
|
||||||
if response.get('op') != 0:
|
|
||||||
return
|
|
||||||
|
|
||||||
self._invoke_event('on_response', response)
|
|
||||||
event = response.get('t')
|
|
||||||
data = response.get('d')
|
|
||||||
|
|
||||||
if event == 'READY':
|
|
||||||
self.user = User(**data['user'])
|
|
||||||
guilds = data.get('guilds')
|
|
||||||
|
|
||||||
for guild in guilds:
|
|
||||||
guild['roles'] = [Role(**role) for role in guild['roles']]
|
guild['roles'] = [Role(**role) for role in guild['roles']]
|
||||||
members = guild['members']
|
members = guild['members']
|
||||||
for i, member in enumerate(members):
|
for i, member in enumerate(members):
|
||||||
@ -197,6 +172,36 @@ class Client(object):
|
|||||||
server.channels = channels
|
server.channels = channels
|
||||||
self.servers.append(server)
|
self.servers.append(server)
|
||||||
|
|
||||||
|
def _resolve_mentions(self, content, mentions):
|
||||||
|
if isinstance(mentions, list):
|
||||||
|
return [user.id for user in mentions]
|
||||||
|
elif mentions == True:
|
||||||
|
return re.findall(r'@<(\d+)>', content)
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
|
||||||
|
def _invoke_event(self, event_name, *args, **kwargs):
|
||||||
|
try:
|
||||||
|
self.events[event_name](*args, **kwargs)
|
||||||
|
except Exception as e:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def _received_message(self, msg):
|
||||||
|
response = json.loads(str(msg))
|
||||||
|
if response.get('op') != 0:
|
||||||
|
return
|
||||||
|
|
||||||
|
self._invoke_event('on_response', response)
|
||||||
|
event = response.get('t')
|
||||||
|
data = response.get('d')
|
||||||
|
|
||||||
|
if event == 'READY':
|
||||||
|
self.user = User(**data['user'])
|
||||||
|
guilds = data.get('guilds')
|
||||||
|
|
||||||
|
for guild in guilds:
|
||||||
|
self._add_server(guild)
|
||||||
|
|
||||||
for pm in data.get('private_channels'):
|
for pm in data.get('private_channels'):
|
||||||
self.private_channels.append(PrivateChannel(id=pm['id'], user=User(**pm['recipient'])))
|
self.private_channels.append(PrivateChannel(id=pm['id'], user=User(**pm['recipient'])))
|
||||||
|
|
||||||
@ -282,6 +287,13 @@ class Client(object):
|
|||||||
member = next((m for m in server.members if m.id == user_id), None)
|
member = next((m for m in server.members if m.id == user_id), None)
|
||||||
server.members.remove(member)
|
server.members.remove(member)
|
||||||
self._invoke_event('on_member_remove', member)
|
self._invoke_event('on_member_remove', member)
|
||||||
|
elif event == 'GUILD_CREATE':
|
||||||
|
self._add_server(data)
|
||||||
|
self._invoke_event('on_server_create', self.servers[-1])
|
||||||
|
elif event == 'GUILD_DELETE':
|
||||||
|
server = self._get_server(data.get('id'))
|
||||||
|
self.servers.remove(server)
|
||||||
|
self._invoke_event('on_server_delete', server)
|
||||||
|
|
||||||
def _opened(self):
|
def _opened(self):
|
||||||
print('Opened at {}'.format(int(time.time())))
|
print('Opened at {}'.format(int(time.time())))
|
||||||
|
11
docs/api.rst
11
docs/api.rst
@ -80,6 +80,17 @@ All events are 'sandboxed', in that if an exception is thrown while the event is
|
|||||||
|
|
||||||
:param member: The :class:`Member` that joined or left.
|
:param member: The :class:`Member` that joined or left.
|
||||||
|
|
||||||
|
.. function:: on_server_create(server)
|
||||||
|
on_server_delete(server)
|
||||||
|
|
||||||
|
Called when a :class:`Server` is created or deleted.
|
||||||
|
|
||||||
|
Note that the server that is created must belong to the :class:`Client` and the server
|
||||||
|
that got deleted must have been part of the client's participating servers.
|
||||||
|
|
||||||
|
:param server: The :class:`Server` that got created or deleted.
|
||||||
|
|
||||||
|
|
||||||
Data Classes
|
Data Classes
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user