API Reference¶
This sections has reference to all of the available classes, their attributes and available methods.
Discord OAuth2 Client¶
-
class
quart_discord.DiscordOAuth2Session(app, client_id=None, client_secret=None, redirect_uri=None, bot_token=None, users_cache=None, locks_cache=None)[source]¶ Main client class representing hypothetical OAuth2 session with discord. It uses Quart session local proxy object to save state, authorization token and keeps record of users sessions across different requests. This class inherits
quart_discord._http.DiscordOAuth2HttpClientclass.- Parameters
app (Quart) – An instance of your quart application.
client_id (int, optional) – The client ID of discord application provided. Can be also set to quart config with key
DISCORD_CLIENT_ID.client_secret (str, optional) – The client secret of discord application provided. Can be also set to quart config with key
DISCORD_CLIENT_SECRET.redirect_uri (str, optional) – The default URL to use to redirect user to after authorization. Can be also set to quart config with key
DISCORD_REDIRECT_URI.bot_token (str, optional) – The bot token of the application. This is required when you also need to access bot scope resources beyond the normal resources provided by the OAuth. Can be also set to quart config with key
DISCORD_BOT_TOKEN.users_cache (cachetools.LFUCache, optional) – Any dict like mapping to internally cache the authorized users. Preferably an instance of cachetools.LFUCache or cachetools.TTLCache. If not specified, default cachetools.LFUCache is used. Uses the default max limit for cache if
DISCORD_USERS_CACHE_MAX_LIMITisn’t specified in app config.
-
users_cache¶ A dict like mapping to internally cache the authorized users. Preferably an instance of cachetools.LFUCache or cachetools.TTLCache. If not specified, default cachetools.LFUCache is used. Uses the default max limit for cache if
DISCORD_USERS_CACHE_MAX_LIMITisn’t specified in app config.- Type
A boolean indicating whether current session has authorization token or not.
-
async
bot_request(route: str, method='GET', **kwargs) → Union[dict, str]¶ Make HTTP request to specified endpoint with bot token as authorization headers.
- Parameters
- Returns
Dictionary containing received from sent HTTP GET request if content-type is
application/jsonotherwise returns raw text content of the response.- Return type
- Raises
quart_discord.Unauthorized – Raises
quart_discord.Unauthorizedif current user is not authorized.quart_discord.RateLimited – Raises an instance of
quart_discord.RateLimitedif application is being rate limited by Discord.
-
async
callback()[source]¶ A method which should be always called after completing authorization code grant process usually in callback view. It fetches the authorization token and saves it quart session object.
-
async
create_session(scope: Optional[list] = None, *, data: Optional[dict] = None, prompt: bool = True, permissions: Union[discord.permissions.Permissions, int] = 0, **params)[source]¶ Primary method used to create OAuth2 session and redirect users for authorization code grant.
- Parameters
scope (list, optional) – An optional list of valid Discord OAuth2 Scopes.
data (dict, optional) – A mapping of your any custom data which you want to access after authorization grant. Use :py:meth:quart_discord.DiscordOAuth2Session.callback to retrieve this data in your callback view.
prompt (bool, optional) – Determines if the OAuth2 grant should be explicitly prompted and re-approved. Defaults to True. Specify False for implicit grant which will skip the authorization screen and redirect to redirect URI.
permissions (typing.Union[discord.Permissions, int], optional) – An optional parameter determining guild permissions of the bot while adding it to a guild using discord OAuth2 with bot scope. It is same as generating so called bot invite link which redirects to your callback endpoint after bot authorization flow. Defaults to 0 or no permissions.
params (kwargs, optional) – Additional query parameters to append to authorization URL for customized OAuth flow.
- Returns
Quart redirect to discord authorization servers to complete authorization code grant process.
- Return type
redirect
-
async static
fetch_connections() → list[source]¶ This method returns list of user connection objects from internal cache if it exists otherwise makes an API call to do so.
- Returns
List of
quart_discord.models.UserConnectionobjects.- Return type
-
async
fetch_guilds(use_cache=True) → list[source]¶ This method returns list of guild objects from internal cache if it exists otherwise makes an API call to do so.
- Parameters
use_cache (bool, optional) – can be set to False to avoid using the cache.
- Returns
List of
quart_discord.models.Guildobjects.- Return type
-
async
fetch_user() → quart_discord.models.user.User[source]¶ This method returns user object from the internal cache if it exists otherwise makes an API call to do so.
- Returns
- Return type
A static method which returns a dict containing Discord OAuth2 token and other secrets which was saved previously by :py:meth:`quart_discord.DiscordOAuth2Session.save_authorization_token from user’s cookies.
You must override this method if you are implementing server side session handling.
-
async
request(route: str, method='GET', data=None, oauth=True, **kwargs) → Union[dict, str]¶ Sends HTTP request to provided route or discord endpoint.
Note
It automatically prefixes the API Base URL so you will just have to pass routes or URL endpoints.
- Parameters
route (str) – Route or endpoint URL to send HTTP request to. Example:
/users/@memethod (str, optional) – Specify the HTTP method to use to perform this request.
data (dict, optional) – The optional payload the include with the request.
oauth (bool) – A boolean determining if this should be Discord OAuth2 session request or any standard request.
- Returns
Dictionary containing received from sent HTTP GET request if content-type is
application/jsonotherwise returns raw text content of the response.- Return type
- Raises
quart_discord.Unauthorized – Raises
quart_discord.Unauthorizedif current user is not authorized.quart_discord.RateLimited – Raises an instance of
quart_discord.RateLimitedif application is being rate limited by Discord.
-
revoke()[source]¶ This method clears current discord token, state and all session data from quart session. Which means user will have to go through discord authorization token grant flow again. Also tries to remove the user from internal cache if they exist.
A staticmethod which saves a dict containing Discord OAuth2 token and other secrets to the user’s cookies. Meaning by default, it uses client side session handling.
Override this method if you want to handle the user’s session server side. If this method is overridden then, you must also override
quart_discord.DiscordOAuth2Session.get_authorization_token().
-
property
user_id¶ A property which returns Discord user ID if it exists in quart
quart.sessionobject.- Returns
int – The Discord user ID of current user.
None – If the user ID doesn’t exists in quart
quart.session.
-
class
quart_discord._http.DiscordOAuth2HttpClient(app, client_id=None, client_secret=None, redirect_uri=None, bot_token=None, users_cache=None, locks_cache=None)[source]¶ An OAuth2 http abstract base class providing some factory methods. This class is meant to be overridden by
quart_discord.DiscordOAuth2Sessionand should not be used directly.-
async
bot_request(route: str, method='GET', **kwargs) → Union[dict, str][source]¶ Make HTTP request to specified endpoint with bot token as authorization headers.
- Parameters
- Returns
Dictionary containing received from sent HTTP GET request if content-type is
application/jsonotherwise returns raw text content of the response.- Return type
- Raises
quart_discord.Unauthorized – Raises
quart_discord.Unauthorizedif current user is not authorized.quart_discord.RateLimited – Raises an instance of
quart_discord.RateLimitedif application is being rate limited by Discord.
-
async
request(route: str, method='GET', data=None, oauth=True, **kwargs) → Union[dict, str][source]¶ Sends HTTP request to provided route or discord endpoint.
Note
It automatically prefixes the API Base URL so you will just have to pass routes or URL endpoints.
- Parameters
route (str) – Route or endpoint URL to send HTTP request to. Example:
/users/@memethod (str, optional) – Specify the HTTP method to use to perform this request.
data (dict, optional) – The optional payload the include with the request.
oauth (bool) – A boolean determining if this should be Discord OAuth2 session request or any standard request.
- Returns
Dictionary containing received from sent HTTP GET request if content-type is
application/jsonotherwise returns raw text content of the response.- Return type
- Raises
quart_discord.Unauthorized – Raises
quart_discord.Unauthorizedif current user is not authorized.quart_discord.RateLimited – Raises an instance of
quart_discord.RateLimitedif application is being rate limited by Discord.
-
property
user_id¶ A property which returns Discord user ID if it exists in quart
quart.sessionobject.- Returns
int – The Discord user ID of current user.
None – If the user ID doesn’t exists in quart
quart.session.
-
async
Models¶
-
class
quart_discord.models.Guild(payload)[source]¶ Class representing discord Guild the user is part of.
- x == y
Checks if two guild’s are the same.
- x != y
Checks if two guild’s are not the same.
- str(x)
Returns the guild’s name.
-
permissions¶ An instance of discord.Permissions representing permissions of current user in the guild.
- Type
-
async classmethod
fetch_from_api(cache=True)[source]¶ A class method which returns an instance or list of instances of this model by implicitly making an API call to Discord. If an instance of
quart_discord.Userexists in the users internal cache who belongs to these guilds then, the cached propertyquart_discord.User.guildsis updated.
-
property
icon_url¶ A property returning direct URL to the guild’s icon. Returns None if guild has no icon set.
-
class
quart_discord.models.User(payload)[source]¶ Class representing Discord User.
- x == y
Checks if two user’s are the same.
- x != y
Checks if two user’s are not the same.
- str(x)
Returns the user’s name with discriminator.
-
mfa_enabled¶ A boolean representing whether the user has two factor enabled on their account.
- Type
-
flags¶ An integer representing the user flags.
- Type
An integer representing the type of nitro subscription.
- Type
-
connections¶ A list of
quart_discord.UserConnectioninstances. These are cached and this list might be empty.- Type
-
async
add_to_guild(guild_id) → dict[source]¶ Method to add user to the guild, provided OAuth2 session has already been created with
guilds.joinscope.- Parameters
guild_id (int) – The ID of the guild you want this user to be added.
- Returns
A dict of guild member object. Returns an empty dict if user is already present in the guild.
- Return type
- Raises
quart_discord.Unauthorized – Raises
quart_discord.Unauthorizedif current user is not authorized.
-
property
avatar_url¶ A property returning direct URL to user’s avatar.
-
property
default_avatar_url¶ A property which returns the default avatar URL as when user doesn’t has any avatar set.
-
async
fetch_connections() → list[source]¶ A method which makes an API call to Discord to get user’s connections. It prepares the internal connection cache and returns list of all connection instances.
- Returns
A list of
quart_discord.UserConnectioninstances.- Return type
-
async classmethod
fetch_from_api(guilds=False, connections=False)[source]¶ A class method which returns an instance of this model by implicitly making an API call to Discord. The user returned from API will always be cached and update in internal cache.
- Parameters
guilds (bool) – A boolean indicating if user’s guilds should be cached or not. Defaults to
False. If chose to not cache, user’s guilds can always be obtained fromquart_discord.Guilds.fetch_from_api().connections (bool) – A boolean indicating if user’s connections should be cached or not. Defaults to
False. If chose to not cache, user’s connections can always be obtained fromquart_discord.Connections.fetch_from_api().
- Returns
cls – An instance of this model itself.
[cls, …] – List of instances of this model when many of these models exist.
-
async
fetch_guilds() → list[source]¶ A method which makes an API call to Discord to get user’s guilds. It prepares the internal guilds cache and returns list of all guilds the user is member of.
- Returns
List of
quart_discord.Guildsinstances.- Return type
-
classmethod
get_from_cache()[source]¶ A class method which returns an instance of this model if it exists in internal cache.
- Returns
quart_discord.User – An user instance if it exists in internal cache.
None – If the current doesn’t exists in internal cache.
-
property
guilds¶ A cached mapping of user’s guild ID to
quart_discord.Guild. The guilds are cached when the first API call for guilds is requested so it might be an empty dict.
-
property
is_avatar_animated¶ A boolean representing if avatar of user is animated. Meaning user has GIF avatar.
-
property
name¶ An alias to the username attribute.
-
class
quart_discord.models.Bot(payload)[source]¶ Class representing the client user itself.
-
async
add_to_guild(guild_id) → dict¶ Method to add user to the guild, provided OAuth2 session has already been created with
guilds.joinscope.- Parameters
guild_id (int) – The ID of the guild you want this user to be added.
- Returns
A dict of guild member object. Returns an empty dict if user is already present in the guild.
- Return type
- Raises
quart_discord.Unauthorized – Raises
quart_discord.Unauthorizedif current user is not authorized.
-
property
avatar_url¶ A property returning direct URL to user’s avatar.
-
property
default_avatar_url¶ A property which returns the default avatar URL as when user doesn’t has any avatar set.
-
async
fetch_connections() → list¶ A method which makes an API call to Discord to get user’s connections. It prepares the internal connection cache and returns list of all connection instances.
- Returns
A list of
quart_discord.UserConnectioninstances.- Return type
-
async classmethod
fetch_from_api(guilds=False, connections=False)¶ A class method which returns an instance of this model by implicitly making an API call to Discord. The user returned from API will always be cached and update in internal cache.
- Parameters
guilds (bool) – A boolean indicating if user’s guilds should be cached or not. Defaults to
False. If chose to not cache, user’s guilds can always be obtained fromquart_discord.Guilds.fetch_from_api().connections (bool) – A boolean indicating if user’s connections should be cached or not. Defaults to
False. If chose to not cache, user’s connections can always be obtained fromquart_discord.Connections.fetch_from_api().
- Returns
cls – An instance of this model itself.
[cls, …] – List of instances of this model when many of these models exist.
-
async
fetch_guilds() → list¶ A method which makes an API call to Discord to get user’s guilds. It prepares the internal guilds cache and returns list of all guilds the user is member of.
- Returns
List of
quart_discord.Guildsinstances.- Return type
-
classmethod
get_from_cache()¶ A class method which returns an instance of this model if it exists in internal cache.
- Returns
quart_discord.User – An user instance if it exists in internal cache.
None – If the current doesn’t exists in internal cache.
-
property
guilds¶ A cached mapping of user’s guild ID to
quart_discord.Guild. The guilds are cached when the first API call for guilds is requested so it might be an empty dict.
-
property
is_avatar_animated¶ A boolean representing if avatar of user is animated. Meaning user has GIF avatar.
-
property
name¶ An alias to the username attribute.
-
async
-
class
quart_discord.models.Integration(payload)[source]¶ “Class representing discord server integrations.
-
synced_at¶ Representing when this integration was last synced.
- Type
ISO8601 timestamp
-
-
class
quart_discord.models.UserConnection(payload)[source]¶ Class representing connections in discord account of the user.
-
show_activity¶ A boolean representing whether activities related to this connection will be shown in presence updates.
- Type
-
visibility¶ An integer representing visibility of this connection.
- Type
-
async classmethod
fetch_from_api(cache=True)[source]¶ A class method which returns an instance or list of instances of this model by implicitly making an API call to Discord. If an instance of
quart_discord.Userexists in the users internal cache who are attached to these connections then, the cached propertyquart_discord.User.connectionsis updated.
-
property
is_visible¶ A property returning bool if this integration is visible to everyone.
-
Utilities¶
A decorator for quart views which raises exception
quart_discord.Unauthorizedif the user is not authorized from Discord OAuth2.
Exceptions¶
-
class
quart_discord.RateLimited(json, headers)[source]¶ A HTTP Exception raised when the application is being rate limited. It provides the
responseattribute which can be used to get more details of the actual response from the Discord API with few more shorthands toresponse.json().
A HTTP Exception raised when user is not authorized.