Browse Source

Add Client.application_info to retrieve the current app info.

Fixes #241.
pull/204/merge
Rapptz 9 years ago
parent
commit
a175c86aa1
  1. 2
      discord/__init__.py
  2. 39
      discord/client.py
  3. 1
      discord/endpoints.py
  4. 26
      docs/api.rst

2
discord/__init__.py

@ -17,7 +17,7 @@ __license__ = 'MIT'
__copyright__ = 'Copyright 2015-2016 Rapptz'
__version__ = '0.10.0-alpha'
from .client import Client
from .client import Client, AppInfo
from .user import User
from .game import Game
from .channel import Channel, PrivateChannel

39
discord/client.py

@ -53,12 +53,23 @@ import tempfile, os, hashlib
import itertools
import datetime
from random import randint as random_integer
from collections import namedtuple
PY35 = sys.version_info >= (3, 5)
log = logging.getLogger(__name__)
request_logging_format = '{method} {response.url} has returned {response.status}'
request_success_log = '{response.url} with {json} received {data}'
AppInfo = namedtuple('AppInfo', 'id name description icon')
def app_info_icon_url(self):
"""Retrieves the application's icon_url if it exists. Empty string otherwise."""
if not self.icon:
return ''
return 'https://cdn.discordapp.com/app-icons/{0.id}/{0.icon}.jpg'.format(self)
AppInfo.icon_url = property(app_info_icon_url)
class Client:
"""Represents a client connection that connects to Discord.
This class is used to interact with the Discord WebSocket and API.
@ -2787,3 +2798,31 @@ class Client:
The voice client associated with the server.
"""
return self.connection._get_voice_client(server.id)
# Miscellaneous stuff
@asyncio.coroutine
def application_info(self):
"""|coro|
Retrieve's the bot's application information.
Returns
--------
:class:`AppInfo`
A namedtuple representing the application info.
Raises
-------
HTTPException
Retrieving the information failed somehow.
"""
url = '{}/@me'.format(endpoints.APPLICATIONS)
resp = yield from self.session.get(url, headers=self.headers)
yield from utils._verify_successful_response(resp)
data = yield from resp.json()
return AppInfo(id=data['id'], name=data['name'],
description=data['description'], icon=data['icon'])

1
discord/endpoints.py

@ -34,3 +34,4 @@ LOGIN = API_BASE + '/auth/login'
LOGOUT = API_BASE + '/auth/logout'
SERVERS = API_BASE + '/guilds'
CHANNELS = API_BASE + '/channels'
APPLICATIONS = API_BASE + '/oauth2/applications'

26
docs/api.rst

@ -31,7 +31,6 @@ There are two main ways to query version information about the library.
A string representation of the version. e.g. ``'0.10.0-alpha0'``.
Client
-------
@ -345,6 +344,31 @@ Utility Functions
.. autofunction:: discord.utils.oauth_url
Application Info
------------------
.. class:: AppInfo
A namedtuple representing the bot's application info.
.. attribute:: id
The application's ``client_id``.
.. attribute:: name
The application's name.
.. attribute:: description
The application's description
.. attribute:: icon
The application's icon hash if it exists, ``None`` otherwise.
.. attribute:: icon_url
A property that retrieves the application's icon URL if it exists.
If it doesn't exist an empty string is returned.
.. _discord-api-enums:
Enumerations

Loading…
Cancel
Save