|
@ -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()))) |
|
|