aboutsummaryrefslogtreecommitdiff
path: root/discord/state.py
diff options
context:
space:
mode:
authorRapptz <[email protected]>2016-07-13 17:23:35 -0400
committerRapptz <[email protected]>2016-07-13 17:23:35 -0400
commit69c506d7aeb9f1a0a6f711b7b8c144f8b554b0d7 (patch)
tree5697945188b749ed9db565c7f469d05f0abb93f2 /discord/state.py
parentBegin working on gateway v6 changes. (diff)
downloaddiscord.py-69c506d7aeb9f1a0a6f711b7b8c144f8b554b0d7.tar.xz
discord.py-69c506d7aeb9f1a0a6f711b7b8c144f8b554b0d7.zip
Handle CHANNEL_UPDATE for group direct messages.
Diffstat (limited to 'discord/state.py')
-rw-r--r--discord/state.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/discord/state.py b/discord/state.py
index 25988a62..be4df954 100644
--- a/discord/state.py
+++ b/discord/state.py
@@ -32,7 +32,7 @@ from .channel import Channel, PrivateChannel
from .member import Member
from .role import Role
from . import utils, compat
-from .enums import Status
+from .enums import Status, ChannelType, try_enum
from collections import deque, namedtuple
@@ -138,11 +138,13 @@ class ConnectionState:
def _add_private_channel(self, channel):
self._private_channels[channel.id] = channel
- self._private_channels_by_user[channel.user.id] = channel
+ if channel.type is ChannelType.private:
+ self._private_channels_by_user[channel.user.id] = channel
def _remove_private_channel(self, channel):
self._private_channels.pop(channel.id, None)
- self._private_channels_by_user.pop(channel.user.id, None)
+ if channel.type is ChannelType.private:
+ self._private_channels_by_user.pop(channel.user.id, None)
def _get_message(self, msg_id):
return utils.find(lambda m: m.id == msg_id, self.messages)
@@ -289,9 +291,17 @@ class ConnectionState:
self.dispatch('channel_delete', channel)
def parse_channel_update(self, data):
+ channel_type = try_enum(ChannelType, data.get('type'))
+ channel_id = data.get('id')
+ if channel_type is ChannelType.group:
+ channel = self._get_private_channel(channel_id)
+ old_channel = copy.copy(channel)
+ channel._update_group(**data)
+ self.dispatch('channel_update', old_channel, channel)
+ return
+
server = self._get_server(data.get('guild_id'))
if server is not None:
- channel_id = data.get('id')
channel = server.get_channel(channel_id)
if channel is not None:
old_channel = copy.copy(channel)