From 00a98a76fdbcb2ff749919161c91f496b0a85d92 Mon Sep 17 00:00:00 2001 From: Rapptz Date: Tue, 15 Dec 2015 20:19:37 -0500 Subject: [PATCH] Add a way to get all active invites from a server. --- discord/client.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/discord/client.py b/discord/client.py index 970fb3027..8483d4389 100644 --- a/discord/client.py +++ b/discord/client.py @@ -1772,6 +1772,47 @@ class Client: data['channel'] = channel return Invite(**data) + @asyncio.coroutine + def invites_from(self, server): + """|coro| + + Returns a generator that yields all active instant invites from + a :class:`Server`. + + You must have proper permissions to get this information. + + Parameters + ---------- + server : :class:`Server` + The server to get invites from. + + Raises + ------- + Forbidden + You do not have proper permissions to get the information. + HTTPException + An error occurred while fetching the information. + + Yields + ------- + :class:`Invite` + The invite with the message data parsed. + """ + + def generator(data): + for invite in data: + channel = utils.get(server.channels, id=invite['channel']['id']) + invite['channel'] = channel + invite['server'] = server + yield Invite(**invite) + + url = '{0}/{1.id}/invites'.format(endpoints.SERVERS, server) + resp = yield from aiohttp.get(url, headers=self.headers, loop=self.loop) + log.debug(request_logging_format.format(method='GET', response=resp)) + yield from utils._verify_successful_response(resp) + data = yield from resp.json() + return generator(data) + @asyncio.coroutine def accept_invite(self, invite): """|coro|