API Reference

The following section outlines the API of disnake.

Note

This module uses the Python logging module to log diagnostic and errors in an output independent way. If the logging module is not configured, these logs will not be output anywhere. See Setting Up Logging for more information on how to set up and use the logging module with disnake.

Clients

Client

class disnake.Client(*, asyncio_debug=False, loop=None, shard_id=None, shard_count=None, enable_debug_events=False, enable_gateway_error_handler=True, localization_provider=None, strict_localization=False, gateway_params=None, connector=None, proxy=None, proxy_auth=None, assume_unsync_clock=True, max_messages=1000, application_id=None, heartbeat_timeout=60.0, guild_ready_timeout=2.0, allowed_mentions=None, activity=None, status=None, intents=None, chunk_guilds_at_startup=None, member_cache_flags=None)[source]

Represents a client connection that connects to Discord. This class is used to interact with the Discord WebSocket and API.

A number of options can be passed to the Client.

Parameters:
  • max_messages (Optional[int]) –

    The maximum number of messages to store in the internal message cache. This defaults to 1000. Passing in None disables the message cache.

    Changed in version 1.3: Allow disabling the message cache and change the default size to 1000.

  • loop (Optional[asyncio.AbstractEventLoop]) – The asyncio.AbstractEventLoop to use for asynchronous operations. Defaults to None, in which case the default event loop is used via asyncio.get_event_loop().

  • connector (Optional[aiohttp.BaseConnector]) – The connector to use for connection pooling.

  • proxy (Optional[str]) – Proxy URL.

  • proxy_auth (Optional[aiohttp.BasicAuth]) – An object that represents proxy HTTP Basic Authorization.

  • shard_id (Optional[int]) – Integer starting at 0 and less than shard_count.

  • shard_count (Optional[int]) – The total number of shards.

  • application_id (int) – The client’s application ID.

  • intents (Optional[Intents]) –

    The intents that you want to enable for the session. This is a way of disabling and enabling certain gateway events from triggering and being sent. If not given, defaults to a regularly constructed Intents class.

    New in version 1.5.

  • member_cache_flags (MemberCacheFlags) –

    Allows for finer control over how the library caches members. If not given, defaults to cache as much as possible with the currently selected intents.

    New in version 1.5.

  • chunk_guilds_at_startup (bool) –

    Indicates if on_ready() should be delayed to chunk all guilds at start-up if necessary. This operation is incredibly slow for large amounts of guilds. The default is True if Intents.members is True.

    New in version 1.5.

  • status (Optional[Union[class:str, Status]]) – A status to start your presence with upon logging on to Discord.

  • activity (Optional[BaseActivity]) – An activity to start your presence with upon logging on to Discord.

  • allowed_mentions (Optional[AllowedMentions]) –

    Control how the client handles mentions by default on every message sent.

    New in version 1.4.

  • heartbeat_timeout (float) – The maximum numbers of seconds before timing out and restarting the WebSocket in the case of not receiving a HEARTBEAT_ACK. Useful if processing the initial packets take too long to the point of disconnecting you. The default timeout is 60 seconds.

  • guild_ready_timeout (float) –

    The maximum number of seconds to wait for the GUILD_CREATE stream to end before preparing the member cache and firing READY. The default timeout is 2 seconds.

    New in version 1.4.

  • assume_unsync_clock (bool) –

    Whether to assume the system clock is unsynced. This applies to the ratelimit handling code. If this is set to True, the default, then the library uses the time to reset a rate limit bucket given by Discord. If this is False then your system clock is used to calculate how long to sleep for. If this is set to False it is recommended to sync your system clock to Google’s NTP server.

    New in version 1.3.

  • enable_debug_events (bool) –

    Whether to enable events that are useful only for debugging gateway related information.

    Right now this involves on_socket_raw_receive() and on_socket_raw_send(). If this is False then those events will not be dispatched (due to performance considerations). To enable these events, this must be set to True. Defaults to False.

    New in version 2.0.

  • enable_gateway_error_handler (bool) –

    Whether to enable the disnake.on_gateway_error() event. Defaults to True.

    If this is disabled, exceptions that occur while parsing (known) gateway events won’t be handled and the pre-v2.6 behavior of letting the exception propagate up to the connect()/start()/run() call is used instead.

    New in version 2.6.

  • test_guilds (List[int]) –

    The list of IDs of the guilds where you’re going to test your application commands. Defaults to None, which means global registration of commands across all guilds.

    New in version 2.1.

  • sync_commands (bool) –

    Whether to enable automatic synchronization of application commands in your code. Defaults to True, which means that commands in API are automatically synced with the commands specified in your code.

    New in version 2.1.

  • sync_commands_debug (bool) –

    Whether to always show sync debug logs (uses INFO log level if it’s enabled, prints otherwise). If disabled, uses the default DEBUG log level which isn’t shown unless the log level is changed manually. Useful for tracking the commands being registered in the API.

    New in version 2.1.

    Changed in version 2.4: Changes the log level of corresponding messages from DEBUG to INFO or prints them, instead of controlling whether they are enabled at all.

  • localization_provider (LocalizationProtocol) –

    An implementation of LocalizationProtocol to use for localization of application commands. If not provided, the default LocalizationStore implementation is used.

    New in version 2.5.

    Changed in version 2.6: Can no longer be provided together with strict_localization, as it does not apply to the custom localization provider entered in this parameter.

  • strict_localization (bool) –

    Whether to raise an exception when localizations for a specific key couldn’t be found. This is mainly useful for testing/debugging, consider disabling this eventually as missing localized names will automatically fall back to the default/base name without it. Only applicable if the localization_provider parameter is not provided. Defaults to False.

    New in version 2.5.

    Changed in version 2.6: Can no longer be provided together with localization_provider, as this parameter is ignored for custom localization providers.

  • gateway_params (GatewayParams) –

    Allows configuring parameters used for establishing gateway connections, notably enabling/disabling compression (enabled by default). Encodings other than JSON are not supported.

    New in version 2.6.

ws

The websocket gateway the client is currently connected to. Could be None.

loop

The event loop that the client uses for asynchronous operations.

Type:

asyncio.AbstractEventLoop

asyncio_debug

Whether to enable asyncio debugging when the client starts. Defaults to False.

Type:

bool

session_start_limit

Information about the current session start limit. Only available after initiating the connection.

New in version 2.5.

Type:

Optional[SessionStartLimit]

i18n

An implementation of LocalizationProtocol used for localization of application commands.

New in version 2.5.

Type:

LocalizationProtocol

@event[source]

A decorator that registers an event to listen to.

You can find more info about the events on the documentation below.

The events must be a coroutine, if not, TypeError is raised.

Example

@client.event
async def on_ready():
    print('Ready!')
Raises:

TypeError – The coroutine passed is not actually a coroutine.

async for ... in fetch_guilds(*, limit=100, before=None, after=None)[source]

Retrieves an AsyncIterator that enables receiving your guilds.

Note

Using this, you will only receive Guild.owner, Guild.icon, Guild.id, and Guild.name per Guild.

Note

This method is an API call. For general usage, consider guilds instead.

Examples

Usage

async for guild in client.fetch_guilds(limit=150):
    print(guild.name)

Flattening into a list

guilds = await client.fetch_guilds(limit=150).flatten()
# guilds is now a list of Guild...

All parameters are optional.

Parameters:
  • limit (Optional[int]) – The number of guilds to retrieve. If None, it retrieves every guild you have access to. Note, however, that this would make it a slow operation. Defaults to 100.

  • before (Union[abc.Snowflake, datetime.datetime]) – Retrieves guilds before this date or object. If a datetime is provided, it is recommended to use a UTC aware datetime. If the datetime is naive, it is assumed to be local time.

  • after (Union[abc.Snowflake, datetime.datetime]) – Retrieve guilds after this date or object. If a datetime is provided, it is recommended to use a UTC aware datetime. If the datetime is naive, it is assumed to be local time.

Raises:

HTTPException – Retrieving the guilds failed.

Yields:

Guild – The guild with the guild data parsed.

property latency[source]

Measures latency between a HEARTBEAT and a HEARTBEAT_ACK in seconds.

This could be referred to as the Discord WebSocket protocol latency.

Type:

float

is_ws_ratelimited()[source]

Whether the websocket is currently rate limited.

This can be useful to know when deciding whether you should query members using HTTP or via the gateway.

New in version 1.6.

Return type:

bool

property user[source]

Represents the connected client. None if not logged in.

Type:

Optional[ClientUser]

property guilds[source]

The guilds that the connected client is a member of.

Type:

List[Guild]

property emojis[source]

The emojis that the connected client has.

Type:

List[Emoji]

property stickers[source]

The stickers that the connected client has.

New in version 2.0.

Type:

List[GuildSticker]

property cached_messages[source]

Read-only list of messages the connected client has cached.

New in version 1.1.

Type:

Sequence[Message]

property private_channels[source]

The private channels that the connected client is participating on.

Note

This returns only up to 128 most recent private channels due to an internal working on how Discord deals with private channels.

Type:

List[abc.PrivateChannel]

property voice_clients[source]

Represents a list of voice connections.

These are usually VoiceClient instances.

Type:

List[VoiceProtocol]

property application_id[source]

The client’s application ID.

If this is not passed via __init__ then this is retrieved through the gateway when an event contains the data. Usually after on_connect() is called.

New in version 2.0.

Type:

Optional[int]

property application_flags[source]

The client’s application flags.

New in version 2.0.

Type:

ApplicationFlags

property global_application_commands[source]

The client’s global application commands.

Type:

