From 2cd1ec30662ebb487c70730d8f2d115cd55928df Mon Sep 17 00:00:00 2001 From: Rapptz Date: Tue, 29 Dec 2015 01:18:28 -0500 Subject: [PATCH] Client.create_invite now works without a websocket connection --- discord/client.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/discord/client.py b/discord/client.py index 157b29862..0f8df2d5d 100644 --- a/discord/client.py +++ b/discord/client.py @@ -1738,6 +1738,22 @@ class Client: # Invite management + def _fill_invite_data(self, data): + server = None + if self.connection is not None: + server = self.connection._get_server(data['guild']['id']) + if server is not None: + ch_id = data['channel']['id'] + channels = getattr(server, 'channels', []) + channel = utils.find(lambda c: c.id == ch_id, channels) + else: + server = Object(id=data['guild']['id']) + server.name = data['guild']['name'] + channel = Object(id=data['channel']['id']) + channel.name = data['channel']['name'] + data['server'] = server + data['channel'] = channel + @asyncio.coroutine def create_invite(self, destination, **options): """|coro| @@ -1786,10 +1802,7 @@ class Client: yield from utils._verify_successful_response(response) data = yield from response.json() log.debug(request_success_log.format(json=payload, response=response, data=data)) - - data['server'] = self.connection._get_server(data['guild']['id']) - channel_id = data['channel']['id'] - data['channel'] = utils.find(lambda ch: ch.id == channel_id, data['server'].channels) + self._fill_invite_data(data) return Invite(**data) @asyncio.coroutine @@ -1828,20 +1841,7 @@ class Client: log.debug(request_logging_format.format(method='GET', response=response)) yield from utils._verify_successful_response(response) data = yield from response.json() - server = None - if self.connection is not None: - server = self.connection._get_server(data['guild']['id']) - if server is not None: - ch_id = data['channel']['id'] - channels = getattr(server, 'channels', []) - channel = utils.find(lambda c: c.id == ch_id, channels) - else: - server = Object(id=data['guild']['id']) - server.name = data['guild']['name'] - channel = Object(id=data['channel']['id']) - channel.name = data['channel']['name'] - data['server'] = server - data['channel'] = channel + self._fill_invite_data(data) return Invite(**data) @asyncio.coroutine