Add on_server_create and on_server_delete events.
This commit is contained in:
		@@ -100,6 +100,8 @@ class Client(object):
 | 
			
		||||
            'on_channel_create': _null_event,
 | 
			
		||||
            'on_member_join': _null_event,
 | 
			
		||||
            'on_member_remove': _null_event,
 | 
			
		||||
            'on_server_create': _null_event,
 | 
			
		||||
            'on_server_delete': _null_event,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # the actual headers for the request...
 | 
			
		||||
@@ -114,34 +116,7 @@ class Client(object):
 | 
			
		||||
    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):
 | 
			
		||||
        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:
 | 
			
		||||
    def _add_server(self, guild):
 | 
			
		||||
        guild['roles'] = [Role(**role) for role in guild['roles']]
 | 
			
		||||
        members = guild['members']
 | 
			
		||||
        for i, member in enumerate(members):
 | 
			
		||||
@@ -197,6 +172,36 @@ class Client(object):
 | 
			
		||||
        server.channels = channels
 | 
			
		||||
        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'):
 | 
			
		||||
                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)
 | 
			
		||||
            server.members.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):
 | 
			
		||||
        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.
 | 
			
		||||
 | 
			
		||||
.. 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
 | 
			
		||||
--------------
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user