List[Union[APIUserCommand, APIMessageCommand, APISlashCommand]

property global_slash_commands[source]

The client’s global slash commands.

Type:

List[APISlashCommand]

property global_user_commands[source]

The client’s global user commands.

Type:

List[APIUserCommand]

property global_message_commands[source]

The client’s global message commands.

Type:

List[APIMessageCommand]

get_message(id)[source]

Gets the message with the given ID from the bot’s message cache.

Parameters:

id (int) – The ID of the message to look for.

Returns:

The corresponding message.

Return type:

Optional[Message]

await get_or_fetch_user(user_id, *, strict=False)[source]

This function is a coroutine.

Tries to get the user from the cache. If fails, it tries to fetch the user from the API.

Parameters:
  • user_id (int) – The ID to search for.

  • strict (bool) – Whether to propagate exceptions from fetch_user() instead of returning None in case of failure (e.g. if the user wasn’t found). Defaults to False.

Returns:

The user with the given ID, or None if not found and strict is set to False.

Return type:

Optional[User]

await getch_user(user_id, *, strict=False)[source]

This function is a coroutine.

Tries to get the user from the cache. If fails, it tries to fetch the user from the API.

Parameters:
  • user_id (int) – The ID to search for.

  • strict (bool) – Whether to propagate exceptions from fetch_user() instead of returning None in case of failure (e.g. if the user wasn’t found). Defaults to False.

Returns:

The user with the given ID, or None if not found and strict is set to False.

Return type:

Optional[User]

is_ready()[source]

Whether the client’s internal cache is ready for use.

Return type:

bool

await on_error(event_method, *args, **kwargs)[source]

This function is a coroutine.

The default error handler provided by the client.

By default this prints to sys.stderr however it could be overridden to have a different implementation. Check on_error() for more details.

await on_gateway_error(event, data, shard_id, exc, /)[source]

This function is a coroutine.

The default gateway error handler provided by the client.

By default this prints to sys.stderr however it could be overridden to have a different implementation. Check on_gateway_error() for more details.

New in version 2.6.

Note

Unlike on_error(), the exception is available as the exc parameter and cannot be obtained through sys.exc_info().

await before_identify_hook(shard_id, *, initial=False)[source]

This function is a coroutine.

A hook that is called before IDENTIFYing a session. This is useful if you wish to have more control over the synchronization of multiple IDENTIFYing clients.

The default implementation sleeps for 5 seconds.

New in version 1.4.

Parameters:
  • shard_id (int) – The shard ID that requested being IDENTIFY’d

  • initial (bool) – Whether this IDENTIFY is the first initial IDENTIFY.

await login(token)[source]

This function is a coroutine.

Logs in the client with the specified credentials.

Parameters:

token (str) – The authentication token. Do not prefix this token with anything as the library will do it for you.

Raises:
  • LoginFailure – The wrong credentials are passed.

  • HTTPException – An unknown HTTP related error occurred, usually when it isn’t 200 or the known incorrect credentials passing status code.

await connect(*, reconnect=True, ignore_session_start_limit=False)[source]

This function is a coroutine.

Creates a websocket connection and lets the websocket listen to messages from Discord. This is a loop that runs the entire event system and miscellaneous aspects of the library. Control is not resumed until the WebSocket connection is terminated.

Changed in version 2.6: Added usage of SessionStartLimit when connecting to the API. Added the ignore_session_start_limit parameter.

Parameters:
  • reconnect (bool) – Whether reconnecting should be attempted, either due to internet failure or a specific failure on Discord’s part. Certain disconnects that lead to bad state will not be handled (such as invalid sharding payloads or bad tokens).

  • ignore_session_start_limit (bool) –

    Whether the API provided session start limit should be ignored when connecting to the API.

    New in version 2.6.

Raises:
  • GatewayNotFound – If the gateway to connect to Discord is not found. Usually if this is thrown then there is a Discord API outage.

  • ConnectionClosed – The websocket connection has been terminated.

  • SessionStartLimitReached – If the client doesn’t have enough connects remaining in the current 24-hour window and ignore_session_start_limit is False this will be raised rather than connecting to the gateawy and Discord resetting the token. However, if ignore_session_start_limit is True, the client will connect regardless and this exception will not be raised.

await close()[source]

This function is a coroutine.

Closes the connection to Discord.

clear()[source]

Clears the internal state of the bot.

After this, the bot can be considered “re-opened”, i.e. is_closed() and is_ready() both return False along with the bot’s internal cache cleared.

await start(token, *, reconnect=True, ignore_session_start_limit=False)[source]

This function is a coroutine.

A shorthand coroutine for login() + connect().

Raises:

TypeError – An unexpected keyword argument was received.

run(*args, **kwargs)[source]

A blocking call that abstracts away the event loop initialisation from you.

If you want more control over the event loop then this function should not be used. Use start() coroutine or connect() + login().

Roughly Equivalent to:

try:
    loop.run_until_complete(start(*args, **kwargs))
except KeyboardInterrupt:
    loop.run_until_complete(close())
    # cancel all tasks lingering
finally:
    loop.close()

Warning

This function must be the last function to call due to the fact that it is blocking. That means that registration of events or anything being called after this function call will not execute until it returns.

is_closed()[source]

Whether the websocket connection is closed.

Return type:

bool

property activity[source]

The activity being used upon logging in.

Type:

Optional[BaseActivity]

property status[source]

The status being used upon logging on to Discord.

New in version 2.0.

Type:

Status

property allowed_mentions[source]

The allowed mention configuration.

New in version 1.4.

Type:

Optional[AllowedMentions]

property intents[source]

The intents configured for this connection.

New in version 1.5.

Type:

Intents

property users[source]

Returns a list of all the users the bot can see.

Type:

List[User]

get_channel(id, /)[source]

Returns a channel or thread with the given ID.

Parameters:

id (int) – The ID to search for.

Returns:

The returned channel or None if not found.

Return type:

Optional[Union[abc.GuildChannel, Thread, abc.PrivateChannel]]

get_partial_messageable(id, *, type=None)[source]

Returns a partial messageable with the given channel ID.

This is useful if you have a channel_id but don’t want to do an API call to send messages to it.

New in version 2.0.

Parameters:
  • id (int) – The channel ID to create a partial messageable for.

  • type (Optional[ChannelType]) – The underlying channel type for the partial messageable.

Returns:

The partial messageable

Return type:

PartialMessageable

get_stage_instance(id, /)[source]

Returns a stage instance with the given stage channel ID.

New in version 2.0.

Parameters:

id (int) – The ID to search for.

Returns:

The returns stage instance or None if not found.

Return type:

Optional[StageInstance]

get_guild(id, /)[source]

Returns a guild with the given ID.

Parameters:

id (int) – The ID to search for.

Returns:

The guild or None if not found.

Return type:

Optional[Guild]

get_user(id, /)[source]

Returns a user with the given ID.

Parameters:

id (int) – The ID to search for.

Returns:

The user or None if not found.

Return type:

Optional[User]

get_emoji(id, /)[source]

Returns an emoji with the given ID.

Parameters:

id (int) – The ID to search for.

Returns:

The custom emoji or None if not found.

Return type:

Optional[Emoji]

get_sticker(id, /)[source]

Returns a guild sticker with the given ID.

New in version 2.0.

Note

To retrieve standard stickers, use fetch_sticker(). or fetch_premium_sticker_packs().

Returns:

The sticker or None if not found.

Return type:

Optional[GuildSticker]

for ... in get_all_channels()[source]

A generator that retrieves every abc.GuildChannel the client can ‘access’.

This is equivalent to:

for guild in client.guilds:
    for channel in guild.channels:
        yield channel

Note

Just because you receive a abc.GuildChannel does not mean that you can communicate in said channel. abc.GuildChannel.permissions_for() should be used for that.

Yields:

abc.GuildChannel – A channel the client can ‘access’.

for ... in get_all_members()[source]

Returns a generator with every Member the client can see.

This is equivalent to:

for guild in client.guilds:
    for member in guild.members:
        yield member
Yields:

Member – A member the client can see.

get_guild_application_commands(guild_id)[source]

Returns a list of all application commands in the guild with the given ID.

Parameters:

guild_id (int) – The ID to search for.

Returns:

The list of application commands.

Return type:

List[Union[APIUserCommand, APIMessageCommand, APISlashCommand]]

get_guild_slash_commands(guild_id)[source]

Returns a list of all slash commands in the guild with the given ID.

Parameters:

guild_id (int) – The ID to search for.

Returns:

The list of slash commands.

Return type:

List[APISlashCommand]

get_guild_user_commands(guild_id)[source]

Returns a list of all user commands in the guild with the given ID.

Parameters:

guild_id (int) – The ID to search for.

Returns:

The list of user commands.

Return type:

List[APIUserCommand]

get_guild_message_commands(guild_id)[source]

Returns a list of all message commands in the guild with the given ID.

Parameters:

guild_id (int) – The ID to search for.

Returns:

The list of message commands.

Return type:

List[APIMessageCommand]

get_global_command(id)[source]

Returns a global application command with the given ID.

Parameters:

id (int) – The ID to search for.

Returns:

The application command.

Return type:

Optional[Union[APIUserCommand, APIMessageCommand, APISlashCommand]]

get_guild_command(guild_id, id)[source]

Returns a guild application command with the given guild ID and application command ID.

Parameters:
  • guild_id (int) – The guild ID to search for.

  • id (int) – The command ID to search for.

Returns:

The application command.

Return type:

Optional[Union[APIUserCommand, APIMessageCommand, APISlashCommand]]

get_global_command_named(name, cmd_type=None)[source]

Returns a global application command matching the given name.

Parameters:
  • name (str) – The name to look for.

  • cmd_type (ApplicationCommandType) – The type to look for. By default, no types are checked.

Returns:

The application command.

Return type:

Optional[Union[APIUserCommand, APIMessageCommand, APISlashCommand]]

get_guild_command_named(guild_id, name, cmd_type=None)[source]

Returns a guild application command matching the given name.

Parameters:
  • guild_id (int) – The guild ID to search for.

  • name (str) – The command name to search for.

  • cmd_type (ApplicationCommandType) – The type to look for. By default, no types are checked.

Returns:

The application command.

Return type:

Optional[Union[APIUserCommand, APIMessageCommand, APISlashCommand]]

await wait_until_ready()[source]

This function is a coroutine.

Waits until the client’s internal cache is all ready.

await wait_until_first_connect()[source]

This function is a coroutine.

Waits until the first connect.

wait_for(event, *, check=None, timeout=None)[source]

This function is a coroutine.

Waits for a WebSocket event to be dispatched.

This could be used to wait for a user to reply to a message, or to react to a message, or to edit a message in a self-contained way.

The timeout parameter is passed onto asyncio.wait_for(). By default, it does not timeout. Note that this does propagate the asyncio.TimeoutError for you in case of timeout and is provided for ease of use.

In case the event returns multiple arguments, a tuple containing those arguments is returned instead. Please check the documentation for a list of events and their parameters.

This function returns the first event that meets the requirements.

Examples

Waiting for a user reply:

@client.event
async def on_message(message):
    if message.content.startswith('$greet'):
        channel = message.channel
        await channel.send('Say hello!')

        def check(m):
            return m.content == 'hello' and m.channel == channel

        msg = await client.wait_for('message', check=check)
        await channel.send(f'Hello {msg.author}!')

Waiting for a thumbs up reaction from the message author:

@client.event
async def on_message(message):
    if message.content.startswith('$thumb'):
        channel = message.channel
        await channel.send('Send me that 👍 reaction, mate')

        def check(reaction, user):
            return user == message.author and str(reaction.emoji) == '👍'

        try:
            reaction, user = await client.wait_for('reaction_add', timeout=60.0, check=check)
        except asyncio.TimeoutError:
            await channel.send('👎')
        else:
            await channel.send('👍')
Parameters:
  • event (str) – The event name, similar to the event reference, but without the on_ prefix, to wait for.

  • check (Optional[Callable[…, bool]]) – A predicate to check what to wait for. The arguments must meet the parameters of the event being waited for.

  • timeout (Optional[float]) – The number of seconds to wait before timing out and raising asyncio.TimeoutError.

Raises:

asyncio.TimeoutError – If a timeout is provided and it was reached.

Returns:

Returns no arguments, a single argument, or a tuple of multiple arguments that mirrors the parameters passed in the event reference.

Return type:

Any

await change_presence(*, activity=None, status=None)[source]

This function is a coroutine.

Changes the client’s presence.

Changed in version 2.6: Raises TypeError instead of InvalidArgument.

Example

game = disnake.Game("with the API")
await client.change_presence(status=disnake.Status.idle, activity=game)

Changed in version 2.0: Removed the afk keyword-only parameter.

Parameters:
  • activity (Optional[BaseActivity]) – The activity being done. None if no currently active activity is done.

  • status (Optional[Status]) – Indicates what status to change to. If None, then Status.online is used.

Raises:

TypeError – If the activity parameter is not the proper type.

await fetch_template(code)[source]

This function is a coroutine.

Retrieves a Template from a discord.new URL or code.

Parameters:

code (Union[Template, str]) – The Discord Template Code or URL (must be a discord.new URL).

Raises:
Returns:

The template from the URL/code.

Return type:

Template

await fetch_guild(guild_id, /)[source]

This function is a coroutine.

Retrieves a Guild from the given ID.

Note

Using this, you will not receive Guild.channels, Guild.members, Member.activity and Member.voice per Member.

Note

This method is an API call. For general usage, consider get_guild() instead.

Parameters:

guild_id (int) – The ID of the guild to retrieve.

Raises:
Returns:

The guild from the given ID.

Return type:

Guild

await fetch_guild_preview(guild_id, /)[source]

This function is a coroutine.

Retrieves a GuildPreview from the given ID. Your bot does not have to be in this guild.

Note

This method may fetch any guild that has DISCOVERABLE in Guild.features, but this information can not be known ahead of time.

This will work for any guild that you are in.

Parameters:

guild_id (int) – The ID of the guild to to retrieve a preview object.

Raises:

NotFound – Retrieving the guild preview failed.

Returns:

The guild preview from the given ID.

Return type:

GuildPreview

await create_guild(*, name, icon=..., code=...)[source]

This function is a coroutine.

Creates a Guild.

Bot accounts in more than 10 guilds are not allowed to create guilds.

Changed in version 2.5: Removed the region parameter.

Changed in version 2.6: Raises ValueError instead of InvalidArgument.

Parameters:
Raises:
Returns:

The created guild. This is not the same guild that is added to cache.

Return type:

Guild

await fetch_stage_instance(channel_id, /)[source]

This function is a coroutine.

Retrieves a StageInstance with the given ID.

Note

This method is an API call. For general usage, consider get_stage_instance() instead.

New in version 2.0.

Parameters:

channel_id (int) – The stage channel ID.

Raises:
  • NotFound – The stage instance or channel could not be found.

  • HTTPException – Retrieving the stage instance failed.

Returns:

The stage instance from the given ID.

Return type:

StageInstance

await fetch_invite(url, *, with_counts=True, with_expiration=True, guild_scheduled_event_id=None)[source]

This function is a coroutine.

Retrieves an Invite from a discord.gg URL or ID.

Note

If the invite is for a guild you have not joined, the guild and channel attributes of the returned Invite will be PartialInviteGuild and PartialInviteChannel respectively.

Parameters:
  • url (Union[Invite, str]) – The Discord invite ID or URL (must be a discord.gg URL).

  • with_counts (bool) – Whether to include count information in the invite. This fills the Invite.approximate_member_count and Invite.approximate_presence_count fields.

  • with_expiration (bool) –

    Whether to include the expiration date of the invite. This fills the Invite.expires_at field.

    New in version 2.0.

  • guild_scheduled_event_id (int) –

    The ID of the scheduled event to include in the invite. If not provided, defaults to the event parameter in the URL if it exists, or the ID of the scheduled event contained in the provided invite object.

    New in version 2.3.

Raises:
Returns:

The invite from the URL/ID.

Return type:

Invite

await delete_invite(invite)[source]

This function is a coroutine.

Revokes an Invite, URL, or ID to an invite.

You must have manage_channels permission in the associated guild to do this.

Parameters:

invite (Union[Invite, str]) – The invite to revoke.

Raises:
  • Forbidden – You do not have permissions to revoke invites.

  • NotFound – The invite is invalid or expired.

  • HTTPException – Revoking the invite failed.

await fetch_voice_regions(guild_id=None)[source]

Retrieves a list of VoiceRegions.

Retrieves voice regions for the user, or a guild if provided.

New in version 2.5.

Parameters:

guild_id (Optional[int]) – The guild to get regions for, if provided.

Raises:
  • HTTPException – Retrieving voice regions failed.

  • NotFound – The provided guild_id could not be found.

await fetch_widget(guild_id, /)[source]

This function is a coroutine.

Retrieves a Widget for the given guild ID.

Note

The guild must have the widget enabled to get this information.

Parameters:

guild_id (int) – The ID of the guild.

Raises:
Returns:

The guild’s widget.

Return type:

Widget

await application_info()[source]

This function is a coroutine.

Retrieves the bot’s application information.

Raises:

HTTPException – Retrieving the information failed somehow.

Returns:

The bot’s application information.

Return type:

AppInfo

await fetch_user(user_id, /)[source]

This function is a coroutine.

Retrieves a User based on their ID. You do not have to share any guilds with the user to get this information, however many operations do require that you do.

Note

This method is an API call. If you have disnake.Intents.members and member cache enabled, consider get_user() instead.

Parameters:

user_id (int) – The ID of the user to retrieve.

Raises:
Returns:

The user you requested.

Return type:

User

await fetch_channel(channel_id, /)[source]

This function is a coroutine.

Retrieves a abc.GuildChannel, abc.PrivateChannel, or Thread with the specified ID.

Note

This method is an API call. For general usage, consider get_channel() instead.

New in version 1.2.

Parameters:

channel_id (int) – The ID of the channel to retrieve.

Raises:
  • InvalidData – An unknown channel type was received from Discord.

  • HTTPException – Retrieving the channel failed.

  • NotFound – Invalid Channel ID.

  • Forbidden – You do not have permission to fetch this channel.

Returns:

The channel from the ID.

Return type:

Union[abc.GuildChannel, abc.PrivateChannel, Thread]

await fetch_webhook(webhook_id, /)[source]

This function is a coroutine.

Retrieves a Webhook with the given ID.

Parameters:

webhook_id (int) – The ID of the webhook to retrieve.

Raises:
Returns:

The webhook you requested.

Return type:

Webhook

await fetch_sticker(sticker_id, /)[source]

This function is a coroutine.

Retrieves a Sticker with the given ID.

New in version 2.0.

Parameters:

sticker_id (int) – The ID of the sticker to retrieve.

Raises:
Returns:

The sticker you requested.

Return type:

Union[StandardSticker, GuildSticker]

await fetch_premium_sticker_packs()[source]

This function is a coroutine.

Retrieves all available premium sticker packs.

New in version 2.0.

Raises:

HTTPException – Retrieving the sticker packs failed.

Returns:

All available premium sticker packs.

Return type:

List[StickerPack]

await create_dm(user)[source]

This function is a coroutine.

Creates a DMChannel with the given user.

This should be rarely called, as this is done transparently for most people.

New in version 2.0.

Parameters:

user (Snowflake) – The user to create a DM with.

Returns:

The channel that was created.

Return type:

DMChannel

add_view(view, *, message_id=None)[source]

Registers a View for persistent listening.

This method should be used for when a view is comprised of components that last longer than the lifecycle of the program.

New in version 2.0.

Parameters:
  • view (disnake.ui.View) – The view to register for dispatching.

  • message_id (Optional[int]) – The message ID that the view is attached to. This is currently used to refresh the view’s state during message update events. If not given then message update events are not propagated for the view.

Raises:
  • TypeError – A view was not passed.

  • ValueError – The view is not persistent. A persistent view has no timeout and all their components have an explicitly provided custom_id.

property persistent_views[source]

A sequence of persistent views added to the client.

New in version 2.0.

Type:

Sequence[View]

await fetch_global_commands(*, with_localizations=True)[source]

This function is a coroutine.

Retrieves a list of global application commands.

New in version 2.1.

Parameters:

with_localizations (bool) –

Whether to include localizations in the response. Defaults to True.

New in version 2.5.

Returns:

A list of application commands.

Return type:

List[Union[APIUserCommand, APIMessageCommand, APISlashCommand]]

await fetch_global_command(command_id)[source]

This function is a coroutine.

Retrieves a global application command.

New in version 2.1.

Parameters:

command_id (int) – The ID of the command to retrieve.

Returns:

The requested application command.

Return type:

Union[APIUserCommand, APIMessageCommand, APISlashCommand]

await create_global_command(application_command)[source]

This function is a coroutine.

Creates a global application command.

New in version 2.1.

Parameters:

application_command (ApplicationCommand) – An object representing the application command to create.

Returns:

The application command that was created.

Return type:

Union[APIUserCommand, APIMessageCommand, APISlashCommand]

await edit_global_command(command_id, new_command)[source]

This function is a coroutine.

Edits a global application command.

New in version 2.1.

Parameters:
  • command_id (int) – The ID of the application command to edit.

  • new_command (ApplicationCommand) – An object representing the edited application command.

Returns:

The edited application command.

Return type:

Union[APIUserCommand, APIMessageCommand, APISlashCommand]

await delete_global_command(command_id)[source]

This function is a coroutine.

Deletes a global application command.

New in version 2.1.

Parameters:

command_id (int) – The ID of the application command to delete.

await bulk_overwrite_global_commands(application_commands)[source]

This function is a coroutine.

Overwrites several global application commands in one API request.

New in version 2.1.

Parameters:

application_commands (List[ApplicationCommand]) – A list of application commands to insert instead of the existing commands.

Returns:

A list of registered application commands.

Return type:

List[Union[APIUserCommand, APIMessageCommand, APISlashCommand]]

await fetch_guild_commands(guild_id, *, with_localizations=True)[source]

This function is a coroutine.

Retrieves a list of guild application commands.

New in version 2.1.

Parameters:
  • guild_id (int) – The ID of the guild to fetch commands from.

  • with_localizations (bool) –

    Whether to include localizations in the response. Defaults to True.

    New in version 2.5.

Returns:

A list of application commands.

Return type:

List[Union[APIUserCommand, APIMessageCommand, APISlashCommand]]

await fetch_guild_command(guild_id, command_id)[source]

This function is a coroutine.

Retrieves a guild application command.

New in version 2.1.

Parameters:
  • guild_id (int) – The ID of the guild to fetch command from.

  • command_id (int) – The ID of the application command to retrieve.

Returns:

The requested application command.

Return type:

Union[APIUserCommand, APIMessageCommand, APISlashCommand]

await create_guild_command(guild_id, application_command)[source]

This function is a coroutine.

Creates a guild application command.

New in version 2.1.

Parameters:
  • guild_id (int) – The ID of the guild where the application command should be created.

  • application_command (ApplicationCommand) – The application command.

Returns:

The newly created application command.

Return type:

Union[APIUserCommand, APIMessageCommand, APISlashCommand]

await edit_guild_command(guild_id, command_id, new_command)[source]

This function is a coroutine.

Edits a guild application command.

New in version 2.1.

Parameters:
  • guild_id (int) – The ID of the guild where the application command should be edited.

  • command_id (int) – The ID of the application command to edit.

  • new_command (ApplicationCommand) – An object representing the edited application command.

Returns:

The newly edited application command.

Return type:

Union[APIUserCommand, APIMessageCommand, APISlashCommand]

await delete_guild_command(guild_id, command_id)[source]

This function is a coroutine.

Deletes a guild application command.

New in version 2.1.

Parameters:
  • guild_id (int) – The ID of the guild where the applcation command should be deleted.

  • command_id (int) – The ID of the application command to delete.

await bulk_overwrite_guild_commands(guild_id, application_commands)[source]

This function is a coroutine.

Overwrites several guild application commands in one API request.

New in version 2.1.

Parameters:
  • guild_id (int) – The ID of the guild where the application commands should be overwritten.

  • application_commands (List[ApplicationCommand]) – A list of application commands to insert instead of the existing commands.

Returns:

A list of registered application commands.

Return type:

List[Union[APIUserCommand, APIMessageCommand, APISlashCommand]]

await bulk_fetch_command_permissions(guild_id)[source]

This function is a coroutine.

Retrieves a list of GuildApplicationCommandPermissions configured for the guild with the given ID.

New in version 2.1.

Parameters:

guild_id (int) – The ID of the guild to inspect.

await fetch_command_permissions(guild_id, command_id)[source]

This function is a coroutine.

Retrieves GuildApplicationCommandPermissions for a specific application command in the guild with the given ID.

New in version 2.1.

Parameters:
  • guild_id (int) – The ID of the guild to inspect.

  • command_id (int) –

    The ID of the application command, or the application ID to fetch application-wide permissions.

    Changed in version 2.5: Can now also fetch application-wide permissions.

Returns:

The permissions configured for the specified application command.

Return type:

GuildApplicationCommandPermissions

AutoShardedClient

class disnake.AutoShardedClient(*args, shard_ids=None, **kwargs)[source]

A client similar to Client except it handles the complications of sharding for the user into a more manageable and transparent single process bot.

When using this client, you will be able to use it as-if it was a regular Client with a single shard when implementation wise internally it is split up into multiple shards. This allows you to not have to deal with IPC or other complicated infrastructure.

It is recommended to use this client only if you have surpassed at least 1000 guilds.

If no shard_count is provided, then the library will use the Bot Gateway endpoint call to figure out how many shards to use.

If a shard_ids parameter is given, then those shard IDs will be used to launch the internal shards. Note that shard_count must be provided if this is used. By default, when omitted, the client will launch shards from 0 to shard_count - 1.

shard_ids

An optional list of shard_ids to launch the shards with.

Type:

Optional[List[int]]

property latency[source]

Measures latency between a HEARTBEAT and a HEARTBEAT_ACK in seconds.

This operates similarly to Client.latency() except it uses the average latency of every shard’s latency. To get a list of shard latency, check the latencies property. Returns nan if there are no shards ready.

Type:

float

property latencies[source]

A list of latencies between a HEARTBEAT and a HEARTBEAT_ACK in seconds.

This returns a list of tuples with elements (shard_id, latency).

Type:

List[Tuple[int, float]]

get_shard(shard_id)[source]

Gets the shard information of a given shard ID, or None if not found.

Return type:

Optional[ShardInfo]

property shards[source]

Returns a mapping of shard IDs to their respective info object.

Type:

Mapping[int, ShardInfo]

await connect(*, reconnect=True, ignore_session_start_limit=False)[source]

This function is a coroutine.

Creates a websocket connection and lets the websocket listen to messages from Discord. This is a loop that runs the entire event system and miscellaneous aspects of the library. Control is not resumed until the WebSocket connection is terminated.

Changed in version 2.6: Added usage of SessionStartLimit when connecting to the API. Added the ignore_session_start_limit parameter.

Parameters:
  • reconnect (bool) – Whether reconnecting should be attempted, either due to internet failure or a specific failure on Discord’s part. Certain disconnects that lead to bad state will not be handled (such as invalid sharding payloads or bad tokens).

  • ignore_session_start_limit (bool) –

    Whether the API provided session start limit should be ignored when connecting to the API.

    New in version 2.6.

Raises:
  • GatewayNotFound – If the gateway to connect to Discord is not found. Usually if this is thrown then there is a Discord API outage.

  • ConnectionClosed – The websocket connection has been terminated.

  • SessionStartLimitReached – If the client doesn’t have enough connects remaining in the current 24-hour window and ignore_session_start_limit is False this will be raised rather than connecting to the gateawy and Discord resetting the token. However, if ignore_session_start_limit is True, the client will connect regardless and this exception will not be raised.

await close()[source]

This function is a coroutine.

Closes the connection to Discord.

await change_presence(*, activity=None, status=None, shard_id=None)[source]

This function is a coroutine.

Changes the client’s presence.

Example:

game = disnake.Game("with the API")
await client.change_presence(status=disnake.Status.idle, activity=game)

Changed in version 2.0: Removed the afk keyword-only parameter.

Changed in version 2.6: Raises TypeError instead of InvalidArgument.

Parameters:
  • activity (Optional[BaseActivity]) – The activity being done. None if no currently active activity is done.

  • status (Optional[Status]) – Indicates what status to change to. If None, then Status.online is used.

  • shard_id (Optional[int]) – The shard_id to change the presence to. If not specified or None, then it will change the presence of every shard the bot can see.

Raises:

TypeError – If the activity parameter is not of proper type.

is_ws_ratelimited()[source]

Whether the websocket is currently rate limited.

This can be useful to know when deciding whether you should query members using HTTP or via the gateway.

This implementation checks if any of the shards are rate limited. For more granular control, consider ShardInfo.is_ws_ratelimited().

New in version 1.6.

Return type:

bool

Application Info

AppInfo

class disnake.AppInfo[source]

Represents the application info for the bot provided by Discord.

id

The application’s ID.

Type:

int

name

The application’s name.

Type:

str

owner

The application’s owner.

Type:

User

team

The application’s team.

New in version 1.3.

Type:

Optional[Team]

description

The application’s description.

Type:

str

bot_public

Whether the bot can be invited by anyone or if it is locked to the application owner.

Type:

bool

bot_require_code_grant

Whether the bot requires the completion of the full oauth2 code grant flow to join.

Type:

bool

rpc_origins

A list of RPC origin URLs, if RPC is enabled.

Type:

Optional[List[str]]

verify_key

The hex encoded key for verification in interactions and the GameSDK’s GetTicket.

New in version 1.3.

Type:

str

guild_id

If this application is a game sold on Discord, this field will be the guild to which it has been linked to.

New in version 1.3.

Type:

Optional[int]

primary_sku_id

If this application is a game sold on Discord, this field will be the ID of the “Game SKU” that is created, if it exists.

New in version 1.3.

Type:

Optional[int]

slug

If this application is a game sold on Discord, this field will be the URL slug that links to the store page.

New in version 1.3.

Type:

Optional[str]

terms_of_service_url

The application’s terms of service URL, if set.

New in version 2.0.

Type:

Optional[str]

privacy_policy_url

The application’s privacy policy URL, if set.

New in version 2.0.

Type:

Optional[str]

flags

The application’s public flags.

New in version 2.3.

Type:

Optional[ApplicationFlags]

tags

The application’s tags.

New in version 2.5.

Type:

Optional[List[str]]

install_params

The installation parameters for this application.

New in version 2.5.

Type:

Optional[InstallParams]

custom_install_url

The custom installation url for this application.

New in version 2.5.

Type:

Optional[str]

property icon[source]

Retrieves the application’s icon asset, if any.

Type:

Optional[Asset]

property cover_image[source]

Retrieves the cover image on a store embed, if any.

This is only available if the application is a game sold on Discord.

Type:

Optional[Asset]

property guild[source]

If this application is a game sold on Discord, this field will be the guild to which it has been linked

New in version 1.3.

Type:

Optional[Guild]

property summary[source]

If this application is a game sold on Discord, this field will be the summary field for the store page of its primary SKU.

New in version 1.3.

Deprecated since version 2.5: This field is deprecated by discord and is now always blank. Consider using description instead.

Type:

str

PartialAppInfo

class disnake.PartialAppInfo[source]

Represents a partial AppInfo given by create_invite().

New in version 2.0.

id

The application’s ID.

Type:

int

name

The application’s name.

Type:

str

description

The application’s description.

Type:

str

rpc_origins

A list of RPC origin URLs, if RPC is enabled.

Type:

Optional[List[str]]

verify_key

The hex encoded key for verification in interactions and the GameSDK’s GetTicket.

Type:

str

terms_of_service_url

The application’s terms of service URL, if set.

Type:

Optional[str]

privacy_policy_url

The application’s privacy policy URL, if set.

Type:

Optional[str]

property icon[source]

Retrieves the application’s icon asset, if any.

Type:

Optional[Asset]

property summary[source]

If this application is a game sold on Discord, this field will be the summary field for the store page of its primary SKU.

Deprecated since version 2.5: This field is deprecated by discord and is now always blank. Consider using description instead.

Type:

str

Team

class disnake.Team[source]

Represents an application team for a bot provided by Discord.

id

The team ID.

Type:

int

name

The team name.

Type:

str

owner_id

The team’s owner ID.

Type:

int

members

A list of the members in the team.

New in version 1.3.

Type:

List[TeamMember]

property icon[source]

Retrieves the team’s icon asset, if any.

Type:

Optional[Asset]

property owner[source]

The team’s owner.

Type:

Optional[TeamMember]

TeamMember

class disnake.TeamMember[source]

Represents a team member in a team.

x == y

Checks if two team members are equal.

x != y

Checks if two team members are not equal.

hash(x)

Return the team member’s hash.

str(x)

Returns the team member’s name with discriminator.

New in version 1.3.

name

The team member’s username.

Type:

str

id

The team member’s unique ID.

Type:

int

discriminator

The team member’s discriminator. This is given when the username has conflicts.

Type:

str

avatar[source]

The avatar hash the team member has. Could be None.

Type:

Optional[str]

bot

Specifies if the user is a bot account.

Type:

bool

team

The team that the member is from.

Type:

Team

membership_state

The membership state of the member (e.g. invited or accepted)

Type:

TeamMembershipState

InstallParams

Attributes
Methods
class disnake.InstallParams[source]

Represents the installation parameters for the application, provided by Discord.

New in version 2.5.

scopes

The scopes requested by the application.

Type:

List[str]

permissions

The permissions requested for the bot role.

Type:

Permissions

to_url()[source]

Return a string that can be used to add this application to a server.

Returns:

The invite url.

Return type:

str

Event Reference

This section outlines the different types of events listened by Client.

There are two ways to register an event, the first way is through the use of Client.event(). The second way is through subclassing Client and overriding the specific events. For example:

import disnake

class MyClient(disnake.Client):
    async def on_message(self, message):
        if message.author == self.user:
            return

        if message.content.startswith('$hello'):
            await message.channel.send('Hello World!')

If an event handler raises an exception, on_error() will be called to handle it, which defaults to print a traceback and ignoring the exception.

Warning

All the events must be a coroutine. If they aren’t, then you might get unexpected errors. In order to turn a function into a coroutine they must be async def functions.

Client

This section documents events related to Client and its connectivity to Discord.

disnake.on_connect()

Called when the client has successfully connected to Discord. This is not the same as the client being fully prepared, see on_ready() for that.

The warnings on on_ready() also apply.

disnake.on_disconnect()

Called when the client has disconnected from Discord, or a connection attempt to Discord has failed. This could happen either through the internet being disconnected, explicit calls to close, or Discord terminating the connection one way or the other.

This function can be called many times without a corresponding on_connect() call.

disnake.on_error(event, *args, **kwargs)

Usually when an event raises an uncaught exception, a traceback is printed to stderr and the exception is ignored. If you want to change this behaviour and handle the exception for whatever reason yourself, this event can be overridden. Which, when done, will suppress the default action of printing the traceback.

The information of the exception raised and the exception itself can be retrieved with a standard call to sys.exc_info().

If you want exception to propagate out of the Client class you can define an on_error handler consisting of a single empty raise statement. Exceptions raised by on_error will not be handled in any way by Client.

Note

on_error will only be dispatched to Client.event().

It will not be received by Client.wait_for(), or, if used, Bots listeners such as listen() or listener().

Parameters:
  • event (str) – The name of the event that raised the exception.

  • args – The positional arguments for the event that raised the exception.

  • kwargs – The keyword arguments for the event that raised the exception.

disnake.on_gateway_error(event, data, shard_id, exc)

When a (known) gateway event cannot be parsed, a traceback is printed to stderr and the exception is ignored by default. This should generally not happen and is usually either a library issue, or caused by a breaking API change.

To change this behaviour, for example to completely stop the bot, this event can be overridden.

This can also be disabled completely by passing enable_gateway_error_handler=False to the client on initialization, restoring the pre-v2.6 behavior.

New in version 2.6.

Note

on_gateway_error will only be dispatched to Client.event().

It will not be received by Client.wait_for(), or, if used, Bots listeners such as listen() or listener().

Note

This will not be dispatched for exceptions that occur while parsing READY and RESUMED event payloads, as exceptions in these events are considered fatal.

Parameters:
  • event (str) – The name of the gateway event that was the cause of the exception, for example MESSAGE_CREATE.

  • data (Any) – The raw event payload.

  • shard_id (Optional[int]) – The ID of the shard the exception occurred in, if applicable.

  • exc (Exception) – The exception that was raised.

disnake.on_ready()

Called when the client is done preparing the data received from Discord. Usually after login is successful and the Client.guilds and co. are filled up.

Warning

This function is not guaranteed to be the first event called. Likewise, this function is not guaranteed to only be called once. This library implements reconnection logic and thus will end up calling this event whenever a RESUME request fails.

disnake.on_resumed()

Called when the client has resumed a session.

disnake.on_shard_connect(shard_id)

Similar to on_connect() except used by AutoShardedClient to denote when a particular shard ID has connected to Discord.

New in version 1.4.

Parameters:

shard_id (int) – The shard ID that has connected.

disnake.on_shard_disconnect(shard_id)

Similar to on_disconnect() except used by AutoShardedClient to denote when a particular shard ID has disconnected from Discord.

New in version 1.4.

Parameters:

shard_id (int) – The shard ID that has disconnected.

disnake.on_shard_ready(shard_id)

Similar to on_ready() except used by AutoShardedClient to denote when a particular shard ID has become ready.

Parameters:

shard_id (int) – The shard ID that is ready.

disnake.on_shard_resumed(shard_id)

Similar to on_resumed() except used by AutoShardedClient to denote when a particular shard ID has resumed a session.

New in version 1.4.

Parameters:

shard_id (int) – The shard ID that has resumed.

disnake.on_socket_event_type(event_type)

Called whenever a websocket event is received from the WebSocket.

This is mainly useful for logging how many events you are receiving from the Discord gateway.

New in version 2.0.

Parameters:

event_type (str) – The event type from Discord that is received, e.g. 'READY'.

disnake.on_socket_raw_receive(msg)

Called whenever a message is completely received from the WebSocket, before it’s processed and parsed. This event is always dispatched when a complete message is received and the passed data is not parsed in any way.

This is only really useful for grabbing the WebSocket stream and debugging purposes.

This requires setting the enable_debug_events setting in the Client.

Note

This is only for the messages received from the client WebSocket. The voice WebSocket will not trigger this event.

Parameters:

msg (str) – The message passed in from the WebSocket library.

disnake.on_socket_raw_send(payload)

Called whenever a send operation is done on the WebSocket before the message is sent. The passed parameter is the message that is being sent to the WebSocket.

This is only really useful for grabbing the WebSocket stream and debugging purposes.

This requires setting the enable_debug_events setting in the Client.

Note

This is only for the messages sent from the client WebSocket. The voice WebSocket will not trigger this event.

Parameters:

payload – The message that is about to be passed on to the WebSocket library. It can be bytes to denote a binary message or str to denote a regular text message.

Channels/Threads

This section documents events related to Discord channels and threads.

disnake.on_guild_channel_delete(channel)
disnake.on_guild_channel_create(channel)

Called whenever a guild channel is deleted or created.

Note that you can get the guild from guild.

This requires Intents.guilds to be enabled.

Parameters:

channel (abc.GuildChannel) – The guild channel that got created or deleted.

disnake.on_guild_channel_update(before, after)

Called whenever a guild channel is updated. e.g. changed name, topic, permissions.

This requires Intents.guilds to be enabled.

Parameters:
disnake.on_guild_channel_pins_update(channel, last_pin)

Called whenever a message is pinned or unpinned from a guild channel.

This requires Intents.guilds to be enabled.

Parameters:
  • channel (Union[abc.GuildChannel, Thread]) – The guild channel that had its pins updated.

  • last_pin (Optional[datetime.datetime]) – The latest message that was pinned as an aware datetime in UTC. Could be None.

disnake.on_private_channel_update(before, after)

Called whenever a private group DM is updated. e.g. changed name or topic.

This requires Intents.messages to be enabled.

Parameters:
  • before (GroupChannel) – The updated group channel’s old info.

  • after (GroupChannel) – The updated group channel’s new info.

disnake.on_private_channel_pins_update(channel, last_pin)

Called whenever a message is pinned or unpinned from a private channel.

Parameters:
  • channel (abc.PrivateChannel) – The private channel that had its pins updated.

  • last_pin (Optional[datetime.datetime]) – The latest message that was pinned as an aware datetime in UTC. Could be None.

disnake.on_thread_create(thread)

Called whenever a thread is created.

Note that you can get the guild from Thread.guild.

This requires Intents.guilds to be enabled.

Note

This only works for threads created in channels the bot already has access to, and only for public threads unless the bot has the manage_threads permission.

New in version 2.5.

Parameters:

thread (Thread) – The thread that got created.

disnake.on_thread_join(thread)

Called whenever the bot joins a thread or gets access to a thread (for example, by gaining access to the parent channel).

Note that you can get the guild from Thread.guild.

This requires Intents.guilds to be enabled.

Note

This event will not be called for threads created by the bot or threads created on one of the bot’s messages.

New in version 2.0.

Changed in version 2.5: This is no longer being called when a thread is created, see on_thread_create() instead.

Parameters:

thread (Thread) – The thread that got joined.

disnake.on_thread_member_join(member)
disnake.on_thread_member_remove(member)

Called when a ThreadMember leaves or joins a Thread.

You can get the thread a member belongs in by accessing ThreadMember.thread.

On removal events, if the member being removed is not found in the internal cache, then this event will not be called. Consider using on_raw_thread_member_remove() instead.

This requires Intents.members to be enabled.

New in version 2.0.

Parameters:

member (ThreadMember) – The member who joined or left.

disnake.on_thread_remove(thread)

Called whenever a thread is removed. This is different from a thread being deleted.

Note that you can get the guild from Thread.guild.

This requires Intents.guilds to be enabled.

Warning

Due to technical limitations, this event might not be called as soon as one expects. Since the library tracks thread membership locally, the API only sends updated thread membership status upon being synced by joining a thread.

New in version 2.0.

Parameters:

thread (Thread) – The thread that got removed.

disnake.on_thread_update(before, after)

Called when a thread is updated. If the thread is not found in the internal thread cache, then this event will not be called. Consider using on_raw_thread_update() which will be called regardless of the cache.

This requires Intents.guilds to be enabled.

New in version 2.0.

Parameters:
  • before (Thread) – The updated thread’s old info.

  • after (Thread) – The updated thread’s new info.

disnake.on_thread_delete(thread)

Called when a thread is deleted. If the thread is not found in the internal thread cache, then this event will not be called. Consider using on_raw_thread_delete() instead.

Note that you can get the guild from Thread.guild.

This requires Intents.guilds to be enabled.

New in version 2.0.

Parameters:

thread (Thread) – The thread that got deleted.

disnake.on_raw_thread_member_remove(payload)

Called when a ThreadMember leaves Thread. Unlike on_thread_member_remove(), this is called regardless of the thread member cache.

You can get the thread a member belongs in by accessing ThreadMember.thread.

This requires Intents.members to be enabled.

New in version 2.5.

Parameters:

payload (RawThreadMemberRemoveEvent) – The raw event payload data.

disnake.on_raw_thread_update(after)

Called whenever a thread is updated. Unlike on_thread_update(), this is called regardless of the state of the internal thread cache.

This requires Intents.guilds to be enabled.

New in version 2.5.

Parameters:

thread (Thread) – The updated thread.

disnake.on_raw_thread_delete(payload)

Called whenever a thread is deleted. Unlike on_thread_delete(), this is called regardless of the state of the internal thread cache.

Note that you can get the guild from Thread.guild.

This requires Intents.guilds to be enabled.

New in version 2.5.

Parameters:

payload (RawThreadDeleteEvent) – The raw event payload data.

disnake.on_webhooks_update(channel)

Called whenever a webhook is created, modified, or removed from a guild channel.

This requires Intents.webhooks to be enabled.

Parameters:

channel (abc.GuildChannel) – The channel that had its webhooks updated.

Guilds

This section documents events related to Discord guilds.

General

disnake.on_guild_join(guild)

Called when a Guild is either created by the Client or when the Client joins a guild.

This requires Intents.guilds to be enabled.

Parameters:

guild (Guild) – The guild that was joined.

disnake.on_guild_remove(guild)

Called when a Guild is removed from the Client.

This happens through, but not limited to, these circumstances:

  • The client got banned.

  • The client got kicked.

  • The client left the guild.

  • The client or the guild owner deleted the guild.

In order for this event to be invoked then the Client must have been part of the guild to begin with. (i.e. it is part of Client.guilds)

This requires Intents.guilds to be enabled.

Parameters:

guild (Guild) – The guild that got removed.

disnake.on_guild_update(before, after)

Called when a Guild updates, for example:

  • Changed name

  • Changed AFK channel

  • Changed AFK timeout

  • etc

This requires Intents.guilds to be enabled.

Parameters:
  • before (Guild) – The guild prior to being updated.

  • after (Guild) – The guild after being updated.

disnake.on_guild_available(guild)
disnake.on_guild_unavailable(guild)

Called when a guild becomes available or unavailable. The guild must have existed in the Client.guilds cache.

This requires Intents.guilds to be enabled.

Parameters:

guild – The Guild that has changed availability.

Application Commands

disnake.on_application_command_permissions_update(permissions)

Called when the permissions of an application command or the application-wide command permissions are updated.

Note that this will also be called when permissions of other applications change, not just this application’s permissions.

New in version 2.5.

Parameters:

permissions (GuildApplicationCommandPermissions) – The updated permission object.

AutoMod

disnake.on_automod_action_execution(execution)

Called when an auto moderation action is executed due to a rule triggering for a particular event. You must have the manage_guild permission to receive this.

The guild this action has taken place in can be accessed using AutoModActionExecution.guild.

This requires Intents.automod_execution to be enabled.

In addition, Intents.message_content must be enabled to receive non-empty values for AutoModActionExecution.content and AutoModActionExecution.matched_content.

Note

This event will fire once per executed AutoModAction, which means it will run multiple times when a rule is triggered, if that rule has multiple actions defined.

New in version 2.6.

Parameters:

execution (AutoModActionExecution) – The auto moderation action execution data.

disnake.on_automod_rule_create(rule)

Called when an AutoModRule is created. You must have the manage_guild permission to receive this.

This requires Intents.automod_configuration to be enabled.

New in version 2.6.

Parameters:

rule (AutoModRule) – The auto moderation rule that was created.

disnake.on_automod_rule_update(rule)

Called when an AutoModRule is updated. You must have the manage_guild permission to receive this.

This requires Intents.automod_configuration to be enabled.

New in version 2.6.

Parameters:

rule (AutoModRule) – The auto moderation rule that was updated.

disnake.on_automod_rule_delete(rule)

Called when an AutoModRule is deleted. You must have the manage_guild permission to receive this.

This requires Intents.automod_configuration to be enabled.

New in version 2.6.

Parameters:

rule (AutoModRule) – The auto moderation rule that was deleted.

Emojis

disnake.on_guild_emojis_update(guild, before, after)

Called when a Guild adds or removes Emoji.

This requires Intents.emojis_and_stickers to be enabled.

Parameters:
  • guild (Guild) – The guild who got their emojis updated.

  • before (Sequence[Emoji]) – A list of emojis before the update.

  • after (Sequence[Emoji]) – A list of emojis after the update.

Integrations

disnake.on_guild_integrations_update(guild)

Called whenever an integration is created, modified, or removed from a guild.

This requires Intents.integrations to be enabled.

New in version 1.4.

Parameters:

guild (Guild) – The guild that had its integrations updated.

disnake.on_integration_create(integration)

Called when an integration is created.

This requires Intents.integrations to be enabled.

New in version 2.0.

Parameters:

integration (Integration) – The integration that was created.

disnake.on_integration_update(integration)

Called when an integration is updated.

This requires Intents.integrations to be enabled.

New in version 2.0.

Parameters:

integration (Integration) – The integration that was updated.

disnake.on_raw_integration_delete(payload)

Called when an integration is deleted.

This requires Intents.integrations to be enabled.

New in version 2.0.

Parameters:

payload (RawIntegrationDeleteEvent) – The raw event payload data.

Invites

disnake.on_invite_create(invite)

Called when an Invite is created. You must have the manage_channels permission to receive this.

New in version 1.3.

Note

There is a rare possibility that the Invite.guild and Invite.channel attributes will be of Object rather than the respective models.

This requires Intents.invites to be enabled.

Parameters:

invite (Invite) – The invite that was created.

disnake.on_invite_delete(invite)

Called when an Invite is deleted. You must have the manage_channels permission to receive this.

New in version 1.3.

Note

There is a rare possibility that the Invite.guild and Invite.channel attributes will be of Object rather than the respective models.

Outside of those two attributes, the only other attribute guaranteed to be filled by the Discord gateway for this event is Invite.code.

This requires Intents.invites to be enabled.

Parameters:

invite (Invite) – The invite that was deleted.

Members

disnake.on_member_join(member)
disnake.on_member_remove(member)

Called when a Member leaves or joins a Guild. If on_member_remove() is being used then consider using on_raw_member_remove() which will be called regardless of the cache.

This requires Intents.members to be enabled.

Parameters:

member (Member) – The member who joined or left.

disnake.on_member_update(before, after)

Called when a Member updates their profile. Consider using on_raw_member_update() which will be called regardless of the cache.

This is called when one or more of the following things change, but is not limited to:

  • avatar (guild-specific)

  • current_timeout

  • nickname

  • pending

  • premium_since

  • roles

This requires Intents.members to be enabled.

Parameters:
  • before (Member) – The member’s old info.

  • after (Member) – The member’s updated info.

disnake.on_raw_member_remove(payload)

Called when a member leaves a Guild. Unlike on_member_remove(), this is called regardless of the member cache.

New in version 2.6.

Parameters:

payload (RawGuildMemberRemoveEvent) – The raw event payload data.

disnake.on_raw_member_update(member)

Called when a member updates their profile. Unlike on_member_update(), this is called regardless of the member cache.

New in version 2.6.

Parameters:

member (Member) – The member that was updated.

disnake.on_member_ban(guild, user)

Called when user gets banned from a Guild.

This requires Intents.bans to be enabled.

Parameters:
  • guild (Guild) – The guild the user got banned from.

  • user (Union[User, Member]) – The user that got banned. Can be either User or Member depending on whether the user was in the guild at the time of removal.

disnake.on_member_unban(guild, user)

Called when a User gets unbanned from a Guild.

This requires Intents.bans to be enabled.

Parameters:
  • guild (Guild) – The guild the user got unbanned from.

  • user (User) – The user that got unbanned.

disnake.on_presence_update(before, after)

Called when a Member updates their presence.

This is called when one or more of the following things change:

  • status

  • activity

This requires Intents.presences and Intents.members to be enabled.

New in version 2.0.

Parameters:
  • before (Member) – The updated member’s old info.

  • after (Member) – The updated member’s updated info.

disnake.on_user_update(before, after)

Called when a User is updated.

This is called when one or more of the following things change, but is not limited to:

  • avatar

  • discriminator

  • name

  • public_flags

This requires Intents.members to be enabled.

Parameters:
  • before (User) – The user’s old info.

  • after (User) – The user’s updated info.

Scheduled Events

disnake.on_guild_scheduled_event_create(event)
disnake.on_guild_scheduled_event_delete(event)

Called when a guild scheduled event is created or deleted.

This requires Intents.guild_scheduled_events to be enabled.

New in version 2.3.

Parameters:

event (GuildScheduledEvent) – The guild scheduled event that was created or deleted.

disnake.on_guild_scheduled_event_update(before, after)

Called when a guild scheduled event is updated. The guild must have existed in the Client.guilds cache.

This requires Intents.guild_scheduled_events to be enabled.

New in version 2.3.

Parameters:
disnake.on_guild_scheduled_event_subscribe(event, user)
disnake.on_guild_scheduled_event_unsubscribe(event, user)

Called when a user subscribes to or unsubscribes from a guild scheduled event.

This requires Intents.guild_scheduled_events and Intents.members to be enabled.

New in version 2.3.

Parameters:
  • event (GuildScheduledEvent) – The guild scheduled event that the user subscribed to or unsubscribed from.

  • user (Union[Member, User]) – The user who subscribed to or unsubscribed from the event.

disnake.on_raw_guild_scheduled_event_subscribe(payload)
disnake.on_raw_guild_scheduled_event_unsubscribe(payload)

Called when a user subscribes to or unsubscribes from a guild scheduled event. Unlike on_guild_scheduled_event_subscribe() and on_guild_scheduled_event_unsubscribe(), this is called regardless of the guild scheduled event cache.

Parameters:

payload (RawGuildScheduledEventUserActionEvent) – The raw event payload data.

Stage Instances

disnake.on_stage_instance_create(stage_instance)
disnake.on_stage_instance_delete(stage_instance)

Called when a StageInstance is created or deleted for a StageChannel.

New in version 2.0.

Parameters:

stage_instance (StageInstance) – The stage instance that was created or deleted.

disnake.on_stage_instance_update(before, after)

Called when a StageInstance is updated.

The following, but not limited to, examples illustrate when this event is called:

  • The topic is changed.

  • The privacy level is changed.

New in version 2.0.

Parameters:

Stickers

disnake.on_guild_stickers_update(guild, before, after)

Called when a Guild updates its stickers.

This requires Intents.emojis_and_stickers to be enabled.

New in version 2.0.

Parameters:
  • guild (Guild) – The guild who got their stickers updated.

  • before (Sequence[GuildSticker]) – A list of stickers before the update.

  • after (Sequence[GuildSticker]) – A list of stickers after the update.

Roles

disnake.on_guild_role_create(role)
disnake.on_guild_role_delete(role)

Called when a Guild creates or deletes a new Role.

To get the guild it belongs to, use Role.guild.

This requires Intents.guilds to be enabled.

Parameters:

role (Role) – The role that was created or deleted.

disnake.on_guild_role_update(before, after)

Called when a Role is changed guild-wide.

This requires Intents.guilds to be enabled.

Parameters:
  • before (Role) – The updated role’s old info.

  • after (Role) – The updated role’s updated info.

Voice

disnake.on_voice_state_update(member, before, after)

Called when a Member changes their VoiceState.

The following, but not limited to, examples illustrate when this event is called:

  • A member joins a voice or stage channel.

  • A member leaves a voice or stage channel.

  • A member is muted or deafened by their own accord.

  • A member is muted or deafened by a guild administrator.

This requires Intents.voice_states to be enabled.

Parameters:
  • member (Member) – The member whose voice states changed.

  • before (VoiceState) – The voice state prior to the changes.

  • after (VoiceState) – The voice state after the changes.

Interactions

This section documents events related to application commands and other interactions.

disnake.on_application_command(interaction)

Called when an application command is invoked.

Warning

This is a low level function that is not generally meant to be used. Consider using Bot or InteractionBot instead.

Warning

If you decide to override this event and are using Bot or related types, make sure to call Bot.process_application_commands to ensure that the application commands are processed.

New in version 2.0.

Parameters:

interaction (ApplicationCommandInteraction) – The interaction object.

disnake.on_application_command_autocomplete(interaction)

Called when an application command autocomplete is called.

Warning

This is a low level function that is not generally meant to be used. Consider using Bot or InteractionBot instead.

Warning

If you decide to override this event and are using Bot or related types, make sure to call Bot.process_app_command_autocompletion to ensure that the application command autocompletion is processed.

New in version 2.0.

Parameters:

interaction (ApplicationCommandInteraction) – The interaction object.

disnake.on_button_click(interaction)

Called when a button is clicked.

New in version 2.0.

Parameters:

interaction (MessageInteraction) – The interaction object.

disnake.on_dropdown(interaction)

Called when a select menu is clicked.

New in version 2.0.

Parameters:

interaction (MessageInteraction) – The interaction object.

disnake.on_interaction(interaction)

Called when an interaction happened.

This currently happens due to application command invocations or components being used.

Warning

This is a low level function that is not generally meant to be used.

New in version 2.0.

Parameters:

interaction (Interaction) – The interaction object.

disnake.on_message_interaction(interaction)

Called when a message interaction happened.

This currently happens due to components being used.

New in version 2.0.

Parameters:

interaction (MessageInteraction) – The interaction object.

disnake.on_modal_submit(interaction)

Called when a modal is submitted.

New in version 2.4.

Parameters:

interaction (ModalInteraction) – The interaction object.

Messages

This section documents events related to Discord chat messages.

disnake.on_message(message)

Called when a Message is created and sent.

This requires Intents.messages to be enabled.

Warning

Your bot’s own messages and private messages are sent through this event. This can lead cases of ‘recursion’ depending on how your bot was programmed. If you want the bot to not reply to itself, consider checking the user IDs. Note that Bot does not have this problem.

Note

Not all messages will have content. This is a Discord limitation. See the docs of Intents.message_content for more information.

Parameters:

message (Message) – The current message.

disnake.on_message_delete(message)

Called when a message is deleted. If the message is not found in the internal message cache, then this event will not be called. Messages might not be in cache if the message is too old or the client is participating in high traffic guilds.

If this occurs increase the max_messages parameter or use the on_raw_message_delete() event instead.

This requires Intents.messages to be enabled.

Note

Not all messages will have content. This is a Discord limitation. See the docs of Intents.message_content for more information.

Parameters:

message (Message) – The deleted message.

disnake.on_message_edit(before, after)

Called when a Message receives an update event. If the message is not found in the internal message cache, then these events will not be called. Messages might not be in cache if the message is too old or the client is participating in high traffic guilds.

If this occurs increase the max_messages parameter or use the on_raw_message_edit() event instead.

Note

Not all messages will have content. This is a Discord limitation. See the docs of Intents.message_content for more information.

The following non-exhaustive cases trigger this event:

  • A message has been pinned or unpinned.

  • The message content has been changed.

  • The message has received an embed.

    • For performance reasons, the embed server does not do this in a “consistent” manner.

  • The message’s embeds were suppressed or unsuppressed.

  • A call message has received an update to its participants or ending time.

This requires Intents.messages to be enabled.

Parameters:
  • before (Message) – The previous version of the message.

  • after (Message) – The current version of the message.

disnake.on_bulk_message_delete(messages)

Called when messages are bulk deleted. If none of the messages deleted are found in the internal message cache, then this event will not be called. If individual messages were not found in the internal message cache, this event will still be called, but the messages not found will not be included in the messages list. Messages might not be in cache if the message is too old or the client is participating in high traffic guilds.

If this occurs increase the max_messages parameter or use the on_raw_bulk_message_delete() event instead.

This requires Intents.messages to be enabled.

Parameters:

messages (List[Message]) – The messages that have been deleted.

disnake.on_raw_message_delete(payload)

Called when a message is deleted. Unlike on_message_delete(), this is called regardless of the message being in the internal message cache or not.

If the message is found in the message cache, it can be accessed via RawMessageDeleteEvent.cached_message

This requires Intents.messages to be enabled.

Parameters:

payload (RawMessageDeleteEvent) – The raw event payload data.

disnake.on_raw_message_edit(payload)

Called when a message is edited. Unlike on_message_edit(), this is called regardless of the state of the internal message cache.

If the message is found in the message cache, it can be accessed via RawMessageUpdateEvent.cached_message. The cached message represents the message before it has been edited. For example, if the content of a message is modified and triggers the on_raw_message_edit() coroutine, the RawMessageUpdateEvent.cached_message will return a Message object that represents the message before the content was modified.

Due to the inherently raw nature of this event, the data parameter coincides with the raw data given by the gateway.

Since the data payload can be partial, care must be taken when accessing stuff in the dictionary. One example of a common case of partial data is when the 'content' key is inaccessible. This denotes an “embed” only edit, which is an edit in which only the embeds are updated by the Discord embed server.

This requires Intents.messages to be enabled.

Parameters:

payload (RawMessageUpdateEvent) – The raw event payload data.

disnake.on_raw_bulk_message_delete(payload)

Called when a bulk delete is triggered. Unlike on_bulk_message_delete(), this is called regardless of the messages being in the internal message cache or not.

If the messages are found in the message cache, they can be accessed via RawBulkMessageDeleteEvent.cached_messages

This requires Intents.messages to be enabled.

Parameters:

payload (RawBulkMessageDeleteEvent) – The raw event payload data.

disnake.on_reaction_add(reaction, user)

Called when a message has a reaction added to it. Similar to on_message_edit(), if the message is not found in the internal message cache, then this event will not be called. Consider using on_raw_reaction_add() instead.

Note

To get the Message being reacted, access it via Reaction.message.

This requires Intents.reactions to be enabled.

Note

This doesn’t require Intents.members within a guild context, but due to Discord not providing updated user information in a direct message it’s required for direct messages to receive this event. Consider using on_raw_reaction_add() if you need this and do not otherwise want to enable the members intent.

Parameters:
  • reaction (Reaction) – The current state of the reaction.

  • user (Union[Member, User]) – The user who added the reaction.

disnake.on_reaction_remove(reaction, user)

Called when a message has a reaction removed from it. Similar to on_message_edit, if the message is not found in the internal message cache, then this event will not be called.

Note

To get the message being reacted, access it via Reaction.message.

This requires both Intents.reactions and Intents.members to be enabled.

Note

Consider using on_raw_reaction_remove() if you need this and do not want to enable the members intent.

Parameters:
  • reaction (Reaction) – The current state of the reaction.

  • user (Union[Member, User]) – The user who added the reaction.

disnake.on_reaction_clear(message, reactions)

Called when a message has all its reactions removed from it. Similar to on_message_edit(), if the message is not found in the internal message cache, then this event will not be called. Consider using on_raw_reaction_clear() instead.

This requires Intents.reactions to be enabled.

Parameters:
  • message (Message) – The message that had its reactions cleared.

  • reactions (List[Reaction]) – The reactions that were removed.

disnake.on_reaction_clear_emoji(reaction)

Called when a message has a specific reaction removed from it. Similar to on_message_edit(), if the message is not found in the internal message cache, then this event will not be called. Consider using on_raw_reaction_clear_emoji() instead.

This requires Intents.reactions to be enabled.

New in version 1.3.

Parameters:

reaction (Reaction) – The reaction that got cleared.

disnake.on_raw_reaction_add(payload)

Called when a message has a reaction added. Unlike on_reaction_add(), this is called regardless of the state of the internal message cache.

This requires Intents.reactions to be enabled.

Parameters:

payload (RawReactionActionEvent) – The raw event payload data.

disnake.on_raw_reaction_remove(payload)

Called when a message has a reaction removed. Unlike on_reaction_remove(), this is called regardless of the state of the internal message cache.

This requires Intents.reactions to be enabled.

Parameters:

payload (RawReactionActionEvent) – The raw event payload data.

disnake.on_raw_reaction_clear(payload)

Called when a message has all its reactions removed. Unlike on_reaction_clear(), this is called regardless of the state of the internal message cache.

This requires Intents.reactions to be enabled.

Parameters:

payload (RawReactionClearEvent) – The raw event payload data.

disnake.on_raw_reaction_clear_emoji(payload)

Called when a message has a specific reaction removed from it. Unlike on_reaction_clear_emoji() this is called regardless of the state of the internal message cache.

This requires Intents.reactions to be enabled.

New in version 1.3.

Parameters:

payload (RawReactionClearEmojiEvent) – The raw event payload data.

disnake.on_typing(channel, user, when)

Called when someone begins typing a message.

The channel parameter can be a abc.Messageable instance, or a ForumChannel. If channel is an abc.Messageable instance, it could be a TextChannel, VoiceChannel, GroupChannel, or DMChannel.

Changed in version 2.5: channel may be a type ForumChannel

If the channel is a TextChannel, ForumChannel, or VoiceChannel then the user parameter is a Member, otherwise it is a User.

If the channel is a DMChannel and the user is not found in the internal user/member cache, then this event will not be called. Consider using on_raw_typing() instead.

This requires Intents.typing and Intents.guilds to be enabled.

Note

This doesn’t require Intents.members within a guild context, but due to Discord not providing updated user information in a direct message it’s required for direct messages to receive this event, if the bot didn’t explicitly open the DM channel in the same session (through User.create_dm(), Client.create_dm(), or indirectly by sending a message to the user). Consider using on_raw_typing() if you need this and do not otherwise want to enable the members intent.

Parameters:
disnake.on_raw_typing(data)

Called when someone begins typing a message.

This is similar to on_typing() except that it is called regardless of whether Intents.members and Intents.guilds are enabled.

Parameters:

data (RawTypingEvent) – The raw event payload data.

Utility Functions

disnake.utils.find(predicate, seq)[source]

A helper to return the first element found in the sequence that meets the predicate. For example:

member = disnake.utils.find(lambda m: m.name == 'Mighty', channel.guild.members)

would find the first Member whose name is ‘Mighty’ and return it. If an entry is not found, then None is returned.

This is different from filter() due to the fact it stops the moment it finds a valid entry.

Parameters:
  • predicate – A function that returns a boolean-like result.

  • seq (collections.abc.Iterable) – The iterable to search through.

disnake.utils.get(iterable, **attrs)[source]

A helper that returns the first element in the iterable that meets all the traits passed in attrs. This is an alternative for find().

When multiple attributes are specified, they are checked using logical AND, not logical OR. Meaning they have to meet every attribute passed in and not one of them.

To have a nested attribute search (i.e. search by x.y) then pass in x__y as the keyword argument.

If nothing is found that matches the attributes passed, then None is returned.

Examples

Basic usage:

member = disnake.utils.get(message.guild.members, name='Foo')

Multiple attribute matching:

channel = disnake.utils.get(guild.voice_channels, name='Foo', bitrate=64000)

Nested attribute matching:

channel = disnake.utils.get(client.get_all_channels(), guild__name='Cool', name='general')
Parameters:
  • iterable – An iterable to search through.

  • **attrs – Keyword arguments that denote attributes to search with.

disnake.utils.snowflake_time(id)[source]
Parameters:

id (int) – The snowflake ID.

Returns:

An aware datetime in UTC representing the creation time of the snowflake.

Return type:

datetime.datetime

disnake.utils.oauth_url(client_id, *, permissions=..., guild=..., redirect_uri=..., scopes=..., disable_guild_select=False)[source]

A helper function that returns the OAuth2 URL for inviting the bot into guilds.

Parameters:
  • client_id (Union[int, str]) – The client ID for your bot.

  • permissions (Permissions) – The permissions you’re requesting. If not given then you won’t be requesting any permissions.

  • guild (Snowflake) – The guild to pre-select in the authorization screen, if available.

  • redirect_uri (str) – An optional valid redirect URI.

  • scopes (Iterable[str]) –

    An optional valid list of scopes. Defaults to ('bot',).

    New in version 1.7.

  • disable_guild_select (bool) –

    Whether to disallow the user from changing the guild dropdown.

    New in version 2.0.

Returns:

The OAuth2 URL for inviting the bot into guilds.

Return type:

str

disnake.utils.remove_markdown(text, *, ignore_links=True)[source]

A helper function that removes markdown characters.

New in version 1.7.

Note

This function is not markdown aware and may remove meaning from the original text. For example, if the input contains 10 * 5 then it will be converted into 10  5.

Parameters:
  • text (str) – The text to remove markdown from.

  • ignore_links (bool) – Whether to leave links alone when removing markdown. For example, if a URL in the text contains characters such as _ then it will be left alone. Defaults to True.

Returns:

The text with the markdown special characters removed.

Return type:

str

disnake.utils.escape_markdown(text, *, as_needed=False, ignore_links=True)[source]

A helper function that escapes Discord’s markdown.

Parameters:
  • text (str) – The text to escape markdown from.

  • as_needed (bool) – Whether to escape the markdown characters as needed. This means that it does not escape extraneous characters if it’s not necessary, e.g. **hello** is escaped into \*\*hello** instead of \*\*hello\*\*. Note however that this can open you up to some clever syntax abuse. Defaults to False.

  • ignore_links (bool) – Whether to leave links alone when escaping markdown. For example, if a URL in the text contains characters such as _ then it will be left alone. This option is not supported with as_needed. Defaults to True.

Returns:

The text with the markdown special characters escaped with a slash.

Return type:

str

disnake.utils.escape_mentions(text)[source]

A helper function that escapes everyone, here, role, and user mentions.

Note

This does not include channel mentions.

Note

For more granular control over what mentions should be escaped within messages, refer to the AllowedMentions class.

Parameters:

text (str) – The text to escape mentions from.

Returns:

The text with the mentions removed.

Return type:

str

disnake.utils.resolve_invite(invite, *, with_params=False)[source]

Resolves an invite from a Invite, URL or code.

Parameters:
  • invite (Union[Invite, str]) – The invite to resolve.

  • with_params (bool) –

    Whether to also return the query parameters of the invite, if it’s a url.

    New in version 2.3.

Returns:

The invite code if with_params is False, otherwise a tuple containing the invite code and the url’s query parameters, if applicable.

Return type:

Union[str, Tuple[str, Dict[str, str]]]

disnake.utils.resolve_template(code)[source]

Resolves a template code from a Template, URL or code.

New in version 1.4.

Parameters:

code (Union[Template, str]) – The code.

Returns:

The template code.

Return type:

str

await disnake.utils.sleep_until(when, result=None)[source]

This function is a coroutine.

Sleep until a specified time.

If the time supplied is in the past this function will yield instantly.

New in version 1.3.

Parameters:
  • when (datetime.datetime) – The timestamp in which to sleep until. If the datetime is naive then it is assumed to be local time.

  • result (Any) – If provided, is returned to the caller when the coroutine completes.

disnake.utils.utcnow()[source]

A helper function to return an aware UTC datetime representing the current time.

This should be preferred to datetime.datetime.utcnow() since it is an aware datetime, compared to the naive datetime in the standard library.

New in version 2.0.

Returns:

The current aware datetime in UTC.

Return type:

datetime.datetime

disnake.utils.format_dt(dt, /, style='f')[source]

A helper function to format a datetime.datetime, int or float for presentation within Discord.

This allows for a locale-independent way of presenting data using Discord specific Markdown.

Style

Example Output

Description

t

22:57

Short Time

T

22:57:58

Long Time

d

17/05/2016

Short Date

D

17 May 2016

Long Date

f (default)

17 May 2016 22:57

Short Date Time

F

Tuesday, 17 May 2016 22:57

Long Date Time

R

5 years ago

Relative Time

Note that the exact output depends on the user’s locale setting in the client. The example output presented is using the en-GB locale.

New in version 2.0.

Parameters:
  • dt (Union[datetime.datetime, int, float]) – The datetime to format. If this is a naive datetime, it is assumed to be local time.

  • style (str) – The style to format the datetime with. Defaults to f

Returns:

The formatted string.

Return type:

str

disnake.utils.as_chunks(iterator, max_size)[source]

A helper function that collects an iterator into chunks of a given size.

New in version 2.0.

Parameters:

Warning

The last chunk collected may not be as large as max_size.

Returns:

A new iterator which yields chunks of a given size.

Return type:

Union[Iterator, AsyncIterator]

for ... in disnake.utils.search_directory(path)[source]

Walk through a directory and yield all modules.

Parameters:

path (str) – The path to search for modules

Yields:

str – The name of the found module. (usable in load_extension)

disnake.utils.as_valid_locale(locale)[source]

Converts the provided locale name to a name that is valid for use with the API, for example by returning en-US for en_US. Returns None for invalid names.

New in version 2.5.

Parameters:

locale (str) – The input locale name.

Enumerations

The API provides some enumerations for certain types of strings to avoid the API from being stringly typed in case the strings change in the future.

All enumerations are subclasses of an internal class which mimics the behaviour of enum.Enum.

class disnake.ChannelType[source]

Specifies the type of channel.

text

A text channel.

voice

A voice channel.

private

A private text channel. Also called a direct message.

group

A private group text channel.

category

A category channel.

news

A guild news channel.

stage_voice

A guild stage voice channel.

New in version 1.7.

news_thread

A news thread.

New in version 2.0.

public_thread

A public thread.

New in version 2.0.

private_thread

A private thread.

New in version 2.0.

guild_directory

A student hub channel.

New in version 2.1.

forum

A channel of only threads.

New in version 2.5.

class disnake.MessageType[source]

Specifies the type of Message. This is used to denote if a message is to be interpreted as a system message or a regular message.

x == y

Checks if two messages are equal.

x != y

Checks if two messages are not equal.

default

The default message type. This is the same as regular messages.

recipient_add

The system message when a user is added to a group private message or a thread.

recipient_remove

The system message when a user is removed from a group private message or a thread.

call

The system message denoting call state, e.g. missed call, started call, etc.

channel_name_change

The system message denoting that a channel’s name has been changed.

channel_icon_change

The system message denoting that a channel’s icon has been changed.

pins_add

The system message denoting that a pinned message has been added to a channel.

new_member

The system message denoting that a new member has joined a Guild.

premium_guild_subscription

The system message denoting that a member has “nitro boosted” a guild.

premium_guild_tier_1

The system message denoting that a member has “nitro boosted” a guild and it achieved level 1.

premium_guild_tier_2

The system message denoting that a member has “nitro boosted” a guild and it achieved level 2.

premium_guild_tier_3

The system message denoting that a member has “nitro boosted” a guild and it achieved level 3.

channel_follow_add

The system message denoting that an announcement channel has been followed.

New in version 1.3.

guild_stream

The system message denoting that a member is streaming in the guild.

New in version 1.7.

guild_discovery_disqualified

The system message denoting that the guild is no longer eligible for Server Discovery.

New in version 1.7.

guild_discovery_requalified

The system message denoting that the guild has become eligible again for Server Discovery.

New in version 1.7.

guild_discovery_grace_period_initial_warning

The system message denoting that the guild has failed to meet the Server Discovery requirements for one week.

New in version 1.7.

guild_discovery_grace_period_final_warning

The system message denoting that the guild has failed to meet the Server Discovery requirements for 3 weeks in a row.

New in version 1.7.

thread_created

The system message denoting that a thread has been created. This is only sent if the thread has been created from an older message. The period of time required for a message to be considered old cannot be relied upon and is up to Discord.

New in version 2.0.

reply

The system message denoting that the author is replying to a message.

New in version 2.0.

application_command

The system message denoting that an application (or “slash”) command was executed.

New in version 2.0.

guild_invite_reminder

The system message sent as a reminder to invite people to the guild.

New in version 2.0.

thread_starter_message

The system message denoting the message in the thread that is the one that started the thread’s conversation topic.

New in version 2.0.

context_menu_command

The system message denoting that a context menu command was executed.

New in version 2.3.

auto_moderation_action

The system message denoting that an auto moderation action was executed.

New in version 2.5.

class disnake.UserFlags[source]

Represents Discord User flags.

staff

The user is a Discord Employee.

partner

The user is a Discord Partner.

hypesquad

The user is a HypeSquad Events member.

bug_hunter

The user is a Bug Hunter.

mfa_sms

The user has SMS recovery for Multi Factor Authentication enabled.

premium_promo_dismissed

The user has dismissed the Discord Nitro promotion.

hypesquad_bravery

The user is a HypeSquad Bravery member.

hypesquad_brilliance

The user is a HypeSquad Brilliance member.

hypesquad_balance

The user is a HypeSquad Balance member.

early_supporter

The user is an Early Supporter.

team_user

The user is a Team User.

system

The user is a system user (i.e. represents Discord officially).

has_unread_urgent_messages

The user has an unread system message.

bug_hunter_level_2

The user is a Bug Hunter Level 2.

verified_bot

The user is a Verified Bot.

verified_bot_developer

The user is an Early Verified Bot Developer.

discord_certified_moderator

The user is a Discord Certified Moderator.

http_interactions_bot

The user is a bot that only uses HTTP interactions.

New in version 2.3.

spammer

The user is marked as a spammer.

New in version 2.3.

class disnake.ActivityType[source]

Specifies the type of Activity. This is used to check how to interpret the activity itself.

unknown

An unknown activity type. This should generally not happen.

playing

A “Playing” activity type.

streaming

A “Streaming” activity type.

listening

A “Listening” activity type.

watching

A “Watching” activity type.

custom

A custom activity type.

competing

A competing activity type.

New in version 1.5.

class disnake.PartyType[source]

Represents the type of a voice channel activity/application.

poker

The “Poker Night” activity.

betrayal

The “Betrayal.io” activity.

fishing

The “Fishington.io” activity.

chess

The “Chess In The Park” activity.

letter_tile

The “Letter Tile” activity.

word_snack

The “Word Snacks” activity.

doodle_crew

The “Doodle Crew” activity.

checkers

The “Checkers In The Park” activity.

New in version 2.3.

spellcast

The “SpellCast” activity.

New in version 2.3.

watch_together

The “Watch Together” activity, a Youtube application.

New in version 2.3.

sketch_heads

The “Sketch Heads” activity.

New in version 2.4.

ocho

The “Ocho” activity.

New in version 2.4.

class disnake.ApplicationCommandType[source]

Represents the type of an application command.

New in version 2.1.

chat_input

Represents a slash command.

user

Represents a user command from the context menu.

message

Represents a message command from the context menu.

class disnake.ApplicationCommandPermissionType[source]

Represents the type of a permission of an application command.

New in version 2.5.

role

Represents a permission that affects roles.

user

Represents a permission that affects users.

channel

Represents a permission that affects channels.

class disnake.InteractionType[source]

Specifies the type of Interaction.

New in version 2.0.

ping

Represents Discord pinging to see if the interaction response server is alive.

application_command

Represents an application command interaction.

component

Represents a component based interaction, i.e. using the Discord Bot UI Kit.

application_command_autocomplete

Represents an application command autocomplete interaction.

modal_submit

Represents a modal submit interaction.

class disnake.InteractionResponseType[source]

Specifies the response type for the interaction.

New in version 2.0.

pong

Pongs the interaction when given a ping.

See also InteractionResponse.pong()

channel_message

Respond to the interaction with a message.

See also InteractionResponse.send_message()

deferred_channel_message

Responds to the interaction with a message at a later time.

See also InteractionResponse.defer()

deferred_message_update

Acknowledges the component interaction with a promise that the message will update later (though there is no need to actually update the message).

See also InteractionResponse.defer()

message_update

Responds to the interaction by editing the message.

See also InteractionResponse.edit_message()

application_command_autocomplete_result

Responds to the autocomplete interaction with suggested choices.

See also InteractionResponse.autocomplete()

modal

Responds to the interaction by displaying a modal.

See also InteractionResponse.send_modal()

class disnake.ComponentType[source]

Represents the component type of a component.

New in version 2.0.

action_row

Represents the group component which holds different components in a row.

button

Represents a button component.

select

Represents a select component.

text_input

Represents a text input component.

class disnake.OptionType[source]

Represents the type of an option.

New in version 2.1.

sub_command

Represents a sub command of the main command or group.

sub_command_group

Represents a sub command group of the main command.

string

Represents a string option.

integer

Represents an integer option.

boolean

Represents a boolean option.

user

Represents a user option.

channel

Represents a channel option.

role

Represents a role option.

mentionable

Represents a role + user option.

number

Represents a float option.

attachment

Represents an attachment option.

New in version 2.4.

class disnake.ButtonStyle[source]

Represents the style of the button component.

New in version 2.0.

primary

Represents a blurple button for the primary action.

secondary

Represents a grey button for the secondary action.

success

Represents a green button for a successful action.

danger

Represents a red button for a dangerous action.

Represents a link button.

blurple

An alias for primary.

grey

An alias for secondary.

gray

An alias for secondary.

green

An alias for success.

red

An alias for danger.

url

An alias for link.

class disnake.TextInputStyle[source]

Represents a style of the text input component.

New in version 2.4.

short

Represents a single-line text input component.

paragraph

Represents a multi-line text input component.

single_line

An alias for short.

multi_line

An alias for paragraph.

long

An alias for paragraph.

class disnake.VerificationLevel[source]

Specifies a Guild's verification level, which is the criteria in which a member must meet before being able to send messages to the guild.

New in version 2.0.

x == y

Checks if two verification levels are equal.

x != y

Checks if two verification levels are not equal.

x > y

Checks if a verification level is higher than another.

x < y

Checks if a verification level is lower than another.

x >= y

Checks if a verification level is higher or equal to another.

x <= y

Checks if a verification level is lower or equal to another.

none

No criteria set.

low

Member must have a verified email on their Discord account.

medium

Member must have a verified email and be registered on Discord for more than five minutes.

high

Member must have a verified email, be registered on Discord for more than five minutes, and be a member of the guild itself for more than ten minutes.

highest

Member must have a verified phone on their Discord account.

class disnake.NotificationLevel[source]

Specifies whether a Guild has notifications on for all messages or mentions only by default.

New in version 2.0.

x == y

Checks if two notification levels are equal.

x != y

Checks if two notification levels are not equal.

x > y

Checks if a notification level is higher than another.

x < y

Checks if a notification level is lower than another.

x >= y

Checks if a notification level is higher or equal to another.

x <= y

Checks if a notification level is lower or equal to another.

all_messages

Members receive notifications for every message regardless of them being mentioned.

only_mentions

Members receive notifications for messages they are mentioned in.

class disnake.ContentFilter[source]

Specifies a Guild's explicit content filter, which is the machine learning algorithms that Discord uses to detect if an image contains pornography or otherwise explicit content.

New in version 2.0.

x == y

Checks if two content filter levels are equal.

x != y

Checks if two content filter levels are not equal.

x > y

Checks if a content filter level is higher than another.

x < y

Checks if a content filter level is lower than another.

x >= y

Checks if a content filter level is higher or equal to another.

x <= y

Checks if a content filter level is lower or equal to another.

disabled

The guild does not have the content filter enabled.

no_role

The guild has the content filter enabled for members without a role.

all_members

The guild has the content filter enabled for every member.

class disnake.Status[source]

Specifies a Member ‘s status.

online

The member is online.

offline

The member is offline.

idle

The member is idle.

dnd

The member is “Do Not Disturb”.

do_not_disturb

An alias for dnd.

invisible

The member is “invisible”. In reality, this is only used in sending a presence a la Client.change_presence(). When you receive a user’s presence this will be offline instead.

streaming

The member is live streaming to Twitch.

New in version 2.3.

class disnake.AuditLogAction[source]

Represents the type of action being done for a AuditLogEntry, which is retrievable via Guild.audit_logs().

guild_update

The guild has updated. Things that trigger this include:

  • Changing the guild vanity URL

  • Changing the guild invite splash

  • Changing the guild AFK channel or timeout

  • Changing the guild voice server region

  • Changing the guild icon, banner, or discovery splash

  • Changing the guild moderation settings

  • Changing things related to the guild widget

When this is the action, the type of target is the Guild.

Possible attributes for AuditLogDiff:

channel_create

A new channel was created.

When this is the action, the type of target is either a abc.GuildChannel or Object with an ID.

A more filled out object in the Object case can be found by using after.

Possible attributes for AuditLogDiff:

channel_update

A channel was updated. Things that trigger this include:

  • The channel name or topic was changed

  • The channel bitrate was changed

When this is the action, the type of target is the abc.GuildChannel or Object with an ID.

A more filled out object in the Object case can be found by using after or before.

Possible attributes for AuditLogDiff:

channel_delete

A channel was deleted.

When this is the action, the type of target is an Object with an ID.

A more filled out object can be found by using the before object.

Possible attributes for AuditLogDiff:

overwrite_create

A channel permission overwrite was created.

When this is the action, the type of target is the abc.GuildChannel or Object with an ID.

When this is the action, the type of extra is either a Role or Member. If the object is not found then it is a Object with an ID being filled, a name, and a type attribute set to either 'role' or 'member' to help dictate what type of ID it is.

Possible attributes for AuditLogDiff:

Changed in version 2.6: type for this action is now an int.

overwrite_update

A channel permission overwrite was changed, this is typically when the permission values change.

See overwrite_create for more information on how the target and extra fields are set.

Possible attributes for AuditLogDiff:

Changed in version 2.6: type for this action is now an int.

overwrite_delete

A channel permission overwrite was deleted.

See overwrite_create for more information on how the target and extra fields are set.

Possible attributes for AuditLogDiff:

Changed in version 2.6: type for this action is now an int.

kick

A member was kicked.

When this is the action, the type of target is the User who got kicked.

When this is the action, changes is empty.

member_prune

A member prune was triggered.

When this is the action, the type of target is set to None.

When this is the action, the type of extra is set to an unspecified proxy object with two attributes:

  • delete_members_days: An integer specifying how far the prune was.

  • members_removed: An integer specifying how many members were removed.

When this is the action, changes is empty.

ban

A member was banned.

When this is the action, the type of target is the User who got banned.

When this is the action, changes is empty.

unban

A member was unbanned.

When this is the action, the type of target is the User who got unbanned.

When this is the action, changes is empty.

member_update

A member has updated. This triggers in the following situations:

  • A nickname was changed

  • They were server muted or deafened (or it was undone)

  • They were timed out

When this is the action, the type of target is the Member or User who got updated.

Possible attributes for AuditLogDiff:

member_role_update

A member’s role has been updated. This triggers when a member either gains a role or loses a role.

When this is the action, the type of target is the Member or User who got the role.

Possible attributes for AuditLogDiff:

member_move

A member’s voice channel has been updated. This triggers when a member is moved to a different voice channel.

When this is the action, the type of extra is set to an unspecified proxy object with two attributes:

  • channel: A TextChannel or Object with the channel ID where the members were moved.

  • count: An integer specifying how many members were moved.

New in version 1.3.

member_disconnect

A member’s voice state has changed. This triggers when a member is force disconnected from voice.

When this is the action, the type of extra is set to an unspecified proxy object with one attribute:

  • count: An integer specifying how many members were disconnected.

New in version 1.3.

bot_add

A bot was added to the guild.

When this is the action, the type of target is the Member or User which was added to the guild.

New in version 1.3.

role_create

A new role was created.

When this is the action, the type of target is the Role or a Object with the ID.

Possible attributes for AuditLogDiff:

role_update

A role was updated. This triggers in the following situations:

  • The name has changed

  • The permissions have changed

  • The colour has changed

  • Its hoist/mentionable state has changed

When this is the action, the type of target is the Role or a Object with the ID.

Possible attributes for AuditLogDiff:

role_delete

A role was deleted.

When this is the action, the type of target is the Object with the ID.

Possible attributes for AuditLogDiff:

invite_create

An invite was created.

When this is the action, the type of target is the Invite that was created.

Possible attributes for AuditLogDiff:

invite_update

An invite was updated.

When this is the action, the type of target is the Invite that was updated.

invite_delete

An invite was deleted.

When this is the action, the type of target is the Invite that was deleted.

Possible attributes for AuditLogDiff:

webhook_create

A webhook was created.

When this is the action, the type of target is the Webhook or Object with the webhook ID.

Possible attributes for AuditLogDiff:

Changed in version 2.6: Added application_id.

Changed in version 2.6: type for this action is now a WebhookType.

Changed in version 2.6: Added support for Webhook instead of plain Objects.

webhook_update

A webhook was updated. This trigger in the following situations:

  • The webhook name changed

  • The webhook channel changed

When this is the action, the type of target is the Webhook or Object with the webhook ID.

Possible attributes for AuditLogDiff:

Changed in version 2.6: Added support for Webhook instead of plain Objects.

webhook_delete

A webhook was deleted.

When this is the action, the type of target is the Object with the webhook ID.

Possible attributes for AuditLogDiff:

Changed in version 2.6: Added application_id.

Changed in version 2.6: type for this action is now a WebhookType.

emoji_create

An emoji was created.

When this is the action, the type of target is the Emoji or Object with the emoji ID.

Possible attributes for AuditLogDiff:

emoji_update

An emoji was updated. This triggers when the name has changed.

When this is the action, the type of target is the Emoji or Object with the emoji ID.

Possible attributes for AuditLogDiff:

emoji_delete

An emoji was deleted.

When this is the action, the type of target is the Object with the emoji ID.

Possible attributes for AuditLogDiff:

message_delete

A message was deleted by a moderator. Note that this only triggers if the message was deleted by someone other than the author.

When this is the action, the type of target is the Member or User who had their message deleted.

When this is the action, the type of extra is set to an unspecified proxy object with two attributes:

  • count: An integer specifying how many messages were deleted.

  • channel: A TextChannel or Object with the channel ID where the message got deleted.

message_bulk_delete

Messages were bulk deleted by a moderator.

When this is the action, the type of target is the TextChannel or Object with the ID of the channel that was purged.

When this is the action, the type of extra is set to an unspecified proxy object with one attribute:

  • count: An integer specifying how many messages were deleted.

New in version 1.3.

message_pin

A message was pinned in a channel.

When this is the action, the type of target is the Member or User who had their message pinned.

When this is the action, the type of extra is set to an unspecified proxy object with two attributes:

  • channel: A TextChannel or Object with the channel ID where the message was pinned.

  • message_id: the ID of the message which was pinned.

New in version 1.3.

message_unpin

A message was unpinned in a channel.

When this is the action, the type of target is the Member or User who had their message unpinned.

When this is the action, the type of extra is set to an unspecified proxy object with two attributes:

  • channel: A TextChannel or Object with the channel ID where the message was unpinned.

  • message_id: the ID of the message which was unpinned.

New in version 1.3.

integration_create

A guild integration was created.

When this is the action, the type of target is the PartialIntegration or Object with the integration ID of the integration which was created.

Possible attributes for AuditLogDiff:

New in version 1.3.

Changed in version 2.6: Added support for PartialIntegration instead of plain Objects.

integration_update

A guild integration was updated.

When this is the action, the type of target is the PartialIntegration or Object with the integration ID of the integration which was updated.

New in version 1.3.

Changed in version 2.6: Added support for PartialIntegration instead of plain Objects.

integration_delete

A guild integration was deleted.

When this is the action, the type of target is the Object with the integration ID of the integration which was deleted.

Possible attributes for AuditLogDiff:

New in version 1.3.

guild_scheduled_event_create

A guild scheduled event was created.

When this is the action, the type of target is the GuildScheduledEvent or Object with the ID of the event which was created.

Possible attributes for AuditLogDiff:

New in version 2.3.

guild_scheduled_event_update

A guild scheduled event was updated.

When this is the action, the type of target is the GuildScheduledEvent or Object with the ID of the event which was updated.

Possible attributes for AuditLogDiff:

New in version 2.3.

guild_scheduled_event_delete

A guild scheduled event was deleted.

When this is the action, the type of target is the Object with the ID of the event which was deleted.

Possible attributes for AuditLogDiff:

New in version 2.3.

stage_instance_create

A stage instance was started.

When this is the action, the type of target is the StageInstance or Object with the ID of the stage instance which was created.

When this is the action, the type of extra is set to an unspecified proxy object with one attribute:

  • channel: The StageChannel or Object with the channel ID where the stage instance was started.

Possible attributes for AuditLogDiff:

New in version 2.0.

stage_instance_update

A stage instance was updated.

When this is the action, the type of target is the StageInstance or Object with the ID of the stage instance which was updated.

See stage_instance_create for more information on how the extra field is set.

Possible attributes for AuditLogDiff:

New in version 2.0.

stage_instance_delete

A stage instance was ended.

See stage_instance_create for more information on how the extra field is set.

Possible attributes for AuditLogDiff:

New in version 2.0.

sticker_create

A sticker was created.

When this is the action, the type of target is the GuildSticker or Object with the ID of the sticker which was created.

Possible attributes for AuditLogDiff:

New in version 2.0.

sticker_update

A sticker was updated.

When this is the action, the type of target is the GuildSticker or Object with the ID of the sticker which was updated.

Possible attributes for AuditLogDiff:

New in version 2.0.

sticker_delete

A sticker was deleted.

When this is the action, the type of target is the Object with the ID of the sticker which was deleted.

Possible attributes for AuditLogDiff:

New in version 2.0.

thread_create

A thread was created.

When this is the action, the type of target is the Thread or Object with the ID of the thread which was created.

Possible attributes for AuditLogDiff:

New in version 2.0.

thread_update

A thread was updated.

When this is the action, the type of target is the Thread or Object with the ID of the thread which was updated.

Possible attributes for AuditLogDiff:

New in version 2.0.

thread_delete

A thread was deleted.

When this is the action, the type of target is the Object with the ID of the thread which was deleted.

Possible attributes for AuditLogDiff:

New in version 2.0.

application_command_permission_update

The permissions of an application command were updated.

When this is the action, the type of target is the ApplicationCommand, PartialIntegration, or Object with the ID of the command whose permissions were updated or the application ID if these are application-wide permissions.

When this is the action, the type of extra is set to an unspecified proxy object with one attribute:

Possible attributes for AuditLogDiff:

New in version 2.5.

Changed in version 2.6: Added support for PartialIntegration, and added integration to extra.

automod_rule_create

An auto moderation rule was created.

When this is the action, the type of target is the AutoModRule or Object with the ID of the auto moderation rule which was created.

Possible attributes for AuditLogDiff:

New in version 2.6.

automod_rule_update

An auto moderation rule was updated.

When this is the action, the type of target is the AutoModRule or Object with the ID of the auto moderation rule which was updated.

Possible attributes for AuditLogDiff:

New in version 2.6.

automod_rule_delete

An auto moderation rule was deleted.

When this is the action, the type of target is the Object with the ID of the auto moderation rule which was deleted.

Possible attributes for AuditLogDiff:

New in version 2.6.

automod_block_message

A message was blocked by an auto moderation rule.

When this is the action, the type of target is the Member or User who had their message blocked.

When this is the action, the type of extra is set to an unspecified proxy object with these attributes:

  • channel: A GuildChannel, Thread or Object with the channel ID where the message got blocked.

  • rule_name: A str with the name of the rule that matched.

  • rule_trigger_type: An AutoModTriggerType value with the trigger type of the rule.

automod_send_alert_message

An alert message was sent by an auto moderation rule.

When this is the action, the type of target is the Member or User who had their message flagged.

See automod_block_message for more information on how the extra field is set.

automod_timeout

A user was timed out by an auto moderation rule.

When this is the action, the type of target is the Member or User who was timed out.

See automod_block_message for more information on how the extra field is set.

class disnake.AuditLogActionCategory[source]

Represents the category that the AuditLogAction belongs to.

This can be retrieved via AuditLogEntry.category.

create

The action is the creation of something.

delete

The action is the deletion of something.

update

The action is the update of something.

class disnake.TeamMembershipState[source]

Represents the membership state of a team member retrieved through Client.application_info().

New in version 1.3.

invited

Represents an invited member.

accepted

Represents a member currently in the team.

class disnake.WebhookType[source]

Represents the type of webhook that can be received.

New in version 1.3.

incoming

Represents a webhook that can post messages to channels with a token.

channel_follower

Represents a webhook that is internally managed by Discord, used for following channels.

application

Represents a webhook that is used for interactions or applications.

New in version 2.0.

class disnake.ExpireBehaviour[source]

Represents the behaviour the Integration should perform when a user’s subscription has finished.

There is an alias for this called ExpireBehavior.

New in version 1.4.

remove_role

This will remove the StreamIntegration.role from the user when their subscription is finished.

kick

This will kick the user when their subscription is finished.

class disnake.DefaultAvatar[source]

Represents the default avatar of a Discord User

blurple

Represents the default avatar with the color blurple. See also Colour.blurple

grey

Represents the default avatar with the color grey. See also Colour.greyple

gray

An alias for grey.

green

Represents the default avatar with the color green. See also Colour.green

orange

Represents the default avatar with the color orange. See also Colour.orange

red

Represents the default avatar with the color red. See also Colour.red

class disnake.StickerType[source]

Represents the type of sticker.

New in version 2.0.

standard

Represents a standard sticker that all Nitro users can use.

guild

Represents a custom sticker created in a guild.

class disnake.StickerFormatType[source]

Represents the type of sticker images.

New in version 1.6.

png

Represents a sticker with a png image.

apng

Represents a sticker with an apng image.

lottie

Represents a sticker with a lottie image.

class disnake.InviteTarget[source]

Represents the invite type for voice channel invites.

New in version 2.0.

unknown

The invite doesn’t target anyone or anything.

stream

A stream invite that targets a user.

embedded_application

A stream invite that targets an embedded application.

class disnake.VideoQualityMode[source]

Represents the camera video quality mode for voice channel participants.

New in version 2.0.

auto

Represents auto camera video quality.

full

Represents full camera video quality.

class disnake.StagePrivacyLevel[source]

Represents a stage instance’s privacy level.

New in version 2.0.

public

The stage instance can be joined by external users.

Deprecated since version 2.5: Public stages are no longer supported by discord.

closed

The stage instance can only be joined by members of the guild.

guild_only

Alias for closed

class disnake.NSFWLevel[source]

Represents the NSFW level of a guild.

New in version 2.0.

x == y

Checks if two NSFW levels are equal.

x != y

Checks if two NSFW levels are not equal.

x > y

Checks if a NSFW level is higher than another.

x < y

Checks if a NSFW level is lower than another.

x >= y

Checks if a NSFW level is higher or equal to another.

x <= y

Checks if a NSFW level is lower or equal to another.

default

The guild has not been categorised yet.

explicit

The guild contains NSFW content.

safe

The guild does not contain any NSFW content.

age_restricted

The guild may contain NSFW content.

class disnake.GuildScheduledEventEntityType[source]

Represents the type of a guild scheduled event entity.

New in version 2.3.

stage_instance

The guild scheduled event will take place in a stage channel.

voice

The guild scheduled event will take place in a voice channel.

external

The guild scheduled event will take place in a custom location.

class disnake.GuildScheduledEventStatus[source]

Represents the status of a guild scheduled event.

New in version 2.3.

scheduled

Represents a scheduled event.

active

Represents an active event.

completed

Represents a completed event.

canceled

Represents a canceled event.

cancelled

An alias for canceled.

New in version 2.6.

class disnake.GuildScheduledEventPrivacyLevel[source]

Represents the privacy level of a guild scheduled event.

New in version 2.3.

guild_only

The guild scheduled event is only for a specific guild.

class disnake.ThreadArchiveDuration[source]

Represents the automatic archive duration of a thread in minutes.

New in version 2.3.

hour

The thread will archive after an hour of inactivity.

day

The thread will archive after a day of inactivity.

three_days

The thread will archive after three days of inactivity.

week

The thread will archive after a week of inactivity.

class disnake.WidgetStyle[source]

Represents the supported widget image styles.

New in version 2.5.

shield

A shield style image with a Discord icon and the online member count.

banner1

A large image with guild icon, name and online member count and a footer.

banner2

A small image with guild icon, name and online member count.

banner3

A large image with guild icon, name and online member count and a footer, with a “Chat Now” label on the right.

banner4

A large image with a large Discord logo, guild icon, name and online member count, with a “Join My Server” label at the bottom.

class disnake.Locale[source]

Represents supported locales by Discord.

New in version 2.5.

bg

The bg (Bulgarian) locale.

cs

The cs (Czech) locale.

da

The da (Danish) locale.

de

The de (German) locale.

el

The el (Greek) locale.

en_GB

The en_GB (English, UK) locale.

en_US

The en_US (English, US) locale.

es_ES

The es_ES (Spanish) locale.

fi

The fi (Finnish) locale.

fr

The fr (French) locale.

hi

The hi (Hindi) locale.

hr

The hr (Croatian) locale.

it

The it (Italian) locale.

ja

The ja (Japanese) locale.

ko

The ko (Korean) locale.

lt

The lt (Lithuanian) locale.

hu

The hu (Hungarian) locale.

nl

The nl (Dutch) locale.

no

The no (Norwegian) locale.

pl

The pl (Polish) locale.

pt_BR

The pt_BR (Portuguese) locale.

ro

The ro (Romanian) locale.

ru

The ru (Russian) locale.

sv_SE

The sv_SE (Swedish) locale.

th

The th (Thai) locale.

tr

The tr (Turkish) locale.

uk

The uk (Ukrainian) locale.

vi

The vi (Vietnamese) locale.

zh_CN

The zh_CN (Chinese, China) locale.

zh_TW

The zh_TW (Chinese, Taiwan) locale.

class disnake.AutoModActionType[source]

Represents the type of action an auto moderation rule will take upon execution.

New in version 2.6.

block_message

The rule will prevent matching messages from being posted.

send_alert_message

The rule will send an alert to a specified channel.

timeout

The rule will timeout the user that sent the message.

Note

This action type is only available for rules with trigger type keyword or mention_spam, and moderate_members permissions are required to use it.

class disnake.AutoModEventType[source]

Represents the type of event/context an auto moderation rule will be checked in.

New in version 2.6.

message_send

The rule will apply when a member sends or edits a message in the guild.

class disnake.AutoModTriggerType[source]

Represents the type of content that can trigger an auto moderation rule.

New in version 2.6.

keyword

The rule will filter messages based on a custom keyword list.

This trigger type requires additional metadata.

The rule will filter messages containing malicious links.

spam

The rule will filter messages suspected of being spam.

keyword_preset

The rule will filter messages based on predefined lists containing commonly flagged words.

This trigger type requires additional metadata.

mention_spam

The rule will filter messages based on the number of member/role mentions they contain.

This trigger type requires additional metadata.

class disnake.ThreadSortOrder[source]

Represents the sort order of threads in ForumChannels.

New in version 2.6.

latest_activity

Sort forum threads by activity.

creation_date

Sort forum threads by creation date/time (from newest to oldest).

Async Iterator

Some API functions return an “async iterator”. An async iterator is something that is capable of being used in an async for statement.

These async iterators can be used as follows:

async for elem in channel.history():
    # do stuff with elem here

Certain utilities make working with async iterators easier, detailed below.

class disnake.AsyncIterator

Represents the “AsyncIterator” concept. Note that no such class exists, it is purely abstract.

async for x in y

Iterates over the contents of the async iterator.

await next()

This function is a coroutine.

Advances the iterator by one, if possible. If no more items are found then this raises NoMoreItems.

await get(**attrs)

This function is a coroutine.

Similar to utils.get() except run over the async iterator.

Getting the last message by a user named ‘Dave’ or None:

msg = await channel.history().get(author__name='Dave')
await find(predicate)

This function is a coroutine.

Similar to utils.find() except run over the async iterator.

Unlike utils.find(), the predicate provided can be a coroutine.

Getting the last audit log with a reason or None:

def predicate(event):
    return event.reason is not None

event = await guild.audit_logs().find(predicate)
Parameters:

predicate – The predicate to use. Could be a coroutine.

Returns:

The first element that returns True for the predicate or None.

await flatten()

This function is a coroutine.

Flattens the async iterator into a list with all the elements.

Returns:

A list of every element in the async iterator.

Return type:

list

chunk(max_size)

Collects items into chunks of up to a given maximum size. Another AsyncIterator is returned which collects items into lists of a given size. The maximum chunk size must be a positive integer.

New in version 1.6.

Collecting groups of users:

async for leader, *users in reaction.users().chunk(3):
    ...

Warning

The last chunk collected may not be as large as max_size.

Parameters:

max_size – The size of individual chunks.

Return type:

AsyncIterator

map(func)

This is similar to the built-in map function. Another AsyncIterator is returned that executes the function on every element it is iterating over. This function can either be a regular function or a coroutine.

Creating a content iterator:

def transform(message):
    return message.content

async for content in channel.history().map(transform):
    message_length = len(content)
Parameters:

func – The function to call on every element. Could be a coroutine.

Return type:

AsyncIterator

filter(predicate)

This is similar to the built-in filter function. Another AsyncIterator is returned that filters over the original async iterator. This predicate can be a regular function or a coroutine.

Getting messages by non-bot accounts:

def predicate(message):
    return not message.author.bot

async for elem in channel.history().filter(predicate):
    ...
Parameters:

predicate – The predicate to call on every element. Could be a coroutine.

Return type:

AsyncIterator

Audit Log Data

Working with Guild.audit_logs() is a complicated process with a lot of machinery involved. The library attempts to make it easy to use and friendly. In order to accomplish this goal, it must make use of a couple of data classes that aid in this goal.

AuditLogEntry

class disnake.AuditLogEntry(*, data, guild, application_commands, automod_rules, guild_scheduled_events, integrations, threads, users, webhooks)[source]

Represents an Audit Log entry.

You retrieve these via Guild.audit_logs().

x == y

Checks if two entries are equal.

x != y

Checks if two entries are not equal.

hash(x)

Returns the entry’s hash.

Changed in version 1.7: Audit log entries are now comparable and hashable.

action

The action that was done.

Type:

AuditLogAction

user

The user who initiated this action. Usually a Member, unless gone then it’s a User.

Type:

abc.User

id

The entry ID.

Type:

int

target

The target that got changed. The exact type of this depends on the action being done.

Type:

Any

extra

Extra information that this entry has that might be useful. For most actions, this is None. However in some cases it contains extra information. See AuditLogAction for which actions have this field filled out.

Type:

Any

reason

The reason this action was done.

Type:

Optional[str]

created_at

Returns the entry’s creation time in UTC.

Type:

datetime.datetime

category

The category of the action, if applicable.

Type:

Optional[AuditLogActionCategory]

changes

The list of changes this entry has.

Type:

AuditLogChanges

before

The target’s prior state.

Type:

AuditLogDiff

after

The target’s subsequent state.

Type:

AuditLogDiff

AuditLogChanges

Attributes
class disnake.AuditLogChanges[source]

An audit log change set.

before

The old value. The attribute has the type of AuditLogDiff.

Depending on the AuditLogActionCategory retrieved by category, the data retrieved by this attribute differs:

Category

Description

create

All attributes are set to None.

delete

All attributes are set the value before deletion.

update

All attributes are set the value before updating.

None

No attributes are set.

after

The new value. The attribute has the type of AuditLogDiff.

Depending on the AuditLogActionCategory retrieved by category, the data retrieved by this attribute differs:

Category

Description

create

All attributes are set to the created value

delete

All attributes are set to None

update

All attributes are set the value after updating.

None

No attributes are set.

AuditLogDiff

class disnake.AuditLogDiff[source]

Represents an audit log “change” object. A change object has dynamic attributes that depend on the type of action being done. Certain actions map to certain attributes being set.

Note that accessing an attribute that does not match the specified action will lead to an attribute error.

To get a list of attributes that have been set, you can iterate over them. To see a list of all possible attributes that could be set based on the action being done, check the documentation for AuditLogAction, otherwise check the documentation below for all attributes that are possible.

iter(diff)

Returns an iterator over (attribute, value) tuple of this diff.

name

A name of something.

Type:

str

icon

A guild’s or role’s icon.

See also Guild.icon or Role.icon.

Type:

Asset

splash

The guild’s invite splash. See also Guild.splash.

Type:

Asset

discovery_splash

The guild’s discovery splash. See also Guild.discovery_splash.

Type:

Asset

banner

The guild’s banner. See also Guild.banner.

Type:

Asset

owner

The guild’s owner. See also Guild.owner

Type:

Union[Member, User]

region

The guild’s voice region. See also Guild.region.

Type:

str

afk_channel

The guild’s AFK channel.

If this could not be found, then it falls back to a Object with the ID being set.

See Guild.afk_channel.

Type:

Union[VoiceChannel, Object]

system_channel

The guild’s system channel.

If this could not be found, then it falls back to a Object with the ID being set.

See Guild.system_channel.

Type:

Union[TextChannel, Object]

rules_channel

The guild’s rules channel.

If this could not be found then it falls back to a Object with the ID being set.

See Guild.rules_channel.

Type:

Union[TextChannel, Object]

public_updates_channel

The guild’s public updates channel.

If this could not be found then it falls back to a Object with the ID being set.

See Guild.public_updates_channel.

Type:

Union[TextChannel, Object]

afk_timeout

The guild’s AFK timeout. See Guild.afk_timeout.

Type:

int

mfa_level

The guild’s MFA level. See Guild.mfa_level.

Type:

int

widget_enabled

The guild’s widget has been enabled or disabled.

Type:

bool

widget_channel

The widget’s channel.

If this could not be found then it falls back to a Object with the ID being set.

Type:

Union[abc.GuildChannel, Object]

verification_level

The guild’s verification level.

See also Guild.verification_level.

Type:

VerificationLevel

premium_progress_bar_enabled

Whether the guild’s premium progress bar is enabled.

See also Guild.premium_progress_bar_enabled.

Type:

bool

default_notifications

The guild’s default notification level.

See also Guild.default_notifications.

Type:

NotificationLevel

explicit_content_filter

The guild’s content filter.

See also Guild.explicit_content_filter.

Type:

ContentFilter

default_message_notifications

The guild’s default message notification setting.

Type:

int

vanity_url_code

The guild’s vanity URL code.

See also Guild.vanity_invite(), Guild.edit(), and Guild.vanity_url_code.

Type:

str

preferred_locale

The guild’s preferred locale.

Type:

Locale

position

The position of a Role or abc.GuildChannel.

Type:

int

type

The type of channel/thread, sticker, webhook, integration (str), or permission overwrite (int).

Type:

Union[ChannelType, StickerType, WebhookType, str, int]

topic

The topic of a TextChannel, StageChannel, StageInstance or ForumChannel.

See also TextChannel.topic, StageChannel.topic, StageInstance.topic or ForumChannel.topic.

Type:

str

bitrate

The bitrate of a VoiceChannel or StageChannel.

See also VoiceChannel.bitrate or StageChannel.bitrate.

Type:

int

overwrites

A list of permission overwrite tuples that represents a target and a PermissionOverwrite for said target.

The first element is the object being targeted, which can either be a Member or User or Role. If this object is not found then it is a Object with an ID being filled and a type attribute set to either 'role' or 'member' to help decide what type of ID it is.

Type:

List[Tuple[Union[Member, User, Role, Object], PermissionOverwrite]]

privacy_level

The privacy level of the stage instance or guild scheduled event.

Type:

Union[StagePrivacyLevel, GuildScheduledEventPrivacyLevel]

roles

A list of roles being added or removed from a member.

If a role is not found then it is a Object with the ID and name being filled in.

Type:

List[Union[Role, Object]]

nick

The nickname of a member.

See also Member.nick

Type:

Optional[str]

deaf

Whether the member is being server deafened.

See also VoiceState.deaf.

Type:

bool

mute

Whether the member is being server muted.

See also VoiceState.mute.

Type:

bool

permissions

The permissions of a role.

See also Role.permissions.

Type:

Permissions

colour
color

The colour of a role.

See also Role.colour

Type:

Colour

hoist

Whether the role is being hoisted or not.

See also Role.hoist

Type:

bool

mentionable

Whether the role is mentionable or not.

See also Role.mentionable