aboutsummaryrefslogtreecommitdiff
path: root/discord/state.py
diff options
context:
space:
mode:
Diffstat (limited to 'discord/state.py')
-rw-r--r--discord/state.py30
1 files changed, 29 insertions, 1 deletions
diff --git a/discord/state.py b/discord/state.py
index f68656cc..542d1848 100644
--- a/discord/state.py
+++ b/discord/state.py
@@ -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']: