From 96ca7cafeefb388b898fd8ed9c7279069b71b013 Mon Sep 17 00:00:00 2001 From: Rapptz Date: Sun, 25 Sep 2016 04:40:31 -0400 Subject: [PATCH] Add Client.get_user_info to retrieve a User from ID. --- discord/client.py | 27 +++++++++++++++++++++++++++ discord/http.py | 3 +++ 2 files changed, 30 insertions(+) diff --git a/discord/client.py b/discord/client.py index 74a417cd1..f304be24d 100644 --- a/discord/client.py +++ b/discord/client.py @@ -2795,4 +2795,31 @@ class Client: description=data['description'], icon=data['icon'], owner=User(**data['owner'])) + @asyncio.coroutine + def get_user_info(self, user_id): + """|coro| + Retrieves a :class:`User` based on their ID. This can only + be used by bot accounts. You do not have to share any servers + with the user to get this information, however many operations + do require that you do. + + Parameters + ----------- + user_id: str + The user's ID to fetch from. + + Returns + -------- + :class:`User` + The user you requested. + + Raises + ------- + NotFound + A user with this ID does not exist. + HTTPException + Fetching the user failed. + """ + data = yield from self.http.get_user_info(user_id) + return User(**data) diff --git a/discord/http.py b/discord/http.py index c7ffa4c0d..dd7c1f436 100644 --- a/discord/http.py +++ b/discord/http.py @@ -515,3 +515,6 @@ class HTTPClient: except HTTPException as e: raise GatewayNotFound() from e return data.get('url') + '?encoding=json&v=6' + + def get_user_info(self, user_id): + return self.get('{0.USERS}/{1}'.format(self, user_id), bucket=_func_())