diff --git a/discord/client.py b/discord/client.py index b892d29d3..0ce6e4295 100644 --- a/discord/client.py +++ b/discord/client.py @@ -183,9 +183,8 @@ class Client: found = utils.find(lambda pm: pm.user == destination, self.private_channels) if found is None: # Couldn't find the user, so start a PM with them first. - yield from self.start_private_message(destination) - channel_id = self.private_channels[-1].id - return channel_id + channel = yield from self.start_private_message(destination) + return channel.id else: return found.id elif isinstance(destination, Object): @@ -732,7 +731,9 @@ class Client: yield from utils._verify_successful_response(r) data = yield from r.json() log.debug(request_success_log.format(response=r, json=payload, data=data)) - self.private_channels.append(PrivateChannel(id=data['id'], user=user)) + channel = PrivateChannel(id=data['id'], user=user) + self.private_channels.append(channel) + return channel @asyncio.coroutine def _rate_limit_helper(self, name, method, url, data): diff --git a/discord/state.py b/discord/state.py index 65ba008c4..17b683140 100644 --- a/discord/state.py +++ b/discord/state.py @@ -55,6 +55,7 @@ class ConnectionState: def _add_server(self, guild): server = Server(**guild) self.servers.append(server) + return server def parse_ready(self, data): self.user = User(**data['user']) @@ -220,8 +221,8 @@ class ConnectionState: # unavailable during the READY event and is now # available, so it isn't in the cache... - self._add_server(data) - self.dispatch('server_join', self.servers[-1]) + server = self._add_server(data) + self.dispatch('server_join', server) def parse_guild_update(self, data): server = self._get_server(data.get('id'))