Add support for relationships.
This commit is contained in:
@ -30,6 +30,7 @@ from .game import Game
|
||||
from .emoji import Emoji, PartialEmoji
|
||||
from .reaction import Reaction
|
||||
from .message import Message
|
||||
from .relationship import Relationship
|
||||
from .channel import *
|
||||
from .member import Member
|
||||
from .role import Role
|
||||
@ -247,6 +248,14 @@ class ConnectionState:
|
||||
if not self.is_bot or guild.large:
|
||||
guilds.append(guild)
|
||||
|
||||
for relationship in data.get('relationships', []):
|
||||
try:
|
||||
r_id = int(relationship['id'])
|
||||
except KeyError:
|
||||
continue
|
||||
else:
|
||||
self.user._relationships[r_id] = Relationship(state=self, data=relationship)
|
||||
|
||||
for pm in data.get('private_channels', []):
|
||||
factory, _ = _channel_factory(pm['type'])
|
||||
self._add_private_channel(factory(me=self.user, data=pm, state=self))
|
||||
@ -663,6 +672,25 @@ class ConnectionState:
|
||||
if call is not None:
|
||||
self.dispatch('call_remove', call)
|
||||
|
||||
def parse_relationship_add(self, data):
|
||||
key = int(data['id'])
|
||||
old = self.user.get_relationship(key)
|
||||
new = Relationship(state=self, data=data)
|
||||
self.user._relationships[key] = new
|
||||
if old is not None:
|
||||
self.dispatch('relationship_update', old, new)
|
||||
else:
|
||||
self.dispatch('relationship_add', new)
|
||||
|
||||
def parse_relationship_remove(self, data):
|
||||
key = int(data['id'])
|
||||
try:
|
||||
old = self.user._relationships.pop(key)
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
self.dispatch('relationship_remove', old)
|
||||
|
||||
def _get_reaction_user(self, channel, user_id):
|
||||
if isinstance(channel, DMChannel) and user_id == channel.recipient.id:
|
||||
return channel.recipient
|
||||
@ -761,7 +789,7 @@ class AutoShardedConnectionState(ConnectionState):
|
||||
if not hasattr(self, '_ready_state'):
|
||||
self._ready_state = ReadyState(launch=asyncio.Event(), guilds=[])
|
||||
|
||||
self.user = self.store_user(data['user'])
|
||||
self.user = ClientUser(state=self, data=data['user'])
|
||||
|
||||
guilds = self._ready_state.guilds
|
||||
for guild_data in data['guilds']:
|
||||
|
Reference in New Issue
Block a user