From 037da750dd700fa3df6147e76d9f1344f6620a48 Mon Sep 17 00:00:00 2001 From: Steven Berler Date: Sat, 12 Dec 2015 13:21:44 -0800 Subject: avoid potential bug when creating new private msgs It probably isn't good to rely on an item that was added to a list to still be the last item, especially if we could have other async coroutines modify the list. This may not be an actual issue, but having the function explicitly return the object that it just added to the list should guarantee that we don't accidentally pull the wrong item from the end of the list later. --- discord/client.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'discord/client.py') diff --git a/discord/client.py b/discord/client.py index b892d29d..0ce6e429 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): -- cgit v1.2.3