+API Reference
+The following section outlines the API of discord.py.
+
+
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
+discord.py.
+
+
+
+Clients
+
+Client
+
+-
+class discord.Client(*, intents, loop=None, **options)
+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 (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.
+
+
+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.
+
+
+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
.
+
+
+status (Optional[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.
+
+
+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.
+
+
+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.
+
+
+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
.
+
+
+
+
+
+
+-
+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
+
+
+
+
+
+-
+@event
+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)
+Retrieves an AsyncIterator
that enables receiving your guilds.
+
+
+
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 – Getting the guilds failed.
+
+- Yields
+Guild
– The guild with the guild data parsed.
+
+
+
+
+
+-
+property latency
+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()
+bool
: 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.
+
+
+
+
+-
+property user
+Represents the connected client. None
if not logged in.
+
+- Type
+Optional[ClientUser
]
+
+
+
+
+
+-
+property guilds
+The guilds that the connected client is a member of.
+
+- Type
+List[Guild
]
+
+
+
+
+
+-
+property emojis
+The emojis that the connected client has.
+
+- Type
+List[Emoji
]
+
+
+
+
+
+-
+property stickers
+The stickers that the connected client has.
+
+
+- Type
+List[GuildSticker
]
+
+
+
+
+
+-
+property cached_messages
+Read-only list of messages the connected client has cached.
+
+
+- Type
+Sequence[Message
]
+
+
+
+
+
+-
+property private_channels
+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
+Represents a list of voice connections.
+These are usually VoiceClient
instances.
+
+- Type
+List[VoiceProtocol
]
+
+
+
+
+
+-
+property application_id
+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.
+
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+property application_flags
+The client’s application flags.
+
+
+- Type
+ApplicationFlags
+
+
+
+
+
+-
+is_ready()
+bool
: Specifies if the client’s internal cache is ready for use.
+
+
+
+-
+await on_error(event_method, *args, **kwargs)
+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 before_identify_hook(shard_id, *, initial=False)
+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.
+
+
+- Parameters
+-
+
+
+
+
+
+-
+await login(token)
+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)
+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.
+
+- Parameters
+reconnect (bool
) – If we should attempt reconnecting, 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).
+
+- Raises
+-
+
+
+
+
+
+-
+await close()
+This function is a coroutine.
+Closes the connection to Discord.
+
+
+
+-
+clear()
+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)
+This function is a coroutine.
+A shorthand coroutine for login()
+ setup()
+ connect()
.
+
+- Raises
+TypeError – An unexpected keyword argument was received.
+
+
+
+
+
+-
+await setup()
+This function is a coroutine.
+A coroutine to be called to setup the bot, by default this is blank.
+To perform asynchronous setup after the bot is logged in but before
+it has connected to the Websocket, overwrite this coroutine.
+
+
+
+
+-
+run(*args, **kwargs)
+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()
+bool
: Indicates if the websocket connection is closed.
+
+
+
+-
+property activity
+The activity being used upon
+logging in.
+
+- Type
+Optional[BaseActivity
]
+
+
+
+
+
+-
+property status
+Status
:
+The status being used upon logging on to Discord.
+
+
+
+
+-
+property allowed_mentions
+The allowed mention configuration.
+
+
+- Type
+Optional[AllowedMentions
]
+
+
+
+
+
+-
+property intents
+The intents configured for this connection.
+
+
+- Type
+Intents
+
+
+
+
+
+-
+property users
+Returns a list of all the users the bot can see.
+
+- Type
+List[User
]
+
+
+
+
+
+-
+get_channel(id, /)
+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)
+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.
+
+
+- Parameters
+-
+
+- Returns
+The partial messageable
+
+- Return type
+PartialMessageable
+
+
+
+
+
+-
+get_stage_instance(id, /)
+Returns a stage instance with the given stage channel ID.
+
+
+- Parameters
+id (int
) – The ID to search for.
+
+- Returns
+The returns stage instance of None
if not found.
+
+- Return type
+Optional[StageInstance
]
+
+
+
+
+
+-
+get_guild(id, /)
+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, /)
+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
]
+
+
+
+
+
+-
+await try_user(id, /)
+This function is a coroutine.
+Returns a user with the given ID. If not from cache, the user will be requested from the API.
+You do not have to share any guilds with the user to get this information from the API,
+however many operations do require that you do.
+
+
+
+- Parameters
+id (int
) – The ID to search for.
+
+- Returns
+The user or None
if not found.
+
+- Return type
+Optional[User
]
+
+
+
+
+
+-
+get_emoji(id, /)
+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, /)
+Returns a guild sticker with the given ID.
+
+
+
+- Returns
+The sticker or None
if not found.
+
+- Return type
+Optional[GuildSticker
]
+
+
+
+
+
+-
+for ... in get_all_channels()
+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
+
+
+
+
+- Yields
+abc.GuildChannel
– A channel the client can ‘access’.
+
+
+
+
+
+-
+for ... in get_all_members()
+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.
+
+
+
+
+
+-
+await wait_until_ready()
+This function is a coroutine.
+Waits until the client’s internal cache is all ready.
+
+
+
+-
+wait_for(event, *, check=None, timeout=None)
+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)
+This function is a coroutine.
+Changes the client’s presence.
+Example
+game = discord.Game("with the API")
+await client.change_presence(status=discord.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
+InvalidArgument – If the activity
parameter is not the proper type.
+
+
+
+
+
+-
+await fetch_template(code)
+This function is a coroutine.
+Gets 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, /)
+This function is a coroutine.
+Retrieves a Guild
from an ID.
+
+
+
Note
+
This method is an API call. For general usage, consider get_guild()
instead.
+
+
+- Parameters
+guild_id (int
) – The guild’s ID to fetch from.
+
+- Raises
+-
+
+- Returns
+The guild from the ID.
+
+- Return type
+Guild
+
+
+
+
+
+-
+await create_guild(*, name, region=<VoiceRegion.us_west: 'us-west'>, icon=..., code=...)
+This function is a coroutine.
+Creates a Guild
.
+Bot accounts in more than 10 guilds are not allowed to create guilds.
+
+- Parameters
+-
+
+- Raises
+-
+
+- Returns
+The guild created. This is not the same guild that is
+added to cache.
+
+- Return type
+Guild
+
+
+
+
+
+-
+await fetch_stage_instance(channel_id, /)
+This function is a coroutine.
+Gets a StageInstance
for a stage channel id.
+
+
+- Parameters
+channel_id (int
) – The stage channel ID.
+
+- Raises
+-
+
+- Returns
+The stage instance from the stage channel ID.
+
+- Return type
+StageInstance
+
+
+
+
+
+-
+await fetch_invite(url, *, with_counts=True, with_expiration=True)
+This function is a coroutine.
+Gets an Invite
from a discord.gg URL or ID.
+
+
+- Parameters
+-
+
+- Raises
+-
+
+- Returns
+The invite from the URL/ID.
+
+- Return type
+Invite
+
+
+
+
+
+-
+await delete_invite(invite)
+This function is a coroutine.
+Revokes an Invite
, URL, or ID to an invite.
+You must have the 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_widget(guild_id, /)
+This function is a coroutine.
+Gets a Widget
from a 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()
+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, /)
+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.
+
+
+- Parameters
+user_id (int
) – The user’s ID to fetch from.
+
+- Raises
+-
+
+- Returns
+The user you requested.
+
+- Return type
+User
+
+
+
+
+
+-
+await fetch_channel(channel_id, /)
+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.
+
+
+
+- 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, /)
+This function is a coroutine.
+Retrieves a Webhook
with the specified ID.
+
+- Raises
+-
+
+- Returns
+The webhook you requested.
+
+- Return type
+Webhook
+
+
+
+
+
+-
+await fetch_sticker(sticker_id, /)
+This function is a coroutine.
+Retrieves a Sticker
with the specified ID.
+
+
+- Raises
+-
+
+- Returns
+The sticker you requested.
+
+- Return type
+Union[StandardSticker
, GuildSticker
]
+
+
+
+
+
+-
+await fetch_premium_sticker_packs()
+This function is a coroutine.
+Retrieves all available premium sticker packs.
+
+
+- Raises
+HTTPException – Retrieving the sticker packs failed.
+
+- Returns
+All available premium sticker packs.
+
+- Return type
+List[StickerPack
]
+
+
+
+
+
+-
+await create_dm(user)
+This function is a coroutine.
+Creates a DMChannel
with this user.
+This should be rarely called, as this is done transparently for most
+people.
+
+
+- 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)
+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.
+
+
+- Parameters
+
+view (discord.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
+-
+
+
+
+
+
+-
+property persistent_views
+A sequence of persistent views added to the client.
+
+
+- Type
+Sequence[View
]
+
+
+
+
+
+
+
+
+AutoShardedClient
+
+-
+class discord.AutoShardedClient(*args, loop=None, **kwargs)
+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
+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
+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)
+Optional[ShardInfo
]: Gets the shard information at a given shard ID or None
if not found.
+
+
+
+-
+property shards
+Returns a mapping of shard IDs to their respective info object.
+
+- Type
+Mapping[int, ShardInfo
]
+
+
+
+
+
+-
+await connect(*, reconnect=True)
+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.
+
+- Parameters
+reconnect (bool
) – If we should attempt reconnecting, 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).
+
+- Raises
+-
+
+
+
+
+
+-
+await close()
+This function is a coroutine.
+Closes the connection to Discord.
+
+
+
+-
+await change_presence(*, activity=None, status=None, shard_id=None)
+This function is a coroutine.
+Changes the client’s presence.
+Example:
+game = discord.Game("with the API")
+await client.change_presence(status=discord.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.
+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
+InvalidArgument – If the activity
parameter is not of proper type.
+
+
+
+
+
+-
+is_ws_ratelimited()
+bool
: 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()
.
+
+
+
+
+
+
+
+
+Application Info
+
+AppInfo
+
+-
+class discord.AppInfo
+Represents the application info for the bot provided by Discord.
+
+-
+id
+The application ID.
+
+- Type
+int
+
+
+
+
+
+-
+name
+The application name.
+
+- Type
+str
+
+
+
+
+
+-
+owner
+The application owner.
+
+- Type
+User
+
+
+
+
+
+-
+team
+The application’s team.
+
+
+- Type
+Optional[Team
]
+
+
+
+
+
+-
+description
+The application 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
]]
+
+
+
+
+
+-
+summary
+If this application is a game sold on Discord,
+this field will be the summary field for the store page of its primary SKU.
+
+
+- Type
+str
+
+
+
+
+
+-
+verify_key
+The hex encoded key for verification in interactions and the
+GameSDK’s GetTicket.
+
+
+- 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.
+
+
+- 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.
+
+
+- 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.
+
+
+- Type
+Optional[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
+Retrieves the application’s icon asset, if any.
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+-
+property cover_image
+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
+If this application is a game sold on Discord,
+this field will be the guild to which it has been linked
+
+
+- Type
+Optional[Guild
]
+
+
+
+
+
+
+
+
+PartialAppInfo
+
+-
+class discord.PartialAppInfo
+Represents a partial AppInfo given by create_invite()
+
+
+-
+id
+The application ID.
+
+- Type
+int
+
+
+
+
+
+-
+name
+The application name.
+
+- Type
+str
+
+
+
+
+
+-
+description
+The application description.
+
+- Type
+str
+
+
+
+
+
+-
+rpc_origins
+A list of RPC origin URLs, if RPC is enabled.
+
+- Type
+Optional[List[str
]]
+
+
+
+
+
+-
+summary
+If this application is a game sold on Discord,
+this field will be the summary field for the store page of its primary SKU.
+
+- Type
+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
+Retrieves the application’s icon asset, if any.
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+
+
+
+Team
+
+-
+class discord.Team
+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
+
+
+- Type
+List[TeamMember
]
+
+
+
+
+
+-
+property icon
+Retrieves the team’s icon asset, if any.
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+-
+property owner
+The team’s owner.
+
+- Type
+Optional[TeamMember
]
+
+
+
+
+
+
+
+
+TeamMember
+
+-
+class discord.TeamMember
+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.
+
+
+
+
+
+-
+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
+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
+
+
+
+
+
+
+
+
+
+
+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 discord
+
+class MyClient(discord.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.
+
+
+Networking
+
+-
+discord.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.
+
+
+
+-
+discord.on_shard_connect(shard_id)
+Similar to on_connect()
except used by AutoShardedClient
+to denote when a particular shard ID has connected to Discord.
+
+
+- Parameters
+shard_id (int
) – The shard ID that has connected.
+
+
+
+
+
+-
+discord.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.
+
+
+
+-
+discord.on_shard_disconnect(shard_id)
+Similar to on_disconnect()
except used by AutoShardedClient
+to denote when a particular shard ID has disconnected from Discord.
+
+
+- Parameters
+shard_id (int
) – The shard ID that has disconnected.
+
+
+
+
+
+-
+discord.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.
+
+
+
+
+-
+discord.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.
+
+
+
+
+
+-
+discord.on_resumed()
+Called when the client has resumed a session.
+
+
+
+-
+discord.on_shard_resumed(shard_id)
+Similar to on_resumed()
except used by AutoShardedClient
+to denote when a particular shard ID has resumed a session.
+
+
+- Parameters
+shard_id (int
) – The shard ID that has resumed.
+
+
+
+
+
+-
+discord.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
.
+
+
+- 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.
+
+
+
+
+
+
+-
+discord.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.
+
+
+- Parameters
+event_type (str
) – The event type from Discord that is received, e.g. 'READY'
.
+
+
+
+
+
+-
+discord.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.
+
+
+
+
+
+-
+discord.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.
+
+
+
+
+
+-
+discord.on_typing(channel, user, when)
+Called when someone begins typing a message.
+The channel
parameter can be a abc.Messageable
instance.
+Which could either be TextChannel
, GroupChannel
, or
+DMChannel
.
+If the channel
is a TextChannel
then the user
parameter
+is a Member
, otherwise it is a User
.
+This requires Intents.typing
to be enabled.
+
+- Parameters
+
+channel (abc.Messageable
) – The location where the typing originated from.
+user (Union[User
, Member
]) – The user that started typing.
+when (datetime.datetime
) – When the typing started as an aware datetime in UTC.
+
+
+
+
+
+
+-
+discord.on_raw_typing(payload)
+Called when someone begins typing a message. Unlike on_typing()
, this is
+called regardless if the user can be found or not. This most often happens
+when a user types in DMs.
+This requires Intents.typing
to be enabled.
+
+- Parameters
+payload (RawTypingEvent
) – The raw typing payload.
+
+
+
+
+
+
+Messages
+
+-
+discord.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.
+
+
+- Parameters
+message (Message
) – The current message.
+
+
+
+
+
+-
+discord.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.
+
+- Parameters
+message (Message
) – The deleted message.
+
+
+
+
+
+-
+discord.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.
+
+
+
+
+
+-
+discord.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.
+
+
+
+
+
+-
+discord.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.
+
+
+
+
+
+-
+discord.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.
+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.
+
+
+
+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
+-
+
+
+
+
+
+-
+discord.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.
+
+
+
+
+
+-
+discord.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.
+
+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.
+
+
+
+
+
+
+-
+discord.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.
+
+
+
+
+
+-
+discord.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.
+
+This requires both Intents.reactions
and Intents.members
to be enabled.
+
+
+- Parameters
+
+reaction (Reaction
) – The current state of the reaction.
+user (Union[Member
, User
]) – The user who added the reaction.
+
+
+
+
+
+
+-
+discord.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.
+
+
+
+
+
+-
+discord.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
+-
+
+
+
+
+
+-
+discord.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.
+
+
+
+
+
+-
+discord.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.
+
+
+- Parameters
+reaction (Reaction
) – The reaction that got cleared.
+
+
+
+
+
+-
+discord.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.
+
+
+- Parameters
+payload (RawReactionClearEmojiEvent
) – The raw event payload data.
+
+
+
+
+
+-
+discord.on_interaction(interaction)
+Called when an interaction happened.
+This currently happens due to slash command invocations or components being used.
+
+
Warning
+
This is a low level function that is not generally meant to be used.
+If you are working with components, consider using the callbacks associated
+with the View
instead as it provides a nicer user experience.
+
+
+
+- Parameters
+interaction (Interaction
) – The interaction data.
+
+
+
+
+
+-
+discord.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
+-
+
+
+
+
+
+-
+discord.on_private_channel_pins_update(channel, last_pin)
+Called whenever a message is pinned or unpinned from a private channel.
+
+- Parameters
+-
+
+
+
+
+
+-
+discord.on_guild_channel_delete(channel)
+-
+discord.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.
+
+
+
+
+
+-
+discord.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
+-
+
+
+
+
+
+-
+discord.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
.
+
+
+
+
+
+
+-
+discord.on_thread_join(thread)
+Called whenever a thread is joined or created. Note that from the API’s perspective there is no way to
+differentiate between a thread being created or the bot joining a thread.
+Note that you can get the guild from Thread.guild
.
+This requires Intents.guilds
to be enabled.
+
+
+- Parameters
+thread (Thread
) – The thread that got joined.
+
+
+
+
+
+-
+discord.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.
+
+
+
+- Parameters
+thread (Thread
) – The thread that got removed.
+
+
+
+
+
+-
+discord.on_thread_delete(thread)
+Called whenever a thread is deleted.
+Note that you can get the guild from Thread.guild
.
+This requires Intents.guilds
to be enabled.
+
+
+- Parameters
+thread (Thread
) – The thread that got deleted.
+
+
+
+
+
+-
+discord.on_thread_member_join(member)
+-
+discord.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
.
+This requires Intents.members
to be enabled.
+
+
+- Parameters
+member (ThreadMember
) – The member who joined or left.
+
+
+
+
+
+-
+discord.on_thread_update(before, after)
+Called whenever a thread is updated.
+This requires Intents.guilds
to be enabled.
+
+
+- Parameters
+-
+
+
+
+
+
+-
+discord.on_guild_integrations_update(guild)
+Called whenever an integration is created, modified, or removed from a guild.
+This requires Intents.integrations
to be enabled.
+
+
+- Parameters
+guild (Guild
) – The guild that had its integrations updated.
+
+
+
+
+
+-
+discord.on_integration_create(integration)
+Called when an integration is created.
+This requires Intents.integrations
to be enabled.
+
+
+- Parameters
+integration (Integration
) – The integration that was created.
+
+
+
+
+
+-
+discord.on_integration_update(integration)
+Called when an integration is updated.
+This requires Intents.integrations
to be enabled.
+
+
+- Parameters
+integration (Integration
) – The integration that was created.
+
+
+
+
+
+-
+discord.on_raw_integration_delete(payload)
+Called when an integration is deleted.
+This requires Intents.integrations
to be enabled.
+
+
+- Parameters
+payload (RawIntegrationDeleteEvent
) – The raw event payload data.
+
+
+
+
+
+-
+discord.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.
+
+
+
+
+
+-
+discord.on_member_join(member)
+-
+discord.on_member_remove(member)
+Called when a Member
leaves or joins a Guild
.
+This requires Intents.members
to be enabled.
+
+- Parameters
+member (Member
) – The member who joined or left.
+
+
+
+
+
+-
+discord.on_member_update(before, after)
+Called when a Member
updates their profile.
+This is called when one or more of the following things change:
+
+nickname
+roles
+pending
+
+This requires Intents.members
to be enabled.
+
+- Parameters
+-
+
+
+
+
+
+-
+discord.on_presence_update(before, after)
+Called when a Member
updates their presence.
+This is called when one or more of the following things change:
+
+This requires Intents.presences
and Intents.members
to be enabled.
+
+
+- Parameters
+-
+
+
+
+
+
+-
+discord.on_user_update(before, after)
+Called when a User
updates their profile.
+This is called when one or more of the following things change:
+
+avatar
+username
+discriminator
+
+This requires Intents.members
to be enabled.
+
+- Parameters
+-
+
+
+
+
+
+-
+discord.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.
+
+
+
+
+
+-
+discord.on_guild_remove(guild)
+Called when a Guild
is removed from the Client
.
+This happens through, but not limited to, these circumstances:
+
+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.
+
+
+
+
+
+-
+discord.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
+-
+
+
+
+
+
+-
+discord.on_guild_role_create(role)
+-
+discord.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.
+
+
+
+
+
+-
+discord.on_guild_role_update(before, after)
+Called when a Role
is changed guild-wide.
+This requires Intents.guilds
to be enabled.
+
+- Parameters
+-
+
+
+
+
+
+-
+discord.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.
+
+
+
+
+
+
+-
+discord.on_guild_stickers_update(guild, before, after)
+Called when a Guild
updates its stickers.
+This requires Intents.emojis_and_stickers
to be enabled.
+
+
+- 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.
+
+
+
+
+
+
+-
+discord.on_guild_available(guild)
+-
+discord.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.
+
+
+
+
+
+-
+discord.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.
+
+
+
+
+
+
+-
+discord.on_stage_instance_create(stage_instance)
+-
+discord.on_stage_instance_delete(stage_instance)
+Called when a StageInstance
is created or deleted for a StageChannel
.
+
+
+- Parameters
+stage_instance (StageInstance
) – The stage instance that was created or deleted.
+
+
+
+
+
+-
+discord.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:
+
+
+
+- Parameters
+-
+
+
+
+
+
+-
+discord.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 if
+the user was in the guild or not at the time of removal.
+
+
+
+
+
+
+-
+discord.on_member_unban(guild, user)
+Called when a User
gets unbanned from a Guild
.
+This requires Intents.bans
to be enabled.
+
+- Parameters
+-
+
+
+
+
+
+-
+discord.on_invite_create(invite)
+Called when an Invite
is created.
+You must have the manage_channels
permission to receive this.
+
+
+This requires Intents.invites
to be enabled.
+
+- Parameters
+invite (Invite
) – The invite that was created.
+
+
+
+
+
+-
+discord.on_invite_delete(invite)
+Called when an Invite
is deleted.
+You must have the manage_channels
permission to receive this.
+
+
+
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.
+
+
+
+
+
+-
+discord.on_group_join(channel, user)
+-
+discord.on_group_remove(channel, user)
+Called when someone joins or leaves a GroupChannel
.
+
+- Parameters
+-
+
+
+
+
+
+
+
+Utility Functions
+
+-
+discord.utils.find(predicate, seq)
+A helper to return the first element found in the sequence
+that meets the predicate. For example:
+member = discord.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
+-
+
+
+
+
+
+-
+discord.utils.get(iterable, **attrs)
+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 = discord.utils.get(message.guild.members, name='Foo')
+
+
+Multiple attribute matching:
+channel = discord.utils.get(guild.voice_channels, name='Foo', bitrate=64000)
+
+
+Nested attribute matching:
+channel = discord.utils.get(client.get_all_channels(), guild__name='Cool', name='general')
+
+
+
+- Parameters
+-
+
+
+
+
+
+-
+discord.utils.snowflake_time(id)
+
+- Parameters
+id (int
) – The snowflake ID.
+
+- Returns
+An aware datetime in UTC representing the creation time of the snowflake.
+
+- Return type
+datetime.datetime
+
+
+
+
+
+-
+discord.utils.oauth_url(client_id, *, permissions=..., guild=..., redirect_uri=..., scopes=..., disable_guild_select=False)
+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',)
.
+
+
+disable_guild_select (bool
) –
Whether to disallow the user from changing the guild dropdown.
+
+
+
+
+- Returns
+The OAuth2 URL for inviting the bot into guilds.
+
+- Return type
+str
+
+
+
+
+
+-
+discord.utils.remove_markdown(text, *, ignore_links=True)
+A helper function that removes markdown characters.
+
+
+
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
+
+
+
+
+
+-
+discord.utils.escape_markdown(text, *, as_needed=False, ignore_links=True)
+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
+
+
+
+
+
+-
+discord.utils.escape_mentions(text)
+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
+
+
+
+
+
+-
+discord.utils.resolve_invite(invite)
+Resolves an invite from a Invite
, URL or code.
+
+- Parameters
+invite (Union[Invite
, str
]) – The invite.
+
+- Returns
+The invite code.
+
+- Return type
+str
+
+
+
+
+
+-
+discord.utils.resolve_template(code)
+Resolves a template code from a Template
, URL or code.
+
+
+- Parameters
+code (Union[Template
, str
]) – The code.
+
+- Returns
+The template code.
+
+- Return type
+str
+
+
+
+
+
+-
+await discord.utils.sleep_until(when, result=None)
+This function is a coroutine.
+Sleep until a specified time.
+If the time supplied is in the past this function will yield instantly.
+
+
+- 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.
+
+
+
+
+
+
+-
+discord.utils.utcnow()
+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.
+
+
+- Returns
+The current aware datetime in UTC.
+
+- Return type
+datetime.datetime
+
+
+
+
+
+-
+discord.utils.format_dt(dt, /, style=None)
+A helper function to format a datetime.datetime
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.
+
+
+- Parameters
+-
+
+- Returns
+The formatted string.
+
+- Return type
+str
+
+
+
+
+
+-
+discord.utils.as_chunks(iterator, max_size)
+A helper function that collects an iterator into chunks of a given size.
+
+
+- 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
]
+
+
+
+
+
+
+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 discord.ChannelType
+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.
+
+
+
+-
+store
+A guild store channel.
+
+
+
+-
+stage_voice
+A guild stage voice channel.
+
+
+
+
+-
+news_thread
+A news thread
+
+
+
+
+-
+public_thread
+A public thread
+
+
+
+
+-
+private_thread
+A private thread
+
+
+
+
+
+
+-
+class discord.MessageType
+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.
+
+
+
+
+-
+guild_stream
+The system message denoting that a member is streaming in the guild.
+
+
+
+
+-
+guild_discovery_disqualified
+The system message denoting that the guild is no longer eligible for Server
+Discovery.
+
+
+
+
+-
+guild_discovery_requalified
+The system message denoting that the guild has become eligible again for Server
+Discovery.
+
+
+
+
+-
+guild_discovery_grace_period_initial_warning
+The system message denoting that the guild has failed to meet the Server
+Discovery requirements for one week.
+
+
+
+
+-
+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.
+
+
+
+
+-
+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.
+
+
+
+
+-
+reply
+The system message denoting that the author is replying to a message.
+
+
+
+
+-
+application_command
+The system message denoting that an application (or “slash”) command was executed.
+
+
+
+
+-
+guild_invite_reminder
+The system message sent as a reminder to invite people to the guild.
+
+
+
+
+-
+thread_starter_message
+The system message denoting the message in the thread that is the one that started the
+thread’s conversation topic.
+
+
+
+
+
+
+-
+class discord.UserFlags
+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.
+
+
+
+
+
+-
+class discord.ActivityType
+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.
+
+
+
+
+
+
+-
+class discord.InteractionType
+Specifies the type of Interaction
.
+
+
+-
+ping
+Represents Discord pinging to see if the interaction response server is alive.
+
+
+
+-
+application_command
+Represents a slash command interaction.
+
+
+
+-
+component
+Represents a component based interaction, i.e. using the Discord Bot UI Kit.
+
+
+
+
+
+-
+class discord.InteractionResponseType
+Specifies the response type for the interaction.
+
+
+-
+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()
+
+
+
+
+
+-
+class discord.ComponentType
+Represents the component type of a component.
+
+
+-
+action_row
+Represents the group component which holds different components in a row.
+
+
+
+-
+button
+Represents a button component.
+
+
+
+-
+select
+Represents a select component.
+
+
+
+
+
+-
+class discord.ButtonStyle
+Represents the style of the button component.
+
+
+-
+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.
+
+
+
+-
+link
+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 discord.VoiceRegion
+Specifies the region a voice server belongs to.
+
+-
+amsterdam
+The Amsterdam region.
+
+
+
+-
+brazil
+The Brazil region.
+
+
+
+-
+dubai
+The Dubai region.
+
+
+
+
+-
+eu_central
+The EU Central region.
+
+
+
+-
+eu_west
+The EU West region.
+
+
+
+-
+europe
+The Europe region.
+
+
+
+
+-
+frankfurt
+The Frankfurt region.
+
+
+
+-
+hongkong
+The Hong Kong region.
+
+
+
+-
+india
+The India region.
+
+
+
+
+-
+japan
+The Japan region.
+
+
+
+-
+london
+The London region.
+
+
+
+-
+russia
+The Russia region.
+
+
+
+-
+singapore
+The Singapore region.
+
+
+
+-
+southafrica
+The South Africa region.
+
+
+
+-
+south_korea
+The South Korea region.
+
+
+
+-
+sydney
+The Sydney region.
+
+
+
+-
+us_central
+The US Central region.
+
+
+
+-
+us_east
+The US East region.
+
+
+
+-
+us_south
+The US South region.
+
+
+
+-
+us_west
+The US West region.
+
+
+
+-
+vip_amsterdam
+The Amsterdam region for VIP guilds.
+
+
+
+-
+vip_us_east
+The US East region for VIP guilds.
+
+
+
+-
+vip_us_west
+The US West region for VIP guilds.
+
+
+
+
+
+-
+class discord.VerificationLevel
+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.
+
+
+
+-
+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 discord.NotificationLevel
+Specifies whether a Guild
has notifications on for all messages or mentions only by default.
+
+
+
+-
+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 discord.ContentFilter
+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.
+
+
+
+-
+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 discord.Status
+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.
+
+
+
+
+
+-
+class discord.AuditLogAction
+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:
+
+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
:
+
+
+
+
+-
+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
:
+
+
+
+
+-
+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
:
+
+
+
+
+-
+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:
+
+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:
+
+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:
+
+
+
+
+
+-
+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:
+
+
+
+
+
+-
+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.
+
+
+
+
+-
+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:
+
+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 Role
or a 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 Object
with the webhook ID.
+Possible attributes for AuditLogDiff
:
+
+
+
+
+-
+webhook_update
+A webhook was updated. This trigger in the following situations:
+
+When this is the action, the type of target
is
+the Object
with the webhook ID.
+Possible attributes for AuditLogDiff
:
+
+
+
+
+-
+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
:
+
+
+
+
+-
+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:
+
+
+
+
+-
+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:
+
+
+
+
+
+-
+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:
+
+
+
+
+
+-
+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:
+
+
+
+
+
+-
+integration_create
+A guild integration was created.
+When this is the action, the type of target
is
+the Object
with the integration ID of the integration which was created.
+
+
+
+
+-
+integration_update
+A guild integration was updated.
+When this is the action, the type of target
is
+the Object
with the integration ID of the integration which was updated.
+
+
+
+
+-
+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.
+
+
+
+
+-
+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.
+Possible attributes for AuditLogDiff
:
+
+
+
+
+
+-
+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.
+Possible attributes for AuditLogDiff
:
+
+
+
+
+
+-
+stage_instance_delete
+A stage instance was ended.
+
+
+
+
+-
+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 updated.
+Possible attributes for AuditLogDiff
:
+
+
+
+
+
+-
+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
:
+
+
+
+
+
+-
+sticker_delete
+A sticker was deleted.
+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
:
+
+
+
+
+
+-
+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
:
+
+
+
+
+
+-
+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
:
+
+
+
+
+
+-
+thread_delete
+A thread was deleted.
+When this is the action, the type of target
is
+the Thread
or Object
with the ID of the thread which
+was deleted.
+Possible attributes for AuditLogDiff
:
+
+
+
+
+
+
+
+-
+class discord.AuditLogActionCategory
+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 discord.TeamMembershipState
+Represents the membership state of a team member retrieved through Client.application_info()
.
+
+
+-
+invited
+Represents an invited member.
+
+
+
+-
+accepted
+Represents a member currently in the team.
+
+
+
+
+
+-
+class discord.WebhookType
+Represents the type of webhook that can be received.
+
+
+-
+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.
+
+
+
+
+
+
+-
+class discord.ExpireBehaviour
+Represents the behaviour the Integration
should perform
+when a user’s subscription has finished.
+There is an alias for this called ExpireBehavior
.
+
+
+-
+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 discord.DefaultAvatar
+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 discord.StickerType
+Represents the type of sticker.
+
+
+-
+standard
+Represents a standard sticker that all Nitro users can use.
+
+
+
+-
+guild
+Represents a custom sticker created in a guild.
+
+
+
+
+
+-
+class discord.StickerFormatType
+Represents the type of sticker images.
+
+
+-
+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 discord.InviteTarget
+Represents the invite type for voice channel invites.
+
+
+-
+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 discord.VideoQualityMode
+Represents the camera video quality mode for voice channel participants.
+
+
+-
+auto
+Represents auto camera video quality.
+
+
+
+-
+full
+Represents full camera video quality.
+
+
+
+
+
+-
+class discord.StagePrivacyLevel
+Represents a stage instance’s privacy level.
+
+
+-
+public
+The stage instance can be joined by external users.
+
+
+
+-
+closed
+The stage instance can only be joined by members of the guild.
+
+
+
+-
+guild_only
+Alias for closed
+
+
+
+
+
+-
+class discord.NSFWLevel
+Represents the NSFW level of a guild.
+
+
+
+-
+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.
+
+
+
+
+
+
+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 discord.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
+list
s of a given size. The maximum chunk size must be a positive integer.
+
+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 discord.AuditLogEntry(*, users, data, guild)
+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.
+
+
+
+-
+int(x)
+Returns the entry’s ID.
+
+
+
+
+
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
+
+
+
+
+
+-
+reason
+The reason this action was done.
+
+- Type
+Optional[str
]
+
+
+
+
+
+
+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
+
+
+
+
+
+-
+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
+
+-
+class discord.AuditLogChanges
+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 discord.AuditLogDiff
+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 icon. See also Guild.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
+VoiceRegion
+
+
+
+
+
+-
+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[TextChannel
, Object
]
+
+
+
+
+
+-
+verification_level
+The guild’s verification level.
+See also Guild.verification_level
.
+
+- Type
+VerificationLevel
+
+
+
+
+
+-
+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.
+See also Guild.vanity_invite()
and Guild.edit()
.
+
+- Type
+str
+
+
+
+
+
+-
+position
+The position of a Role
or abc.GuildChannel
.
+
+- Type
+int
+
+
+
+
+
+-
+type
+The type of channel or sticker.
+
+- Type
+Union[ChannelType
, StickerType
]
+
+
+
+
+
+-
+topic
+The topic of a TextChannel
or StageChannel
.
+See also TextChannel.topic
or StageChannel.topic
.
+
+- Type
+str
+
+
+
+
+
+-
+bitrate
+The bitrate of a VoiceChannel
.
+See also VoiceChannel.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[target, PermissionOverwrite
]]
+
+
+
+
+
+-
+privacy_level
+The privacy level of the stage instance.
+
+- Type
+StagePrivacyLevel
+
+
+
+
+
+-
+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
+
+- Type
+bool
+
+
+
+
+
+-
+code
+The invite’s code.
+See also Invite.code
+
+- Type
+str
+
+
+
+
+
+-
+channel
+A guild channel.
+If the channel is not found then it is a Object
with the ID
+being set. In some cases the channel name is also set.
+
+- Type
+Union[abc.GuildChannel
, Object
]
+
+
+
+
+
+-
+inviter
+The user who created the invite.
+See also Invite.inviter
.
+
+- Type
+Optional[User
]
+
+
+
+
+
+-
+max_uses
+The invite’s max uses.
+See also Invite.max_uses
.
+
+- Type
+int
+
+
+
+
+
+-
+uses
+The invite’s current uses.
+See also Invite.uses
.
+
+- Type
+int
+
+
+
+
+
+-
+max_age
+The invite’s max age in seconds.
+See also Invite.max_age
.
+
+- Type
+int
+
+
+
+
+
+-
+temporary
+If the invite is a temporary invite.
+See also Invite.temporary
.
+
+- Type
+bool
+
+
+
+
+
+-
+allow
+-
+deny
+The permissions being allowed or denied.
+
+- Type
+Permissions
+
+
+
+
+
+-
+id
+The ID of the object being changed.
+
+- Type
+int
+
+
+
+
+
+-
+avatar
+The avatar of a member.
+See also User.avatar
.
+
+- Type
+Asset
+
+
+
+
+
+-
+slowmode_delay
+The number of seconds members have to wait before
+sending another message in the channel.
+See also TextChannel.slowmode_delay
.
+
+- Type
+int
+
+
+
+
+
+-
+rtc_region
+The region for the voice channel’s voice communication.
+A value of None
indicates automatic voice region detection.
+See also VoiceChannel.rtc_region
.
+
+- Type
+VoiceRegion
+
+
+
+
+
+-
+video_quality_mode
+The camera video quality for the voice channel’s participants.
+See also VoiceChannel.video_quality_mode
.
+
+- Type
+VideoQualityMode
+
+
+
+
+
+-
+format_type
+The format type of a sticker being changed.
+See also GuildSticker.format
+
+- Type
+StickerFormatType
+
+
+
+
+
+-
+emoji
+The name of the emoji that represents a sticker being changed.
+See also GuildSticker.emoji
+
+- Type
+str
+
+
+
+
+
+-
+description
+The description of a sticker being changed.
+See also GuildSticker.description
+
+- Type
+str
+
+
+
+
+
+-
+available
+The availability of a sticker being changed.
+See also GuildSticker.available
+
+- Type
+bool
+
+
+
+
+
+-
+archived
+The thread is now archived.
+
+- Type
+bool
+
+
+
+
+
+-
+locked
+The thread is being locked or unlocked.
+
+- Type
+bool
+
+
+
+
+
+-
+auto_archive_duration
+The thread’s auto archive duration being changed.
+See also Thread.auto_archive_duration
+
+- Type
+int
+
+
+
+
+
+-
+default_auto_archive_duration
+The default auto archive duration for newly created threads being changed.
+
+- Type
+int
+
+
+
+
+
+
+
+
+
+Webhook Support
+discord.py offers support for creating, editing, and executing webhooks through the Webhook
class.
+
+Webhook
+
+-
+class discord.Webhook
+Represents an asynchronous Discord webhook.
+Webhooks are a form to send messages to channels in Discord without a
+bot user or authentication.
+There are two main ways to use Webhooks. The first is through the ones
+received by the library such as Guild.webhooks()
and
+TextChannel.webhooks()
. The ones received by the library will
+automatically be bound using the library’s internal HTTP session.
+The second form involves creating a webhook object manually using the
+from_url()
or partial()
classmethods.
+For example, creating a webhook from a URL and using aiohttp:
+from discord import Webhook
+import aiohttp
+
+async def foo():
+ async with aiohttp.ClientSession() as session:
+ webhook = Webhook.from_url('url-here', session=session)
+ await webhook.send('Hello World', username='Foo')
+
+
+For a synchronous counterpart, see SyncWebhook
.
+
+
+-
+x == y
+Checks if two webhooks are equal.
+
+
+
+-
+x != y
+Checks if two webhooks are not equal.
+
+
+
+-
+hash(x)
+Returns the webhooks’s hash.
+
+
+
+-
+int(x)
+Returns the webhooks’s ID.
+
+
+
+
+
Changed in version 1.4: Webhooks are now comparable and hashable.
+
+
+-
+id
+The webhook’s ID
+
+- Type
+int
+
+
+
+
+
+-
+type
+The type of the webhook.
+
+
+- Type
+WebhookType
+
+
+
+
+
+-
+token
+The authentication token of the webhook. If this is None
+then the webhook cannot be used to make requests.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+guild_id
+The guild ID this webhook is for.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+channel_id
+The channel ID this webhook is for.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+user
+The user this webhook was created by. If the webhook was
+received without authentication then this will be None
.
+
+- Type
+Optional[abc.User
]
+
+
+
+
+
+-
+name
+The default name of the webhook.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+source_guild
+The guild of the channel that this webhook is following.
+Only given if type
is WebhookType.channel_follower
.
+
+
+- Type
+Optional[PartialWebhookGuild
]
+
+
+
+
+
+-
+source_channel
+The channel that this webhook is following.
+Only given if type
is WebhookType.channel_follower
.
+
+
+- Type
+Optional[PartialWebhookChannel
]
+
+
+
+
+
+-
+property url
+Returns the webhook’s url.
+
+- Type
+str
+
+
+
+
+
+-
+classmethod partial(id, token, *, session, bot_token=None)
+Creates a partial Webhook
.
+
+- Parameters
+
+id (int
) – The ID of the webhook.
+token (str
) – The authentication token of the webhook.
+session (aiohttp.ClientSession
) –
The session to use to send requests with. Note
+that the library does not manage the session and
+will not close it.
+
+
+bot_token (Optional[str
]) –
The bot authentication token for authenticated requests
+involving the webhook.
+
+
+
+
+- Returns
+A partial Webhook
.
+A partial webhook is just a webhook object with an ID and a token.
+
+- Return type
+Webhook
+
+
+
+
+
+-
+classmethod from_url(url, *, session, bot_token=None)
+Creates a partial Webhook
from a webhook URL.
+
+- Parameters
+
+url (str
) – The URL of the webhook.
+session (aiohttp.ClientSession
) –
The session to use to send requests with. Note
+that the library does not manage the session and
+will not close it.
+
+
+bot_token (Optional[str
]) –
The bot authentication token for authenticated requests
+involving the webhook.
+
+
+
+
+- Raises
+InvalidArgument – The URL is invalid.
+
+- Returns
+A partial Webhook
.
+A partial webhook is just a webhook object with an ID and a token.
+
+- Return type
+Webhook
+
+
+
+
+
+-
+await fetch(*, prefer_auth=True)
+This function is a coroutine.
+Fetches the current webhook.
+This could be used to get a full webhook from a partial webhook.
+
+
+
Note
+
When fetching with an unauthenticated webhook, i.e.
+is_authenticated()
returns False
, then the
+returned webhook does not contain any user information.
+
+
+- Parameters
+prefer_auth (bool
) – Whether to use the bot token over the webhook token
+if available. Defaults to True
.
+
+- Raises
+-
+
+- Returns
+The fetched webhook.
+
+- Return type
+Webhook
+
+
+
+
+
+-
+await delete(*, reason=None, prefer_auth=True)
+This function is a coroutine.
+Deletes this Webhook.
+
+- Parameters
+-
+
+- Raises
+
+HTTPException – Deleting the webhook failed.
+NotFound – This webhook does not exist.
+Forbidden – You do not have permissions to delete this webhook.
+InvalidArgument – This webhook does not have a token associated with it.
+
+
+
+
+
+
+-
+await edit(*, reason=None, name=..., avatar=..., channel=None, prefer_auth=True)
+This function is a coroutine.
+Edits this Webhook.
+
+- Parameters
+
+name (Optional[str
]) – The webhook’s new default name.
+avatar (Optional[bytes
]) – A bytes-like object representing the webhook’s new default avatar.
+channel (Optional[abc.Snowflake
]) –
The webhook’s new channel. This requires an authenticated webhook.
+
+
+reason (Optional[str
]) –
The reason for editing this webhook. Shows up on the audit log.
+
+
+prefer_auth (bool
) –
Whether to use the bot token over the webhook token
+if available. Defaults to True
.
+
+
+
+
+- Raises
+
+HTTPException – Editing the webhook failed.
+NotFound – This webhook does not exist.
+InvalidArgument – This webhook does not have a token associated with it
+ or it tried editing a channel without authentication.
+
+
+
+
+
+
+-
+property avatar
+Returns an Asset
for the avatar the webhook has.
+If the webhook does not have a traditional avatar, an asset for
+the default avatar is returned instead.
+
+- Type
+Asset
+
+
+
+
+
+-
+property channel
+The text channel this webhook belongs to.
+If this is a partial webhook, then this will always return None
.
+
+- Type
+Optional[TextChannel
]
+
+
+
+
+
+-
+property created_at
+Returns the webhook’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+property guild
+The guild this webhook belongs to.
+If this is a partial webhook, then this will always return None
.
+
+- Type
+Optional[Guild
]
+
+
+
+
+
+-
+is_authenticated()
+bool
: Whether the webhook is authenticated with a bot token.
+
+
+
+
+-
+is_partial()
+bool
: Whether the webhook is a “partial” webhook.
+
+
+
+
+-
+await send(content=..., *, username=..., avatar_url=..., tts=False, ephemeral=False, file=..., files=..., embed=..., embeds=..., allowed_mentions=..., view=..., thread=..., wait=False)
+This function is a coroutine.
+Sends a message using the webhook.
+The content must be a type that can convert to a string through str(content)
.
+To upload a single file, the file
parameter should be used with a
+single File
object.
+If the embed
parameter is provided, it must be of type Embed
and
+it must be a rich embed type. You cannot mix the embed
parameter with the
+embeds
parameter, which must be a list
of Embed
objects to send.
+
+- Parameters
+
+content (str
) – The content of the message to send.
+wait (bool
) – Whether the server should wait before sending a response. This essentially
+means that the return type of this function changes from None
to
+a WebhookMessage
if set to True
. If the type of webhook
+is WebhookType.application
then this is always set to True
.
+username (str
) – The username to send with this message. If no username is provided
+then the default username for the webhook is used.
+avatar_url (str
) – The avatar URL to send with this message. If no avatar URL is provided
+then the default avatar for the webhook is used. If this is not a
+string then it is explicitly cast using str
.
+tts (bool
) – Indicates if the message should be sent using text-to-speech.
+ephemeral (bool
) –
Indicates if the message should only be visible to the user.
+This is only available to WebhookType.application
webhooks.
+If a view is sent with an ephemeral message and it has no timeout set
+then the timeout is set to 15 minutes.
+
+
+file (File
) – The file to upload. This cannot be mixed with files
parameter.
+files (List[File
]) – A list of files to send with the content. This cannot be mixed with the
+file
parameter.
+embed (Embed
) – The rich embed for the content to send. This cannot be mixed with
+embeds
parameter.
+embeds (List[Embed
]) – A list of embeds to send with the content. Maximum of 10. This cannot
+be mixed with the embed
parameter.
+allowed_mentions (AllowedMentions
) –
Controls the mentions being processed in this message.
+
+
+view (discord.ui.View
) –
The view to send with the message. You can only send a view
+if this webhook is not partial and has state attached. A
+webhook has state attached if the webhook is managed by the
+library.
+
+
+thread (Snowflake
) –
The thread to send this webhook to.
+
+
+
+
+- Raises
+
+HTTPException – Sending the message failed.
+NotFound – This webhook was not found.
+Forbidden – The authorization token for the webhook is incorrect.
+TypeError – You specified both embed
and embeds
or file
and files
.
+ValueError – The length of embeds
was invalid.
+InvalidArgument – There was no token associated with this webhook or ephemeral
+ was passed with the improper webhook type or there was no state
+ attached with this webhook when giving it a view.
+
+
+- Returns
+If wait
is True
then the message that was sent, otherwise None
.
+
+- Return type
+Optional[WebhookMessage
]
+
+
+
+
+
+-
+await fetch_message(id)
+This function is a coroutine.
+Retrieves a single WebhookMessage
owned by this webhook.
+
+
+- Parameters
+id (int
) – The message ID to look for.
+
+- Raises
+
+NotFound – The specified message was not found.
+Forbidden – You do not have the permissions required to get a message.
+HTTPException – Retrieving the message failed.
+InvalidArgument – There was no token associated with this webhook.
+
+
+- Returns
+The message asked for.
+
+- Return type
+WebhookMessage
+
+
+
+
+
+-
+await edit_message(message_id, *, content=..., embeds=..., embed=..., file=..., files=..., view=..., allowed_mentions=None)
+This function is a coroutine.
+Edits a message owned by this webhook.
+This is a lower level interface to WebhookMessage.edit()
in case
+you only have an ID.
+
+
+
Changed in version 2.0: The edit is no longer in-place, instead the newly edited message is returned.
+
+
+- Parameters
+
+message_id (int
) – The message ID to edit.
+content (Optional[str
]) – The content to edit the message with or None
to clear it.
+embeds (List[Embed
]) – A list of embeds to edit the message with.
+embed (Optional[Embed
]) – The embed to edit the message with. None
suppresses the embeds.
+This should not be mixed with the embeds
parameter.
+file (File
) –
The file to upload. This cannot be mixed with files
parameter.
+
+
+files (List[File
]) –
A list of files to send with the content. This cannot be mixed with the
+file
parameter.
+
+
+allowed_mentions (AllowedMentions
) – Controls the mentions being processed in this message.
+See abc.Messageable.send()
for more information.
+view (Optional[View
]) –
The updated view to update this message with. If None
is passed then
+the view is removed. The webhook must have state attached, similar to
+send()
.
+
+
+
+
+- Raises
+
+HTTPException – Editing the message failed.
+Forbidden – Edited a message that is not yours.
+TypeError – You specified both embed
and embeds
or file
and files
+ValueError – The length of embeds
was invalid
+InvalidArgument – There was no token associated with this webhook or the webhook had
+ no state.
+
+
+- Returns
+The newly edited webhook message.
+
+- Return type
+WebhookMessage
+
+
+
+
+
+-
+await delete_message(message_id, /)
+This function is a coroutine.
+Deletes a message owned by this webhook.
+This is a lower level interface to WebhookMessage.delete()
in case
+you only have an ID.
+
+
+- Parameters
+message_id (int
) – The message ID to delete.
+
+- Raises
+-
+
+
+
+
+
+
+
+
+WebhookMessage
+
+-
+class discord.WebhookMessage
+Represents a message sent from your webhook.
+This allows you to edit or delete a message sent by your
+webhook.
+This inherits from discord.Message
with changes to
+edit()
and delete()
to work.
+
+
+-
+await edit(content=..., embeds=..., embed=..., file=..., files=..., view=..., allowed_mentions=None)
+This function is a coroutine.
+Edits the message.
+
+
+
Changed in version 2.0: The edit is no longer in-place, instead the newly edited message is returned.
+
+
+- Parameters
+
+content (Optional[str
]) – The content to edit the message with or None
to clear it.
+embeds (List[Embed
]) – A list of embeds to edit the message with.
+embed (Optional[Embed
]) – The embed to edit the message with. None
suppresses the embeds.
+This should not be mixed with the embeds
parameter.
+file (File
) –
The file to upload. This cannot be mixed with files
parameter.
+
+
+files (List[File
]) –
A list of files to send with the content. This cannot be mixed with the
+file
parameter.
+
+
+allowed_mentions (AllowedMentions
) – Controls the mentions being processed in this message.
+See abc.Messageable.send()
for more information.
+view (Optional[View
]) –
The updated view to update this message with. If None
is passed then
+the view is removed.
+
+
+
+
+- Raises
+-
+
+- Returns
+The newly edited message.
+
+- Return type
+WebhookMessage
+
+
+
+
+
+-
+await delete(*, delay=None)
+This function is a coroutine.
+Deletes the message.
+
+- Parameters
+delay (Optional[float
]) – If provided, the number of seconds to wait before deleting the message.
+The waiting is done in the background and deletion failures are ignored.
+
+- Raises
+
+Forbidden – You do not have proper permissions to delete the message.
+NotFound – The message was deleted already.
+HTTPException – Deleting the message failed.
+
+
+
+
+
+
+
+
+
+SyncWebhook
+
+-
+class discord.SyncWebhook
+Represents a synchronous Discord webhook.
+For an asynchronous counterpart, see Webhook
.
+
+
+-
+x == y
+Checks if two webhooks are equal.
+
+
+
+-
+x != y
+Checks if two webhooks are not equal.
+
+
+
+-
+hash(x)
+Returns the webhooks’s hash.
+
+
+
+-
+int(x)
+Returns the webhooks’s ID.
+
+
+
+
+
Changed in version 1.4: Webhooks are now comparable and hashable.
+
+
+-
+id
+The webhook’s ID
+
+- Type
+int
+
+
+
+
+
+-
+type
+The type of the webhook.
+
+
+- Type
+WebhookType
+
+
+
+
+
+-
+token
+The authentication token of the webhook. If this is None
+then the webhook cannot be used to make requests.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+guild_id
+The guild ID this webhook is for.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+channel_id
+The channel ID this webhook is for.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+user
+The user this webhook was created by. If the webhook was
+received without authentication then this will be None
.
+
+- Type
+Optional[abc.User
]
+
+
+
+
+
+-
+name
+The default name of the webhook.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+source_guild
+The guild of the channel that this webhook is following.
+Only given if type
is WebhookType.channel_follower
.
+
+
+- Type
+Optional[PartialWebhookGuild
]
+
+
+
+
+
+-
+source_channel
+The channel that this webhook is following.
+Only given if type
is WebhookType.channel_follower
.
+
+
+- Type
+Optional[PartialWebhookChannel
]
+
+
+
+
+
+-
+property url
+Returns the webhook’s url.
+
+- Type
+str
+
+
+
+
+
+-
+classmethod partial(id, token, *, session=..., bot_token=None)
+Creates a partial Webhook
.
+
+- Parameters
+
+id (int
) – The ID of the webhook.
+token (str
) – The authentication token of the webhook.
+session (requests.Session
) – The session to use to send requests with. Note
+that the library does not manage the session and
+will not close it. If not given, the requests
+auto session creation functions are used instead.
+bot_token (Optional[str
]) – The bot authentication token for authenticated requests
+involving the webhook.
+
+
+- Returns
+A partial Webhook
.
+A partial webhook is just a webhook object with an ID and a token.
+
+- Return type
+Webhook
+
+
+
+
+
+-
+classmethod from_url(url, *, session=..., bot_token=None)
+Creates a partial Webhook
from a webhook URL.
+
+- Parameters
+
+url (str
) – The URL of the webhook.
+session (requests.Session
) – The session to use to send requests with. Note
+that the library does not manage the session and
+will not close it. If not given, the requests
+auto session creation functions are used instead.
+bot_token (Optional[str
]) – The bot authentication token for authenticated requests
+involving the webhook.
+
+
+- Raises
+InvalidArgument – The URL is invalid.
+
+- Returns
+A partial Webhook
.
+A partial webhook is just a webhook object with an ID and a token.
+
+- Return type
+Webhook
+
+
+
+
+
+-
+fetch(*, prefer_auth=True)
+Fetches the current webhook.
+This could be used to get a full webhook from a partial webhook.
+
+
Note
+
When fetching with an unauthenticated webhook, i.e.
+is_authenticated()
returns False
, then the
+returned webhook does not contain any user information.
+
+
+- Parameters
+prefer_auth (bool
) – Whether to use the bot token over the webhook token
+if available. Defaults to True
.
+
+- Raises
+-
+
+- Returns
+The fetched webhook.
+
+- Return type
+SyncWebhook
+
+
+
+
+
+-
+delete(*, reason=None, prefer_auth=True)
+Deletes this Webhook.
+
+- Parameters
+-
+
+- Raises
+
+HTTPException – Deleting the webhook failed.
+NotFound – This webhook does not exist.
+Forbidden – You do not have permissions to delete this webhook.
+InvalidArgument – This webhook does not have a token associated with it.
+
+
+
+
+
+
+-
+edit(*, reason=None, name=..., avatar=..., channel=None, prefer_auth=True)
+Edits this Webhook.
+
+- Parameters
+
+name (Optional[str
]) – The webhook’s new default name.
+avatar (Optional[bytes
]) – A bytes-like object representing the webhook’s new default avatar.
+channel (Optional[abc.Snowflake
]) – The webhook’s new channel. This requires an authenticated webhook.
+reason (Optional[str
]) –
The reason for editing this webhook. Shows up on the audit log.
+
+
+prefer_auth (bool
) – Whether to use the bot token over the webhook token
+if available. Defaults to True
.
+
+
+- Raises
+
+HTTPException – Editing the webhook failed.
+NotFound – This webhook does not exist.
+InvalidArgument – This webhook does not have a token associated with it
+ or it tried editing a channel without authentication.
+
+
+- Returns
+The newly edited webhook.
+
+- Return type
+SyncWebhook
+
+
+
+
+
+-
+send(content=..., *, username=..., avatar_url=..., tts=False, file=..., files=..., embed=..., embeds=..., allowed_mentions=..., thread=..., wait=False)
+Sends a message using the webhook.
+The content must be a type that can convert to a string through str(content)
.
+To upload a single file, the file
parameter should be used with a
+single File
object.
+If the embed
parameter is provided, it must be of type Embed
and
+it must be a rich embed type. You cannot mix the embed
parameter with the
+embeds
parameter, which must be a list
of Embed
objects to send.
+
+- Parameters
+
+content (str
) – The content of the message to send.
+wait (bool
) – Whether the server should wait before sending a response. This essentially
+means that the return type of this function changes from None
to
+a WebhookMessage
if set to True
.
+username (str
) – The username to send with this message. If no username is provided
+then the default username for the webhook is used.
+avatar_url (str
) – The avatar URL to send with this message. If no avatar URL is provided
+then the default avatar for the webhook is used. If this is not a
+string then it is explicitly cast using str
.
+tts (bool
) – Indicates if the message should be sent using text-to-speech.
+file (File
) – The file to upload. This cannot be mixed with files
parameter.
+files (List[File
]) – A list of files to send with the content. This cannot be mixed with the
+file
parameter.
+embed (Embed
) – The rich embed for the content to send. This cannot be mixed with
+embeds
parameter.
+embeds (List[Embed
]) – A list of embeds to send with the content. Maximum of 10. This cannot
+be mixed with the embed
parameter.
+allowed_mentions (AllowedMentions
) –
Controls the mentions being processed in this message.
+
+
+thread (Snowflake
) –
The thread to send this message to.
+
+
+
+
+- Raises
+
+HTTPException – Sending the message failed.
+NotFound – This webhook was not found.
+Forbidden – The authorization token for the webhook is incorrect.
+TypeError – You specified both embed
and embeds
or file
and files
+ValueError – The length of embeds
was invalid
+InvalidArgument – There was no token associated with this webhook.
+
+
+- Returns
+If wait
is True
then the message that was sent, otherwise None
.
+
+- Return type
+Optional[SyncWebhookMessage
]
+
+
+
+
+
+-
+fetch_message(id, /)
+Retrieves a single SyncWebhookMessage
owned by this webhook.
+
+
+- Parameters
+id (int
) – The message ID to look for.
+
+- Raises
+
+NotFound – The specified message was not found.
+Forbidden – You do not have the permissions required to get a message.
+HTTPException – Retrieving the message failed.
+InvalidArgument – There was no token associated with this webhook.
+
+
+- Returns
+The message asked for.
+
+- Return type
+SyncWebhookMessage
+
+
+
+
+
+-
+property avatar
+Returns an Asset
for the avatar the webhook has.
+If the webhook does not have a traditional avatar, an asset for
+the default avatar is returned instead.
+
+- Type
+Asset
+
+
+
+
+
+-
+property channel
+The text channel this webhook belongs to.
+If this is a partial webhook, then this will always return None
.
+
+- Type
+Optional[TextChannel
]
+
+
+
+
+
+-
+property created_at
+Returns the webhook’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+edit_message(message_id, *, content=..., embeds=..., embed=..., file=..., files=..., allowed_mentions=None)
+Edits a message owned by this webhook.
+This is a lower level interface to WebhookMessage.edit()
in case
+you only have an ID.
+
+
+- Parameters
+
+message_id (int
) – The message ID to edit.
+content (Optional[str
]) – The content to edit the message with or None
to clear it.
+embeds (List[Embed
]) – A list of embeds to edit the message with.
+embed (Optional[Embed
]) – The embed to edit the message with. None
suppresses the embeds.
+This should not be mixed with the embeds
parameter.
+file (File
) – The file to upload. This cannot be mixed with files
parameter.
+files (List[File
]) – A list of files to send with the content. This cannot be mixed with the
+file
parameter.
+allowed_mentions (AllowedMentions
) – Controls the mentions being processed in this message.
+See abc.Messageable.send()
for more information.
+
+
+- Raises
+-
+
+
+
+
+
+-
+property guild
+The guild this webhook belongs to.
+If this is a partial webhook, then this will always return None
.
+
+- Type
+Optional[Guild
]
+
+
+
+
+
+-
+is_authenticated()
+bool
: Whether the webhook is authenticated with a bot token.
+
+
+
+
+-
+is_partial()
+bool
: Whether the webhook is a “partial” webhook.
+
+
+
+
+-
+delete_message(message_id, /)
+Deletes a message owned by this webhook.
+This is a lower level interface to WebhookMessage.delete()
in case
+you only have an ID.
+
+
+- Parameters
+message_id (int
) – The message ID to delete.
+
+- Raises
+-
+
+
+
+
+
+
+
+
+SyncWebhookMessage
+
+-
+class discord.SyncWebhookMessage
+Represents a message sent from your webhook.
+This allows you to edit or delete a message sent by your
+webhook.
+This inherits from discord.Message
with changes to
+edit()
and delete()
to work.
+
+
+-
+edit(content=..., embeds=..., embed=..., file=..., files=..., allowed_mentions=None)
+Edits the message.
+
+- Parameters
+
+content (Optional[str
]) – The content to edit the message with or None
to clear it.
+embeds (List[Embed
]) – A list of embeds to edit the message with.
+embed (Optional[Embed
]) – The embed to edit the message with. None
suppresses the embeds.
+This should not be mixed with the embeds
parameter.
+file (File
) – The file to upload. This cannot be mixed with files
parameter.
+files (List[File
]) – A list of files to send with the content. This cannot be mixed with the
+file
parameter.
+allowed_mentions (AllowedMentions
) – Controls the mentions being processed in this message.
+See abc.Messageable.send()
for more information.
+
+
+- Raises
+-
+
+- Returns
+The newly edited message.
+
+- Return type
+SyncWebhookMessage
+
+
+
+
+
+-
+delete(*, delay=None)
+Deletes the message.
+
+- Parameters
+delay (Optional[float
]) – If provided, the number of seconds to wait before deleting the message.
+This blocks the thread.
+
+- Raises
+
+Forbidden – You do not have proper permissions to delete the message.
+NotFound – The message was deleted already.
+HTTPException – Deleting the message failed.
+
+
+
+
+
+
+
+
+
+
+Abstract Base Classes
+An abstract base class (also known as an abc
) is a class that models can inherit
+to get their behaviour. Abstract base classes should not be instantiated.
+They are mainly there for usage with isinstance()
and issubclass()
.
+This library has a module related to abstract base classes, in which all the ABCs are subclasses of
+typing.Protocol
.
+
+Snowflake
+
+-
+class discord.abc.Snowflake
+An ABC that details the common operations on a Discord model.
+Almost all Discord models meet this
+abstract base class.
+If you want to create a snowflake on your own, consider using
+Object
.
+
+-
+id
+The model’s unique ID.
+
+- Type
+int
+
+
+
+
+
+
+
+
+User
+
+-
+class discord.abc.User
+An ABC that details the common operations on a Discord user.
+The following implement this ABC:
+
+This ABC must also implement Snowflake
.
+
+-
+name
+The user’s username.
+
+- Type
+str
+
+
+
+
+
+-
+discriminator
+The user’s discriminator.
+
+- Type
+str
+
+
+
+
+
+-
+avatar
+The avatar asset the user has.
+
+- Type
+Asset
+
+
+
+
+
+-
+bot
+If the user is a bot account.
+
+- Type
+bool
+
+
+
+
+
+-
+property display_name
+Returns the user’s display name.
+
+- Type
+str
+
+
+
+
+
+-
+property mention
+Returns a string that allows you to mention the given user.
+
+- Type
+str
+
+
+
+
+
+
+
+
+PrivateChannel
+
+-
+class discord.abc.PrivateChannel
+An ABC that details the common operations on a private Discord channel.
+The following implement this ABC:
+
+This ABC must also implement Snowflake
.
+
+-
+me
+The user presenting yourself.
+
+- Type
+ClientUser
+
+
+
+
+
+
+
+
+GuildChannel
+
+-
+class discord.abc.GuildChannel
+An ABC that details the common operations on a Discord guild channel.
+The following implement this ABC:
+
+This ABC must also implement Snowflake
.
+
+-
+name
+The channel name.
+
+- Type
+str
+
+
+
+
+
+-
+guild
+The guild the channel belongs to.
+
+- Type
+Guild
+
+
+
+
+
+-
+position
+The position in the channel list. This is a number that starts at 0.
+e.g. the top channel is position 0.
+
+- Type
+int
+
+
+
+
+
+-
+property changed_roles
+Returns a list of roles that have been overridden from
+their default values in the roles
attribute.
+
+- Type
+List[Role
]
+
+
+
+
+
+-
+property mention
+The string that allows you to mention the channel.
+
+- Type
+str
+
+
+
+
+
+-
+property created_at
+Returns the channel’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+overwrites_for(obj)
+Returns the channel-specific overwrites for a member or a role.
+
+- Parameters
+obj (Union[Role
, User
]) – The role or user denoting
+whose overwrite to get.
+
+- Returns
+The permission overwrites for this object.
+
+- Return type
+PermissionOverwrite
+
+
+
+
+
+-
+property overwrites
+Returns all of the channel’s overwrites.
+This is returned as a dictionary where the key contains the target which
+can be either a Role
or a Member
and the value is the
+overwrite as a PermissionOverwrite
.
+
+- Returns
+The channel’s permission overwrites.
+
+- Return type
+Dict[Union[Role
, Member
], PermissionOverwrite
]
+
+
+
+
+
+-
+property category
+The category this channel belongs to.
+If there is no category then this is None
.
+
+- Type
+Optional[CategoryChannel
]
+
+
+
+
+
+-
+property permissions_synced
+Whether or not the permissions for this channel are synced with the
+category it belongs to.
+If there is no category then this is False
.
+
+
+- Type
+bool
+
+
+
+
+
+-
+permissions_for(obj, /)
+Handles permission resolution for the Member
+or Role
.
+This function takes into consideration the following cases:
+
+Guild owner
+Guild roles
+Channel overrides
+Member overrides
+
+If a Role
is passed, then it checks the permissions
+someone with that role would have, which is essentially:
+
+The default role permissions
+The permissions of the role used as a parameter
+The default role permission overwrites
+The permission overwrites of the role used as a parameter
+
+
+
Changed in version 2.0: The object passed in can now be a role object.
+
+
+- Parameters
+obj (Union[Member
, Role
]) – The object to resolve permissions for. This could be either
+a member or a role. If it’s a role then member overwrites
+are not computed.
+
+- Returns
+The resolved permissions for the member or role.
+
+- Return type
+Permissions
+
+
+
+
+
+-
+await delete(*, reason=None)
+This function is a coroutine.
+Deletes the channel.
+You must have manage_channels
permission to use this.
+
+- Parameters
+reason (Optional[str
]) – The reason for deleting this channel.
+Shows up on the audit log.
+
+- Raises
+
+Forbidden – You do not have proper permissions to delete the channel.
+NotFound – The channel was not found or was already deleted.
+HTTPException – Deleting the channel failed.
+
+
+
+
+
+
+-
+await set_permissions(target, *, overwrite=see - below, reason=None, **permissions)
+This function is a coroutine.
+Sets the channel specific permission overwrites for a target in the
+channel.
+The target
parameter should either be a Member
or a
+Role
that belongs to guild.
+The overwrite
parameter, if given, must either be None
or
+PermissionOverwrite
. For convenience, you can pass in
+keyword arguments denoting Permissions
attributes. If this is
+done, then you cannot mix the keyword arguments with the overwrite
+parameter.
+If the overwrite
parameter is None
, then the permission
+overwrites are deleted.
+You must have the manage_roles
permission to use this.
+
+
Note
+
This method replaces the old overwrites with the ones given.
+
+Examples
+Setting allow and deny:
+await message.channel.set_permissions(message.author, read_messages=True,
+ send_messages=False)
+
+
+Deleting overwrites
+await channel.set_permissions(member, overwrite=None)
+
+
+Using PermissionOverwrite
+overwrite = discord.PermissionOverwrite()
+overwrite.send_messages = False
+overwrite.read_messages = True
+await channel.set_permissions(member, overwrite=overwrite)
+
+
+
+- Parameters
+
+target (Union[Member
, Role
]) – The member or role to overwrite permissions for.
+overwrite (Optional[PermissionOverwrite
]) – The permissions to allow and deny to the target, or None
to
+delete the overwrite.
+**permissions – A keyword argument list of permissions to set for ease of use.
+Cannot be mixed with overwrite
.
+reason (Optional[str
]) – The reason for doing this action. Shows up on the audit log.
+
+
+- Raises
+
+Forbidden – You do not have permissions to edit channel specific permissions.
+HTTPException – Editing channel specific permissions failed.
+NotFound – The role or member being edited is not part of the guild.
+InvalidArgument – The overwrite parameter invalid or the target type was not
+ Role
or Member
.
+
+
+
+
+
+
+-
+await clone(*, name=None, reason=None)
+This function is a coroutine.
+Clones this channel. This creates a channel with the same properties
+as this channel.
+You must have the manage_channels
permission to
+do this.
+
+
+- Parameters
+
+name (Optional[str
]) – The name of the new channel. If not provided, defaults to this
+channel name.
+reason (Optional[str
]) – The reason for cloning this channel. Shows up on the audit log.
+
+
+- Raises
+-
+
+- Returns
+The channel that was created.
+
+- Return type
+abc.GuildChannel
+
+
+
+
+
+-
+await move(**kwargs)
+This function is a coroutine.
+A rich interface to help move a channel relative to other channels.
+If exact position movement is required, edit
should be used instead.
+You must have the manage_channels
permission to
+do this.
+
+
Note
+
Voice channels will always be sorted below text channels.
+This is a Discord limitation.
+
+
+
+- Parameters
+
+beginning (bool
) – Whether to move the channel to the beginning of the
+channel list (or category if given).
+This is mutually exclusive with end
, before
, and after
.
+end (bool
) – Whether to move the channel to the end of the
+channel list (or category if given).
+This is mutually exclusive with beginning
, before
, and after
.
+before (Snowflake
) – The channel that should be before our current channel.
+This is mutually exclusive with beginning
, end
, and after
.
+after (Snowflake
) – The channel that should be after our current channel.
+This is mutually exclusive with beginning
, end
, and before
.
+offset (int
) – The number of channels to offset the move by. For example,
+an offset of 2
with beginning=True
would move
+it 2 after the beginning. A positive number moves it below
+while a negative number moves it above. Note that this
+number is relative and computed after the beginning
,
+end
, before
, and after
parameters.
+category (Optional[Snowflake
]) – The category to move this channel under.
+If None
is given then it moves it out of the category.
+This parameter is ignored if moving a category channel.
+sync_permissions (bool
) – Whether to sync the permissions with the category (if given).
+reason (str
) – The reason for the move.
+
+
+- Raises
+
+InvalidArgument – An invalid position was given or a bad mix of arguments were passed.
+Forbidden – You do not have permissions to move the channel.
+HTTPException – Moving the channel failed.
+
+
+
+
+
+
+-
+await create_invite(*, reason=None, max_age=0, max_uses=0, temporary=False, unique=True, target_type=None, target_user=None, target_application_id=None)
+This function is a coroutine.
+Creates an instant invite from a text or voice channel.
+You must have the create_instant_invite
permission to
+do this.
+
+- Parameters
+
+max_age (int
) – How long the invite should last in seconds. If it’s 0 then the invite
+doesn’t expire. Defaults to 0
.
+max_uses (int
) – How many uses the invite could be used for. If it’s 0 then there
+are unlimited uses. Defaults to 0
.
+temporary (bool
) – Denotes that the invite grants temporary membership
+(i.e. they get kicked after they disconnect). Defaults to False
.
+unique (bool
) – Indicates if a unique invite URL should be created. Defaults to True.
+If this is set to False
then it will return a previously created
+invite.
+reason (Optional[str
]) – The reason for creating this invite. Shows up on the audit log.
+target_type (Optional[InviteTarget
]) –
The type of target for the voice channel invite, if any.
+
+
+target_user (Optional[User
]) –
The user whose stream to display for this invite, required if target_type is TargetType.stream. The user must be streaming in the channel.
+
+
+target_application_id: –
Optional[int
]: The id of the embedded application for the invite, required if target_type is TargetType.embedded_application.
+
+
+
+
+- Raises
+-
+
+- Returns
+The invite that was created.
+
+- Return type
+Invite
+
+
+
+
+
+-
+await invites()
+This function is a coroutine.
+Returns a list of all active instant invites from this channel.
+You must have manage_channels
to get this information.
+
+- Raises
+-
+
+- Returns
+The list of invites that are currently active.
+
+- Return type
+List[Invite
]
+
+
+
+
+
+
+
+
+Messageable
+
+-
+class discord.abc.Messageable
+An ABC that details the common operations on a model that can send messages.
+The following implement this ABC:
+
+
+-
+async for ... in history(*, limit=100, before=None, after=None, around=None, oldest_first=None)
+Returns an AsyncIterator
that enables receiving the destination’s message history.
+You must have read_message_history
permissions to use this.
+Examples
+Usage
+counter = 0
+async for message in channel.history(limit=200):
+ if message.author == client.user:
+ counter += 1
+
+
+Flattening into a list:
+messages = await channel.history(limit=123).flatten()
+# messages is now a list of Message...
+
+
+All parameters are optional.
+
+- Parameters
+
+limit (Optional[int
]) – The number of messages to retrieve.
+If None
, retrieves every message in the channel. Note, however,
+that this would make it a slow operation.
+before (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages before this date or message.
+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 (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages after this date or message.
+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.
+around (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages around this date or message.
+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.
+When using this argument, the maximum limit is 101. Note that if the limit is an
+even number then this will return at most limit + 1 messages.
+oldest_first (Optional[bool
]) – If set to True
, return messages in oldest->newest order. Defaults to True
if
+after
is specified, otherwise False
.
+
+
+- Raises
+-
+
+- Yields
+Message
– The message with the message data parsed.
+
+
+
+
+
+-
+async with typing()
+Returns a context manager that allows you to type for an indefinite period of time.
+This is useful for denoting long computations in your bot.
+
+
Note
+
This is both a regular context manager and an async context manager.
+This means that both with
and async with
work with this.
+
+Example Usage:
+async with channel.typing():
+ # simulate something heavy
+ await asyncio.sleep(10)
+
+await channel.send('done!')
+
+
+
+
+
+-
+await send(content=None, *, tts=None, embed=None, embeds=None, file=None, files=None, stickers=None, delete_after=None, nonce=None, allowed_mentions=None, reference=None, mention_author=None, view=None)
+This function is a coroutine.
+Sends a message to the destination with the content given.
+The content must be a type that can convert to a string through str(content)
.
+If the content is set to None
(the default), then the embed
parameter must
+be provided.
+To upload a single file, the file
parameter should be used with a
+single File
object. To upload multiple files, the files
+parameter should be used with a list
of File
objects.
+Specifying both parameters will lead to an exception.
+To upload a single embed, the embed
parameter should be used with a
+single Embed
object. To upload multiple embeds, the embeds
+parameter should be used with a list
of Embed
objects.
+Specifying both parameters will lead to an exception.
+
+- Parameters
+
+content (Optional[str
]) – The content of the message to send.
+tts (bool
) – Indicates if the message should be sent using text-to-speech.
+embed (Embed
) – The rich embed for the content.
+file (File
) – The file to upload.
+files (List[File
]) – A list of files to upload. Must be a maximum of 10.
+nonce (int
) – The nonce to use for sending this message. If the message was successfully sent,
+then the message will have a nonce with this value.
+delete_after (float
) – If provided, the number of seconds to wait in the background
+before deleting the message we just sent. If the deletion fails,
+then it is silently ignored.
+allowed_mentions (AllowedMentions
) –
Controls the mentions being processed in this message. If this is
+passed, then the object is merged with allowed_mentions
.
+The merging behaviour only overrides attributes that have been explicitly passed
+to the object, otherwise it uses the attributes set in allowed_mentions
.
+If no object is passed at all then the defaults given by allowed_mentions
+are used instead.
+
+
+reference (Union[Message
, MessageReference
, PartialMessage
]) –
A reference to the Message
to which you are replying, this can be created using
+to_reference()
or passed directly as a Message
. You can control
+whether this mentions the author of the referenced message using the replied_user
+attribute of allowed_mentions
or by setting mention_author
.
+
+
+mention_author (Optional[bool
]) –
If set, overrides the replied_user
attribute of allowed_mentions
.
+
+
+view (discord.ui.View
) – A Discord UI View to add to the message.
+embeds (List[Embed
]) –
A list of embeds to upload. Must be a maximum of 10.
+
+
+stickers (Sequence[Union[GuildSticker
, StickerItem
]]) –
A list of stickers to upload. Must be a maximum of 3.
+
+
+
+
+- Raises
+-
+
+- Returns
+The message that was sent.
+
+- Return type
+Message
+
+
+
+
+
+-
+await trigger_typing()
+This function is a coroutine.
+Triggers a typing indicator to the destination.
+Typing indicator will go away after 10 seconds, or after a message is sent.
+
+
+
+-
+await fetch_message(id, /)
+This function is a coroutine.
+Retrieves a single Message
from the destination.
+
+- Parameters
+id (int
) – The message ID to look for.
+
+- Raises
+
+NotFound – The specified message was not found.
+Forbidden – You do not have the permissions required to get a message.
+HTTPException – Retrieving the message failed.
+
+
+- Returns
+The message asked for.
+
+- Return type
+Message
+
+
+
+
+
+-
+await pins()
+This function is a coroutine.
+Retrieves all messages that are currently pinned in the channel.
+
+
Note
+
Due to a limitation with the Discord API, the Message
+objects returned by this method do not contain complete
+Message.reactions
data.
+
+
+- Raises
+HTTPException – Retrieving the pinned messages failed.
+
+- Returns
+The messages that are currently pinned.
+
+- Return type
+List[Message
]
+
+
+
+
+
+
+
+
+Connectable
+
+-
+class discord.abc.Connectable
+An ABC that details the common operations on a channel that can
+connect to a voice server.
+The following implement this ABC:
+
+
+
+
+
+
+
+Discord Models
+Models are classes that are received from Discord and are not meant to be created by
+the user of the library.
+
+
Danger
+
The classes listed below are not intended to be created by users and are also
+read-only.
+
For example, this means that you should not make your own User
instances
+nor should you modify the User
instance yourself.
+
If you want to get one of these model classes instances they’d have to be through
+the cache, and a common way of doing so is through the utils.find()
function
+or attributes of model classes that you receive from the events specified in the
+Event Reference.
+
+
+
Note
+
Nearly all classes here have __slots__ defined which means that it is
+impossible to have dynamic attributes to the data classes.
+
+
+ClientUser
+
+-
+class discord.ClientUser
+Represents your Discord user.
+
+
+-
+x == y
+Checks if two users are equal.
+
+
+
+-
+x != y
+Checks if two users are not equal.
+
+
+
+-
+hash(x)
+Return the user’s hash.
+
+
+
+-
+str(x)
+Returns the user’s name with discriminator.
+
+
+
+
+-
+name
+The user’s username.
+
+- Type
+str
+
+
+
+
+
+-
+id
+The user’s unique ID.
+
+- Type
+int
+
+
+
+
+
+-
+discriminator
+The user’s discriminator. This is given when the username has conflicts.
+
+- Type
+str
+
+
+
+
+
+-
+bot
+Specifies if the user is a bot account.
+
+- Type
+bool
+
+
+
+
+
+-
+system
+Specifies if the user is a system user (i.e. represents Discord officially).
+
+
+- Type
+bool
+
+
+
+
+
+-
+verified
+Specifies if the user’s email is verified.
+
+- Type
+bool
+
+
+
+
+
+-
+locale
+The IETF language tag used to identify the language the user is using.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+mfa_enabled
+Specifies if the user has MFA turned on and working.
+
+- Type
+bool
+
+
+
+
+
+-
+await edit(*, username=..., avatar=...)
+This function is a coroutine.
+Edits the current profile of the client.
+
+
Note
+
To upload an avatar, a bytes-like object must be passed in that
+represents the image being uploaded. If this is done through a file
+then the file must be opened via open('some_filename', 'rb')
and
+the bytes-like object is given through the use of fp.read()
.
+
The only image formats supported for uploading is JPEG and PNG.
+
+
+
Changed in version 2.0: The edit is no longer in-place, instead the newly edited client user is returned.
+
+
+- Parameters
+-
+
+- Raises
+-
+
+- Returns
+The newly edited client user.
+
+- Return type
+ClientUser
+
+
+
+
+
+-
+property accent_color
+Returns the user’s accent color, if applicable.
+There is an alias for this named accent_colour
.
+
+
+
+- Type
+Optional[Colour
]
+
+
+
+
+
+-
+property accent_colour
+Returns the user’s accent colour, if applicable.
+There is an alias for this named accent_color
.
+
+
+
+- Type
+Optional[Colour
]
+
+
+
+
+
+-
+property avatar
+Returns an Asset
for the avatar the user has.
+If the user does not have a traditional avatar, None
is returned.
+If you want the avatar that a user has displayed, consider display_avatar
.
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+-
+property banner
+Returns the user’s banner asset, if available.
+
+
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+-
+property color
+A property that returns a color denoting the rendered color
+for the user. This always returns Colour.default()
.
+There is an alias for this named colour
.
+
+- Type
+Colour
+
+
+
+
+
+-
+property colour
+A property that returns a colour denoting the rendered colour
+for the user. This always returns Colour.default()
.
+There is an alias for this named color
.
+
+- Type
+Colour
+
+
+
+
+
+-
+property created_at
+Returns the user’s creation time in UTC.
+This is when the user’s Discord account was created.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+property default_avatar
+Returns the default avatar for a given user. This is calculated by the user’s discriminator.
+
+- Type
+Asset
+
+
+
+
+
+-
+property display_avatar
+Returns the user’s display avatar.
+For regular users this is just their default avatar or uploaded avatar.
+
+
+- Type
+Asset
+
+
+
+
+
+-
+property display_name
+Returns the user’s display name.
+For regular users this is just their username, but
+if they have a guild specific nickname then that
+is returned instead.
+
+- Type
+str
+
+
+
+
+
+-
+property mention
+Returns a string that allows you to mention the given user.
+
+- Type
+str
+
+
+
+
+
+-
+mentioned_in(message)
+Checks if the user is mentioned in the specified message.
+
+- Parameters
+message (Message
) – The message to check if you’re mentioned in.
+
+- Returns
+Indicates if the user is mentioned in the message.
+
+- Return type
+bool
+
+
+
+
+
+-
+property public_flags
+The publicly available flags the user has.
+
+- Type
+PublicUserFlags
+
+
+
+
+
+
+
+
+User
+
+-
+class discord.User
+Represents a Discord user.
+
+
+-
+x == y
+Checks if two users are equal.
+
+
+
+-
+x != y
+Checks if two users are not equal.
+
+
+
+-
+hash(x)
+Return the user’s hash.
+
+
+
+-
+str(x)
+Returns the user’s name with discriminator.
+
+
+
+-
+int(x)
+Returns the user’s ID.
+
+
+
+
+-
+name
+The user’s username.
+
+- Type
+str
+
+
+
+
+
+-
+id
+The user’s unique ID.
+
+- Type
+int
+
+
+
+
+
+-
+discriminator
+The user’s discriminator. This is given when the username has conflicts.
+
+- Type
+str
+
+
+
+
+
+-
+bot
+Specifies if the user is a bot account.
+
+- Type
+bool
+
+
+
+
+
+-
+system
+Specifies if the user is a system user (i.e. represents Discord officially).
+
+- Type
+bool
+
+
+
+
+
+-
+async for ... in history(*, limit=100, before=None, after=None, around=None, oldest_first=None)
+Returns an AsyncIterator
that enables receiving the destination’s message history.
+You must have read_message_history
permissions to use this.
+Examples
+Usage
+counter = 0
+async for message in channel.history(limit=200):
+ if message.author == client.user:
+ counter += 1
+
+
+Flattening into a list:
+messages = await channel.history(limit=123).flatten()
+# messages is now a list of Message...
+
+
+All parameters are optional.
+
+- Parameters
+
+limit (Optional[int
]) – The number of messages to retrieve.
+If None
, retrieves every message in the channel. Note, however,
+that this would make it a slow operation.
+before (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages before this date or message.
+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 (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages after this date or message.
+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.
+around (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages around this date or message.
+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.
+When using this argument, the maximum limit is 101. Note that if the limit is an
+even number then this will return at most limit + 1 messages.
+oldest_first (Optional[bool
]) – If set to True
, return messages in oldest->newest order. Defaults to True
if
+after
is specified, otherwise False
.
+
+
+- Raises
+-
+
+- Yields
+Message
– The message with the message data parsed.
+
+
+
+
+
+-
+async with typing()
+Returns a context manager that allows you to type for an indefinite period of time.
+This is useful for denoting long computations in your bot.
+
+
Note
+
This is both a regular context manager and an async context manager.
+This means that both with
and async with
work with this.
+
+Example Usage:
+async with channel.typing():
+ # simulate something heavy
+ await asyncio.sleep(10)
+
+await channel.send('done!')
+
+
+
+
+
+-
+property dm_channel
+Returns the channel associated with this user if it exists.
+If this returns None
, you can create a DM channel by calling the
+create_dm()
coroutine function.
+
+- Type
+Optional[DMChannel
]
+
+
+
+
+
+-
+property mutual_guilds
+The guilds that the user shares with the client.
+
+
Note
+
This will only return mutual guilds within the client’s internal cache.
+
+
+
+- Type
+List[Guild
]
+
+
+
+
+
+-
+property accent_color
+Returns the user’s accent color, if applicable.
+There is an alias for this named accent_colour
.
+
+
+
+- Type
+Optional[Colour
]
+
+
+
+
+
+-
+property accent_colour
+Returns the user’s accent colour, if applicable.
+There is an alias for this named accent_color
.
+
+
+
+- Type
+Optional[Colour
]
+
+
+
+
+
+-
+property avatar
+Returns an Asset
for the avatar the user has.
+If the user does not have a traditional avatar, None
is returned.
+If you want the avatar that a user has displayed, consider display_avatar
.
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+-
+property banner
+Returns the user’s banner asset, if available.
+
+
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+-
+property color
+A property that returns a color denoting the rendered color
+for the user. This always returns Colour.default()
.
+There is an alias for this named colour
.
+
+- Type
+Colour
+
+
+
+
+
+-
+property colour
+A property that returns a colour denoting the rendered colour
+for the user. This always returns Colour.default()
.
+There is an alias for this named color
.
+
+- Type
+Colour
+
+
+
+
+
+-
+await create_dm()
+This function is a coroutine.
+Creates a DMChannel
with this user.
+This should be rarely called, as this is done transparently for most
+people.
+
+- Returns
+The channel that was created.
+
+- Return type
+DMChannel
+
+
+
+
+
+-
+property created_at
+Returns the user’s creation time in UTC.
+This is when the user’s Discord account was created.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+property default_avatar
+Returns the default avatar for a given user. This is calculated by the user’s discriminator.
+
+- Type
+Asset
+
+
+
+
+
+-
+property display_avatar
+Returns the user’s display avatar.
+For regular users this is just their default avatar or uploaded avatar.
+
+
+- Type
+Asset
+
+
+
+
+
+-
+property display_name
+Returns the user’s display name.
+For regular users this is just their username, but
+if they have a guild specific nickname then that
+is returned instead.
+
+- Type
+str
+
+
+
+
+
+-
+await fetch_message(id, /)
+This function is a coroutine.
+Retrieves a single Message
from the destination.
+
+- Parameters
+id (int
) – The message ID to look for.
+
+- Raises
+
+NotFound – The specified message was not found.
+Forbidden – You do not have the permissions required to get a message.
+HTTPException – Retrieving the message failed.
+
+
+- Returns
+The message asked for.
+
+- Return type
+Message
+
+
+
+
+
+-
+property mention
+Returns a string that allows you to mention the given user.
+
+- Type
+str
+
+
+
+
+
+-
+mentioned_in(message)
+Checks if the user is mentioned in the specified message.
+
+- Parameters
+message (Message
) – The message to check if you’re mentioned in.
+
+- Returns
+Indicates if the user is mentioned in the message.
+
+- Return type
+bool
+
+
+
+
+
+-
+await pins()
+This function is a coroutine.
+Retrieves all messages that are currently pinned in the channel.
+
+
Note
+
Due to a limitation with the Discord API, the Message
+objects returned by this method do not contain complete
+Message.reactions
data.
+
+
+- Raises
+HTTPException – Retrieving the pinned messages failed.
+
+- Returns
+The messages that are currently pinned.
+
+- Return type
+List[Message
]
+
+
+
+
+
+-
+property public_flags
+The publicly available flags the user has.
+
+- Type
+PublicUserFlags
+
+
+
+
+
+-
+await send(content=None, *, tts=None, embed=None, embeds=None, file=None, files=None, stickers=None, delete_after=None, nonce=None, allowed_mentions=None, reference=None, mention_author=None, view=None)
+This function is a coroutine.
+Sends a message to the destination with the content given.
+The content must be a type that can convert to a string through str(content)
.
+If the content is set to None
(the default), then the embed
parameter must
+be provided.
+To upload a single file, the file
parameter should be used with a
+single File
object. To upload multiple files, the files
+parameter should be used with a list
of File
objects.
+Specifying both parameters will lead to an exception.
+To upload a single embed, the embed
parameter should be used with a
+single Embed
object. To upload multiple embeds, the embeds
+parameter should be used with a list
of Embed
objects.
+Specifying both parameters will lead to an exception.
+
+- Parameters
+
+content (Optional[str
]) – The content of the message to send.
+tts (bool
) – Indicates if the message should be sent using text-to-speech.
+embed (Embed
) – The rich embed for the content.
+file (File
) – The file to upload.
+files (List[File
]) – A list of files to upload. Must be a maximum of 10.
+nonce (int
) – The nonce to use for sending this message. If the message was successfully sent,
+then the message will have a nonce with this value.
+delete_after (float
) – If provided, the number of seconds to wait in the background
+before deleting the message we just sent. If the deletion fails,
+then it is silently ignored.
+allowed_mentions (AllowedMentions
) –
Controls the mentions being processed in this message. If this is
+passed, then the object is merged with allowed_mentions
.
+The merging behaviour only overrides attributes that have been explicitly passed
+to the object, otherwise it uses the attributes set in allowed_mentions
.
+If no object is passed at all then the defaults given by allowed_mentions
+are used instead.
+
+
+reference (Union[Message
, MessageReference
, PartialMessage
]) –
A reference to the Message
to which you are replying, this can be created using
+to_reference()
or passed directly as a Message
. You can control
+whether this mentions the author of the referenced message using the replied_user
+attribute of allowed_mentions
or by setting mention_author
.
+
+
+mention_author (Optional[bool
]) –
If set, overrides the replied_user
attribute of allowed_mentions
.
+
+
+view (discord.ui.View
) – A Discord UI View to add to the message.
+embeds (List[Embed
]) –
A list of embeds to upload. Must be a maximum of 10.
+
+
+stickers (Sequence[Union[GuildSticker
, StickerItem
]]) –
A list of stickers to upload. Must be a maximum of 3.
+
+
+
+
+- Raises
+-
+
+- Returns
+The message that was sent.
+
+- Return type
+Message
+
+
+
+
+
+-
+await trigger_typing()
+This function is a coroutine.
+Triggers a typing indicator to the destination.
+Typing indicator will go away after 10 seconds, or after a message is sent.
+
+
+
+
+
+
+Attachment
+
+-
+class discord.Attachment
+Represents an attachment from Discord.
+
+
+-
+str(x)
+Returns the URL of the attachment.
+
+
+
+-
+x == y
+Checks if the attachment is equal to another attachment.
+
+
+
+-
+x != y
+Checks if the attachment is not equal to another attachment.
+
+
+
+-
+hash(x)
+Returns the hash of the attachment.
+
+
+
+-
+int(x)
+Returns the attachment’s ID.
+
+
+
+
+
Changed in version 1.7: Attachment can now be casted to str
and is hashable.
+
+
+-
+id
+The attachment ID.
+
+- Type
+int
+
+
+
+
+
+-
+size
+The attachment size in bytes.
+
+- Type
+int
+
+
+
+
+
+-
+height
+The attachment’s height, in pixels. Only applicable to images and videos.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+width
+The attachment’s width, in pixels. Only applicable to images and videos.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+filename
+The attachment’s filename.
+
+- Type
+str
+
+
+
+
+
+-
+url
+The attachment URL. If the message this attachment was attached
+to is deleted, then this will 404.
+
+- Type
+str
+
+
+
+
+
+-
+proxy_url
+The proxy URL. This is a cached version of the url
in the
+case of images. When the message is deleted, this URL might be valid for a few
+minutes or not valid at all.
+
+- Type
+str
+
+
+
+
+
+-
+content_type
+The attachment’s media type
+
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+ephemeral
+If the attachment is ephemeral. Ephemeral attachments are temporary and
+will automatically be removed after a set period of time.
+
+
+- Type
+Optional[bool
]
+
+
+
+
+
+-
+is_spoiler()
+bool
: Whether this attachment contains a spoiler.
+
+
+
+-
+await save(fp, *, seek_begin=True, use_cached=False)
+This function is a coroutine.
+Saves this attachment into a file-like object.
+
+- Parameters
+
+fp (Union[io.BufferedIOBase
, os.PathLike
]) – The file-like object to save this attachment to or the filename
+to use. If a filename is passed then a file is created with that
+filename and used instead.
+seek_begin (bool
) – Whether to seek to the beginning of the file after saving is
+successfully done.
+use_cached (bool
) – Whether to use proxy_url
rather than url
when downloading
+the attachment. This will allow attachments to be saved after deletion
+more often, compared to the regular URL which is generally deleted right
+after the message is deleted. Note that this can still fail to download
+deleted attachments if too much time has passed and it does not work
+on some types of attachments.
+
+
+- Raises
+-
+
+- Returns
+The number of bytes written.
+
+- Return type
+int
+
+
+
+
+
+-
+await read(*, use_cached=False)
+This function is a coroutine.
+Retrieves the content of this attachment as a bytes
object.
+
+
+- Parameters
+use_cached (bool
) – Whether to use proxy_url
rather than url
when downloading
+the attachment. This will allow attachments to be saved after deletion
+more often, compared to the regular URL which is generally deleted right
+after the message is deleted. Note that this can still fail to download
+deleted attachments if too much time has passed and it does not work
+on some types of attachments.
+
+- Raises
+
+HTTPException – Downloading the attachment failed.
+Forbidden – You do not have permissions to access this attachment
+NotFound – The attachment was deleted.
+
+
+- Returns
+The contents of the attachment.
+
+- Return type
+bytes
+
+
+
+
+
+-
+await to_file(*, use_cached=False, spoiler=False)
+This function is a coroutine.
+Converts the attachment into a File
suitable for sending via
+abc.Messageable.send()
.
+
+
+- Parameters
+
+use_cached (bool
) –
Whether to use proxy_url
rather than url
when downloading
+the attachment. This will allow attachments to be saved after deletion
+more often, compared to the regular URL which is generally deleted right
+after the message is deleted. Note that this can still fail to download
+deleted attachments if too much time has passed and it does not work
+on some types of attachments.
+
+
+spoiler (bool
) –
Whether the file is a spoiler.
+
+
+
+
+- Raises
+
+HTTPException – Downloading the attachment failed.
+Forbidden – You do not have permissions to access this attachment
+NotFound – The attachment was deleted.
+
+
+- Returns
+The attachment as a file suitable for sending.
+
+- Return type
+File
+
+
+
+
+
+
+
+
+Asset
+
+-
+class discord.Asset
+Represents a CDN asset on Discord.
+
+
+-
+str(x)
+Returns the URL of the CDN asset.
+
+
+
+-
+len(x)
+Returns the length of the CDN asset’s URL.
+
+
+
+-
+x == y
+Checks if the asset is equal to another asset.
+
+
+
+-
+x != y
+Checks if the asset is not equal to another asset.
+
+
+
+-
+hash(x)
+Returns the hash of the asset.
+
+
+
+
+-
+property url
+Returns the underlying URL of the asset.
+
+- Type
+str
+
+
+
+
+
+-
+property key
+Returns the identifying key of the asset.
+
+- Type
+str
+
+
+
+
+
+-
+is_animated()
+bool
: Returns whether the asset is animated.
+
+
+
+-
+replace(*, size=..., format=..., static_format=...)
+Returns a new asset with the passed components replaced.
+
+- Parameters
+
+size (int
) – The new size of the asset.
+format (str
) – The new format to change it to. Must be either
+‘webp’, ‘jpeg’, ‘jpg’, ‘png’, or ‘gif’ if it’s animated.
+static_format (str
) – The new format to change it to if the asset isn’t animated.
+Must be either ‘webp’, ‘jpeg’, ‘jpg’, or ‘png’.
+
+
+- Raises
+InvalidArgument – An invalid size or format was passed.
+
+- Returns
+The newly updated asset.
+
+- Return type
+Asset
+
+
+
+
+
+-
+with_size(size, /)
+Returns a new asset with the specified size.
+
+- Parameters
+size (int
) – The new size of the asset.
+
+- Raises
+InvalidArgument – The asset had an invalid size.
+
+- Returns
+The new updated asset.
+
+- Return type
+Asset
+
+
+
+
+
+-
+with_format(format, /)
+Returns a new asset with the specified format.
+
+- Parameters
+format (str
) – The new format of the asset.
+
+- Raises
+InvalidArgument – The asset had an invalid format.
+
+- Returns
+The new updated asset.
+
+- Return type
+Asset
+
+
+
+
+
+-
+with_static_format(format, /)
+Returns a new asset with the specified static format.
+This only changes the format if the underlying asset is
+not animated. Otherwise, the asset is not changed.
+
+- Parameters
+format (str
) – The new static format of the asset.
+
+- Raises
+InvalidArgument – The asset had an invalid format.
+
+- Returns
+The new updated asset.
+
+- Return type
+Asset
+
+
+
+
+
+-
+await read()
+This function is a coroutine.
+Retrieves the content of this asset as a bytes
object.
+
+- Raises
+-
+
+- Returns
+The content of the asset.
+
+- Return type
+bytes
+
+
+
+
+
+-
+await save(fp, *, seek_begin=True)
+This function is a coroutine.
+Saves this asset into a file-like object.
+
+- Parameters
+
+fp (Union[io.BufferedIOBase
, os.PathLike
]) – The file-like object to save this attachment to or the filename
+to use. If a filename is passed then a file is created with that
+filename and used instead.
+seek_begin (bool
) – Whether to seek to the beginning of the file after saving is
+successfully done.
+
+
+- Raises
+-
+
+- Returns
+The number of bytes written.
+
+- Return type
+int
+
+
+
+
+
+
+
+
+Message
+
+-
+class discord.Message
+Represents a message from Discord.
+
+
+-
+x == y
+Checks if two messages are equal.
+
+
+
+-
+x != y
+Checks if two messages are not equal.
+
+
+
+-
+hash(x)
+Returns the message’s hash.
+
+
+
+-
+str(x)
+Returns the message’s content.
+
+
+
+-
+int(x)
+Returns the message’s ID.
+
+
+
+
+-
+tts
+Specifies if the message was done with text-to-speech.
+This can only be accurately received in on_message()
due to
+a discord limitation.
+
+- Type
+bool
+
+
+
+
+
+-
+type
+The type of message. In most cases this should not be checked, but it is helpful
+in cases where it might be a system message for system_content
.
+
+- Type
+MessageType
+
+
+
+
+
+-
+author
+A Member
that sent the message. If channel
is a
+private channel or the user has the left the guild, then it is a User
instead.
+
+- Type
+Union[Member
, abc.User
]
+
+
+
+
+
+-
+content
+The actual contents of the message.
+
+- Type
+str
+
+
+
+
+
+-
+nonce
+The value used by the discord guild and the client to verify that the message is successfully sent.
+This is not stored long term within Discord’s servers and is only used ephemerally.
+
+- Type
+Optional[Union[str
, int
]]
+
+
+
+
+
+-
+embeds
+A list of embeds the message has.
+
+- Type
+List[Embed
]
+
+
+
+
+
+-
+channel
+The TextChannel
or Thread
that the message was sent from.
+Could be a DMChannel
or GroupChannel
if it’s a private message.
+
+- Type
+Union[TextChannel
, Thread
, DMChannel
, GroupChannel
, PartialMessageable
]
+
+
+
+
+
+-
+reference
+The message that this message references. This is only applicable to messages of
+type MessageType.pins_add
, crossposted messages created by a
+followed channel integration, or message replies.
+
+
+- Type
+Optional[MessageReference
]
+
+
+
+
+
+-
+mention_everyone
+Specifies if the message mentions everyone.
+
+
Note
+
This does not check if the @everyone
or the @here
text is in the message itself.
+Rather this boolean indicates if either the @everyone
or the @here
text is in the message
+and it did end up mentioning.
+
+
+- Type
+bool
+
+
+
+
+
+-
+mentions
+A list of Member
that were mentioned. If the message is in a private message
+then the list will be of User
instead. For messages that are not of type
+MessageType.default
, this array can be used to aid in system messages.
+For more information, see system_content
.
+
+
Warning
+
The order of the mentions list is not in any particular order so you should
+not rely on it. This is a Discord limitation, not one with the library.
+
+
+- Type
+List[abc.User
]
+
+
+
+
+
+-
+channel_mentions
+A list of abc.GuildChannel
that were mentioned. If the message is in a private message
+then the list is always empty.
+
+- Type
+List[abc.GuildChannel
]
+
+
+
+
+
+-
+role_mentions
+A list of Role
that were mentioned. If the message is in a private message
+then the list is always empty.
+
+- Type
+List[Role
]
+
+
+
+
+
+-
+id
+The message ID.
+
+- Type
+int
+
+
+
+
+
+-
+webhook_id
+If this message was sent by a webhook, then this is the webhook ID’s that sent this
+message.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+attachments
+A list of attachments given to a message.
+
+- Type
+List[Attachment
]
+
+
+
+
+
+-
+pinned
+Specifies if the message is currently pinned.
+
+- Type
+bool
+
+
+
+
+
+-
+flags
+Extra features of the message.
+
+
+- Type
+MessageFlags
+
+
+
+
+
+-
+reactions
+Reactions to a message. Reactions can be either custom emoji or standard unicode emoji.
+
+- Type
+List[Reaction
]
+
+
+
+
+
+-
+activity
+The activity associated with this message. Sent with Rich-Presence related messages that for
+example, request joining, spectating, or listening to or with another member.
+It is a dictionary with the following optional keys:
+
+
+- Type
+Optional[dict
]
+
+
+
+
+
+-
+application
+The rich presence enabled application associated with this message.
+It is a dictionary with the following keys:
+
+id
: A string representing the application’s ID.
+name
: A string representing the application’s name.
+description
: A string representing the application’s description.
+icon
: A string representing the icon ID of the application.
+cover_image
: A string representing the embed’s image asset ID.
+
+
+- Type
+Optional[dict
]
+
+
+
+
+
+-
+stickers
+A list of sticker items given to the message.
+
+
+- Type
+List[StickerItem
]
+
+
+
+
+
+-
+components
+A list of components in the message.
+
+
+- Type
+List[Component
]
+
+
+
+
+
+-
+guild
+The guild that the message belongs to, if applicable.
+
+- Type
+Optional[Guild
]
+
+
+
+
+
+-
+raw_mentions
+A property that returns an array of user IDs matched with
+the syntax of <@user_id>
in the message content.
+This allows you to receive the user IDs of mentioned users
+even in a private message context.
+
+- Type
+List[int
]
+
+
+
+
+
+-
+raw_channel_mentions
+A property that returns an array of channel IDs matched with
+the syntax of <#channel_id>
in the message content.
+
+- Type
+List[int
]
+
+
+
+
+
+-
+raw_role_mentions
+A property that returns an array of role IDs matched with
+the syntax of <@&role_id>
in the message content.
+
+- Type
+List[int
]
+
+
+
+
+
+-
+clean_content
+A property that returns the content in a “cleaned up”
+manner. This basically means that mentions are transformed
+into the way the client shows it. e.g. <#id>
will transform
+into #name
.
+This will also transform @everyone and @here mentions into
+non-mentions.
+
+
+- Type
+str
+
+
+
+
+
+-
+property created_at
+The message’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+property edited_at
+An aware UTC datetime object containing the edited time of the message.
+
+- Type
+Optional[datetime.datetime
]
+
+
+
+
+
+-
+property jump_url
+Returns a URL that allows the client to jump to this message.
+
+- Type
+str
+
+
+
+
+
+-
+is_system()
+bool
: Whether the message is a system message.
+A system message is a message that is constructed entirely by the Discord API
+in response to something.
+
+
+
+
+-
+system_content
+A property that returns the content that is rendered
+regardless of the Message.type
.
+In the case of MessageType.default
and MessageType.reply
,
+this just returns the regular Message.content
. Otherwise this
+returns an English message denoting the contents of the system message.
+
+- Type
+str
+
+
+
+
+
+-
+await delete(*, delay=None, silent=False)
+This function is a coroutine.
+Deletes the message.
+Your own messages could be deleted without any proper permissions. However to
+delete other people’s messages, you need the manage_messages
+permission.
+
+
Changed in version 1.1: Added the new delay
keyword-only parameter.
+
+
+
Changed in version 2.0: Added the new silent
keyword-only parameter.
+
+
+- Parameters
+
+delay (Optional[float
]) – If provided, the number of seconds to wait in the background
+before deleting the message. If the deletion fails then it is silently ignored.
+silent (bool
) – If silent is set to True
, the error will not be raised, it will be ignored.
+This defaults to False
+
+
+- Raises
+
+Forbidden – You do not have proper permissions to delete the message.
+NotFound – The message was deleted already
+HTTPException – Deleting the message failed.
+
+
+
+
+
+
+-
+await edit(content=..., embed=..., embeds=..., attachments=..., suppress=..., delete_after=None, allowed_mentions=..., view=...)
+This function is a coroutine.
+Edits the message.
+The content must be able to be transformed into a string via str(content)
.
+
+
Changed in version 1.3: The suppress
keyword-only parameter was added.
+
+
+- Parameters
+
+content (Optional[str
]) – The new content to replace the message with.
+Could be None
to remove the content.
+embed (Optional[Embed
]) – The new embed to replace the original with.
+Could be None
to remove the embed.
+embeds (List[Embed
]) –
The new embeds to replace the original with. Must be a maximum of 10.
+To remove all embeds []
should be passed.
+
+
+attachments (List[Attachment
]) – A list of attachments to keep in the message. If []
is passed
+then all attachments are removed.
+suppress (bool
) – Whether to suppress embeds for the message. This removes
+all the embeds if set to True
. If set to False
+this brings the embeds back if they were suppressed.
+Using this parameter requires manage_messages
.
+delete_after (Optional[float
]) – If provided, the number of seconds to wait in the background
+before deleting the message we just edited. If the deletion fails,
+then it is silently ignored.
+allowed_mentions (Optional[AllowedMentions
]) –
Controls the mentions being processed in this message. If this is
+passed, then the object is merged with allowed_mentions
.
+The merging behaviour only overrides attributes that have been explicitly passed
+to the object, otherwise it uses the attributes set in allowed_mentions
.
+If no object is passed at all then the defaults given by allowed_mentions
+are used instead.
+
+
+view (Optional[View
]) – The updated view to update this message with. If None
is passed then
+the view is removed.
+
+
+- Raises
+
+HTTPException – Editing the message failed.
+Forbidden – Tried to suppress a message without permissions or
+ edited a message’s content or embed that isn’t yours.
+InvalidArgument – You specified both embed
and embeds
+
+
+
+
+
+
+-
+await publish()
+This function is a coroutine.
+Publishes this message to your announcement channel.
+You must have the send_messages
permission to do this.
+If the message is not your own then the manage_messages
+permission is also needed.
+
+- Raises
+-
+
+
+
+
+
+-
+await pin(*, reason=None)
+This function is a coroutine.
+Pins the message.
+You must have the manage_messages
permission to do
+this in a non-private channel context.
+
+- Parameters
+reason (Optional[str
]) –
The reason for pinning the message. Shows up on the audit log.
+
+
+
+- Raises
+
+Forbidden – You do not have permissions to pin the message.
+NotFound – The message or channel was not found or deleted.
+HTTPException – Pinning the message failed, probably due to the channel
+ having more than 50 pinned messages.
+
+
+
+
+
+
+-
+await unpin(*, reason=None)
+This function is a coroutine.
+Unpins the message.
+You must have the manage_messages
permission to do
+this in a non-private channel context.
+
+- Parameters
+reason (Optional[str
]) –
The reason for unpinning the message. Shows up on the audit log.
+
+
+
+- Raises
+
+Forbidden – You do not have permissions to unpin the message.
+NotFound – The message or channel was not found or deleted.
+HTTPException – Unpinning the message failed.
+
+
+
+
+
+
+-
+await add_reaction(emoji)
+This function is a coroutine.
+Add a reaction to the message.
+The emoji may be a unicode emoji or a custom guild Emoji
.
+You must have the read_message_history
permission
+to use this. If nobody else has reacted to the message using this
+emoji, the add_reactions
permission is required.
+
+- Parameters
+emoji (Union[Emoji
, Reaction
, PartialEmoji
, str
]) – The emoji to react with.
+
+- Raises
+
+HTTPException – Adding the reaction failed.
+Forbidden – You do not have the proper permissions to react to the message.
+NotFound – The emoji you specified was not found.
+InvalidArgument – The emoji parameter is invalid.
+
+
+
+
+
+
+-
+await remove_reaction(emoji, member)
+This function is a coroutine.
+Remove a reaction by the member from the message.
+The emoji may be a unicode emoji or a custom guild Emoji
.
+If the reaction is not your own (i.e. member
parameter is not you) then
+the manage_messages
permission is needed.
+The member
parameter must represent a member and meet
+the abc.Snowflake
abc.
+
+- Parameters
+-
+
+- Raises
+
+HTTPException – Removing the reaction failed.
+Forbidden – You do not have the proper permissions to remove the reaction.
+NotFound – The member or emoji you specified was not found.
+InvalidArgument – The emoji parameter is invalid.
+
+
+
+
+
+
+-
+await clear_reaction(emoji)
+This function is a coroutine.
+Clears a specific reaction from the message.
+The emoji may be a unicode emoji or a custom guild Emoji
.
+You need the manage_messages
permission to use this.
+
+
+- Parameters
+emoji (Union[Emoji
, Reaction
, PartialEmoji
, str
]) – The emoji to clear.
+
+- Raises
+
+HTTPException – Clearing the reaction failed.
+Forbidden – You do not have the proper permissions to clear the reaction.
+NotFound – The emoji you specified was not found.
+InvalidArgument – The emoji parameter is invalid.
+
+
+
+
+
+
+-
+await clear_reactions()
+This function is a coroutine.
+Removes all the reactions from the message.
+You need the manage_messages
permission to use this.
+
+- Raises
+-
+
+
+
+
+
+-
+await create_thread(*, name, auto_archive_duration=...)
+This function is a coroutine.
+Creates a public thread from this message.
+You must have create_public_threads
in order to
+create a public thread from a message.
+The channel this message belongs in must be a TextChannel
.
+
+
+- Parameters
+
+name (str
) – The name of the thread.
+auto_archive_duration (int
) – The duration in minutes before a thread is automatically archived for inactivity.
+If not provided, the channel’s default auto archive duration is used.
+
+
+- Raises
+-
+
+- Returns
+The created thread.
+
+- Return type
+Thread
+
+
+
+
+
+-
+await reply(content=None, **kwargs)
+This function is a coroutine.
+A shortcut method to abc.Messageable.send()
to reply to the
+Message
.
+
+
+- Raises
+
+HTTPException – Sending the message failed.
+Forbidden – You do not have the proper permissions to send the message.
+InvalidArgument – The files
list is not of the appropriate size or
+ you specified both file
and files
.
+
+
+- Returns
+The message that was sent.
+
+- Return type
+Message
+
+
+
+
+
+-
+to_reference(*, fail_if_not_exists=True)
+Creates a MessageReference
from the current message.
+
+
+- Parameters
+fail_if_not_exists (bool
) –
Whether replying using the message reference should raise HTTPException
+if the message no longer exists or Discord could not fetch the message.
+
+
+
+- Returns
+The reference to this message.
+
+- Return type
+MessageReference
+
+
+
+
+
+
+
+
+Component
+
+-
+class discord.Component
+Represents a Discord Bot UI Kit Component.
+Currently, the only components supported by Discord are:
+
+This class is abstract and cannot be instantiated.
+
+
+-
+type
+The type of component.
+
+- Type
+ComponentType
+
+
+
+
+
+
+
+
+ActionRow
+
+-
+class discord.ActionRow
+Represents a Discord Bot UI Kit Action Row.
+This is a component that holds up to 5 children components in a row.
+This inherits from Component
.
+
+
+-
+type
+The type of component.
+
+- Type
+ComponentType
+
+
+
+
+
+-
+children
+The children components that this holds, if any.
+
+- Type
+List[Component
]
+
+
+
+
+
+
+
+
+
+
+DeletedReferencedMessage
+
+-
+class discord.DeletedReferencedMessage
+A special sentinel type that denotes whether the
+resolved message referenced message had since been deleted.
+The purpose of this class is to separate referenced messages that could not be
+fetched and those that were previously fetched but have since been deleted.
+
+
+-
+property id
+The message ID of the deleted referenced message.
+
+- Type
+int
+
+
+
+
+
+-
+property channel_id
+The channel ID of the deleted referenced message.
+
+- Type
+int
+
+
+
+
+
+-
+property guild_id
+The guild ID of the deleted referenced message.
+
+- Type
+Optional[int
]
+
+
+
+
+
+
+
+
+Reaction
+
+-
+class discord.Reaction
+Represents a reaction to a message.
+Depending on the way this object was created, some of the attributes can
+have a value of None
.
+
+
+-
+x == y
+Checks if two reactions are equal. This works by checking if the emoji
+is the same. So two messages with the same reaction will be considered
+“equal”.
+
+
+
+-
+x != y
+Checks if two reactions are not equal.
+
+
+
+-
+hash(x)
+Returns the reaction’s hash.
+
+
+
+-
+str(x)
+Returns the string form of the reaction’s emoji.
+
+
+
+
+-
+emoji
+The reaction emoji. May be a custom emoji, or a unicode emoji.
+
+- Type
+Union[Emoji
, PartialEmoji
, str
]
+
+
+
+
+
+-
+count
+Number of times this reaction was made
+
+- Type
+int
+
+
+
+
+
+-
+me
+If the user sent this reaction.
+
+- Type
+bool
+
+
+
+
+
+-
+message
+Message this reaction is for.
+
+- Type
+Message
+
+
+
+
+
+-
+async for ... in users(*, limit=None, after=None)
+Returns an AsyncIterator
representing the users that have reacted to the message.
+The after
parameter must represent a member
+and meet the abc.Snowflake
abc.
+Examples
+Usage
+# I do not actually recommend doing this.
+async for user in reaction.users():
+ await channel.send(f'{user} has reacted with {reaction.emoji}!')
+
+
+Flattening into a list:
+users = await reaction.users().flatten()
+# users is now a list of User...
+winner = random.choice(users)
+await channel.send(f'{winner} has won the raffle.')
+
+
+
+- Parameters
+
+limit (Optional[int
]) – The maximum number of results to return.
+If not provided, returns all the users who
+reacted to the message.
+after (Optional[abc.Snowflake
]) – For pagination, reactions are sorted by member.
+
+
+- Raises
+HTTPException – Getting the users for the reaction failed.
+
+- Yields
+Union[User
, Member
] – The member (if retrievable) or the user that has reacted
+to this message. The case where it can be a Member
is
+in a guild message context. Sometimes it can be a User
+if the member has left the guild.
+
+
+
+
+
+-
+is_custom_emoji()
+bool
: If this is a custom emoji.
+
+
+
+-
+await remove(user)
+This function is a coroutine.
+Remove the reaction by the provided User
from the message.
+If the reaction is not your own (i.e. user
parameter is not you) then
+the manage_messages
permission is needed.
+The user
parameter must represent a user or member and meet
+the abc.Snowflake
abc.
+
+- Parameters
+user (abc.Snowflake
) – The user or member from which to remove the reaction.
+
+- Raises
+
+HTTPException – Removing the reaction failed.
+Forbidden – You do not have the proper permissions to remove the reaction.
+NotFound – The user you specified, or the reaction’s message was not found.
+
+
+
+
+
+
+-
+await clear()
+This function is a coroutine.
+Clears this reaction from the message.
+You need the manage_messages
permission to use this.
+
+
+- Raises
+
+HTTPException – Clearing the reaction failed.
+Forbidden – You do not have the proper permissions to clear the reaction.
+NotFound – The emoji you specified was not found.
+InvalidArgument – The emoji parameter is invalid.
+
+
+
+
+
+
+
+
+
+Guild
+
+-
+class discord.Guild
+Represents a Discord guild.
+This is referred to as a “server” in the official Discord UI.
+
+
+-
+x == y
+Checks if two guilds are equal.
+
+
+
+-
+x != y
+Checks if two guilds are not equal.
+
+
+
+-
+hash(x)
+Returns the guild’s hash.
+
+
+
+-
+str(x)
+Returns the guild’s name.
+
+
+
+-
+int(x)
+Returns the guild’s ID.
+
+
+
+
+-
+name
+The guild name.
+
+- Type
+str
+
+
+
+
+
+-
+emojis
+All emojis that the guild owns.
+
+- Type
+Tuple[Emoji
, …]
+
+
+
+
+
+-
+stickers
+All stickers that the guild owns.
+
+
+- Type
+Tuple[GuildSticker
, …]
+
+
+
+
+
+-
+region
+The region the guild belongs on. There is a chance that the region
+will be a str
if the value is not recognised by the enumerator.
+
+- Type
+VoiceRegion
+
+
+
+
+
+-
+afk_timeout
+The timeout to get sent to the AFK channel.
+
+- Type
+int
+
+
+
+
+
+-
+afk_channel
+The channel that denotes the AFK channel. None
if it doesn’t exist.
+
+- Type
+Optional[VoiceChannel
]
+
+
+
+
+
+-
+id
+The guild’s ID.
+
+- Type
+int
+
+
+
+
+
+-
+owner_id
+The guild owner’s ID. Use Guild.owner
instead.
+
+- Type
+int
+
+
+
+
+
+-
+unavailable
+Indicates if the guild is unavailable. If this is True
then the
+reliability of other attributes outside of Guild.id
is slim and they might
+all be None
. It is best to not do anything with the guild if it is unavailable.
+Check the on_guild_unavailable()
and on_guild_available()
events.
+
+- Type
+bool
+
+
+
+
+
+-
+max_presences
+The maximum amount of presences for the guild.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+max_members
+The maximum amount of members for the guild.
+
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+max_video_channel_users
+The maximum amount of users in a video channel.
+
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+description
+The guild’s description.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+mfa_level
+Indicates the guild’s two factor authorisation level. If this value is 0 then
+the guild does not require 2FA for their administrative members. If the value is
+1 then they do.
+
+- Type
+int
+
+
+
+
+
+-
+verification_level
+The guild’s verification level.
+
+- Type
+VerificationLevel
+
+
+
+
+
+-
+explicit_content_filter
+The guild’s explicit content filter.
+
+- Type
+ContentFilter
+
+
+
+
+
+-
+default_notifications
+The guild’s notification settings.
+
+- Type
+NotificationLevel
+
+
+
+
+
+-
+features
+A list of features that the guild has. The features that a guild can have are
+subject to arbitrary change by Discord.
+They are currently as follows:
+
+ANIMATED_ICON
: Guild can upload an animated icon.
+BANNER
: Guild can upload and use a banner. (i.e. banner
)
+COMMERCE
: Guild can sell things using store channels.
+COMMUNITY
: Guild is a community server.
+DISCOVERABLE
: Guild shows up in Server Discovery.
+FEATURABLE
: Guild is able to be featured in Server Discovery.
+INVITE_SPLASH
: Guild’s invite page can have a special splash.
+MEMBER_VERIFICATION_GATE_ENABLED
: Guild has Membership Screening enabled.
+MONETIZATION_ENABLED
: Guild has enabled monetization.
+MORE_EMOJI
: Guild has increased custom emoji slots.
+MORE_STICKERS
: Guild has increased custom sticker slots.
+NEWS
: Guild can create news channels.
+PARTNERED
: Guild is a partnered server.
+PREVIEW_ENABLED
: Guild can be viewed before being accepted via Membership Screening.
+PRIVATE_THREADS
: Guild has access to create private threads.
+SEVEN_DAY_THREAD_ARCHIVE
: Guild has access to the seven day archive time for threads.
+THREE_DAY_THREAD_ARCHIVE
: Guild has access to the three day archive time for threads.
+TICKETED_EVENTS_ENABLED
: Guild has enabled ticketed events.
+VANITY_URL
: Guild can have a vanity invite URL (e.g. discord.gg/discord-api).
+VERIFIED
: Guild is a verified server.
+VIP_REGIONS
: Guild has VIP voice regions.
+WELCOME_SCREEN_ENABLED
: Guild has enabled the welcome screen.
+
+
+- Type
+List[str
]
+
+
+
+
+
+-
+premium_tier
+The premium tier for this guild. Corresponds to “Nitro Server” in the official UI.
+The number goes from 0 to 3 inclusive.
+
+- Type
+int
+
+
+
+
+
+-
+premium_subscription_count
+The number of “boosts” this guild currently has.
+
+- Type
+int
+
+
+
+
+
+-
+preferred_locale
+The preferred locale for the guild. Used when filtering Server Discovery
+results to a specific language.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+nsfw_level
+The guild’s NSFW level.
+
+
+- Type
+NSFWLevel
+
+
+
+
+
+-
+async for ... in fetch_members(*, limit=1000, after=None)
+Retrieves an AsyncIterator
that enables receiving the guild’s members. In order to use this,
+Intents.members()
must be enabled.
+
+
Note
+
This method is an API call. For general usage, consider members
instead.
+
+
+All parameters are optional.
+
+- Parameters
+
+limit (Optional[int
]) – The number of members to retrieve. Defaults to 1000.
+Pass None
to fetch all members. Note that this is potentially slow.
+after (Optional[Union[abc.Snowflake
, datetime.datetime
]]) – Retrieve members 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
+-
+
+- Yields
+Member
– The member with the member data parsed.
+
+
+Examples
+Usage
+async for member in guild.fetch_members(limit=150):
+ print(member.name)
+
+
+Flattening into a list
+members = await guild.fetch_members(limit=150).flatten()
+# members is now a list of Member...
+
+
+
+
+
+-
+async for ... in audit_logs(*, limit=100, before=None, after=None, oldest_first=None, user=None, action=None)
+Returns an AsyncIterator
that enables receiving the guild’s audit logs.
+You must have the view_audit_log
permission to use this.
+Examples
+Getting the first 100 entries:
+async for entry in guild.audit_logs(limit=100):
+ print(f'{entry.user} did {entry.action} to {entry.target}')
+
+
+Getting entries for a specific action:
+async for entry in guild.audit_logs(action=discord.AuditLogAction.ban):
+ print(f'{entry.user} banned {entry.target}')
+
+
+Getting entries made by a specific user:
+entries = await guild.audit_logs(limit=None, user=guild.me).flatten()
+await channel.send(f'I made {len(entries)} moderation actions.')
+
+
+
+- Parameters
+
+limit (Optional[int
]) – The number of entries to retrieve. If None
retrieve all entries.
+before (Union[abc.Snowflake
, datetime.datetime
]) – Retrieve entries before this date or entry.
+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 entries after this date or entry.
+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.
+oldest_first (bool
) – If set to True
, return entries in oldest->newest order. Defaults to True
if
+after
is specified, otherwise False
.
+user (abc.Snowflake
) – The moderator to filter entries from.
+action (AuditLogAction
) – The action to filter with.
+
+
+- Raises
+-
+
+- Yields
+AuditLogEntry
– The audit log entry.
+
+
+
+
+
+-
+property channels
+A list of channels that belongs to this guild.
+
+- Type
+List[abc.GuildChannel
]
+
+
+
+
+
+-
+property threads
+A list of threads that you have permission to view.
+
+
+- Type
+List[Thread
]
+
+
+
+
+
+-
+property large
+Indicates if the guild is a ‘large’ guild.
+A large guild is defined as having more than large_threshold
count
+members, which for this library is set to the maximum of 250.
+
+- Type
+bool
+
+
+
+
+
+-
+property voice_channels
+A list of voice channels that belongs to this guild.
+This is sorted by the position and are in UI order from top to bottom.
+
+- Type
+List[VoiceChannel
]
+
+
+
+
+
+-
+property stage_channels
+A list of stage channels that belongs to this guild.
+
+This is sorted by the position and are in UI order from top to bottom.
+
+- Type
+List[StageChannel
]
+
+
+
+
+
+-
+property me
+Similar to Client.user
except an instance of Member
.
+This is essentially used to get the member version of yourself.
+
+- Type
+Member
+
+
+
+
+
+-
+property voice_client
+Returns the VoiceProtocol
associated with this guild, if any.
+
+- Type
+Optional[VoiceProtocol
]
+
+
+
+
+
+-
+property text_channels
+A list of text channels that belongs to this guild.
+This is sorted by the position and are in UI order from top to bottom.
+
+- Type
+List[TextChannel
]
+
+
+
+
+
+-
+property categories
+A list of categories that belongs to this guild.
+This is sorted by the position and are in UI order from top to bottom.
+
+- Type
+List[CategoryChannel
]
+
+
+
+
+
+-
+by_category()
+Returns every CategoryChannel
and their associated channels.
+These channels and categories are sorted in the official Discord UI order.
+If the channels do not have a category, then the first element of the tuple is
+None
.
+
+- Returns
+The categories and their associated channels.
+
+- Return type
+List[Tuple[Optional[CategoryChannel
], List[abc.GuildChannel
]]]
+
+
+
+
+
+-
+get_channel_or_thread(channel_id, /)
+Returns a channel or thread with the given ID.
+
+
+- Parameters
+channel_id (int
) – The ID to search for.
+
+- Returns
+The returned channel or thread or None
if not found.
+
+- Return type
+Optional[Union[Thread
, abc.GuildChannel
]]
+
+
+
+
+
+-
+get_channel(channel_id, /)
+Returns a channel with the given ID.
+
+
Note
+
This does not search for threads.
+
+
+- Parameters
+channel_id (int
) – The ID to search for.
+
+- Returns
+The returned channel or None
if not found.
+
+- Return type
+Optional[abc.GuildChannel
]
+
+
+
+
+
+-
+get_thread(thread_id, /)
+Returns a thread with the given ID.
+
+
+- Parameters
+thread_id (int
) – The ID to search for.
+
+- Returns
+The returned thread or None
if not found.
+
+- Return type
+Optional[Thread
]
+
+
+
+
+
+-
+property system_channel
+Returns the guild’s channel used for system messages.
+If no channel is set, then this returns None
.
+
+- Type
+Optional[TextChannel
]
+
+
+
+
+
+-
+property system_channel_flags
+Returns the guild’s system channel settings.
+
+- Type
+SystemChannelFlags
+
+
+
+
+
+-
+property rules_channel
+Return’s the guild’s channel used for the rules.
+The guild must be a Community guild.
+If no channel is set, then this returns None
.
+
+
+- Type
+Optional[TextChannel
]
+
+
+
+
+
+-
+property public_updates_channel
+Return’s the guild’s channel where admins and
+moderators of the guilds receive notices from Discord. The guild must be a
+Community guild.
+If no channel is set, then this returns None
.
+
+
+- Type
+Optional[TextChannel
]
+
+
+
+
+
+-
+property emoji_limit
+The maximum number of emoji slots this guild has.
+
+- Type
+int
+
+
+
+
+
+-
+property sticker_limit
+The maximum number of sticker slots this guild has.
+
+
+- Type
+int
+
+
+
+
+
+-
+property bitrate_limit
+The maximum bitrate for voice channels this guild can have.
+
+- Type
+float
+
+
+
+
+
+-
+property filesize_limit
+The maximum number of bytes files can have when uploaded to this guild.
+
+- Type
+int
+
+
+
+
+
+-
+property members
+A list of members that belong to this guild.
+
+- Type
+List[Member
]
+
+
+
+
+
+-
+property humans
+A list of human members that belong to this guild.
+
+
+- Type
+List[Member
]
+
+
+
+
+
+-
+property bots
+A list of bots that belong to this guild.
+
+
+- Type
+List[Member
]
+
+
+
+
+
+-
+get_member(user_id, /)
+Returns a member with the given ID.
+
+- Parameters
+user_id (int
) – The ID to search for.
+
+- Returns
+The member or None
if not found.
+
+- Return type
+Optional[Member
]
+
+
+
+
+
+-
+property premium_subscribers
+A list of members who have “boosted” this guild.
+
+- Type
+List[Member
]
+
+
+
+
+
+-
+property roles
+Returns a list
of the guild’s roles in hierarchy order.
+The first element of this list will be the lowest role in the
+hierarchy.
+
+- Type
+List[Role
]
+
+
+
+
+
+-
+get_role(role_id, /)
+Returns a role with the given ID.
+
+- Parameters
+role_id (int
) – The ID to search for.
+
+- Returns
+The role or None
if not found.
+
+- Return type
+Optional[Role
]
+
+
+
+
+
+-
+property default_role
+Gets the @everyone role that all members have by default.
+
+- Type
+Role
+
+
+
+
+
+-
+property premium_subscriber_role
+Gets the premium subscriber role, AKA “boost” role, in this guild.
+
+
+- Type
+Optional[Role
]
+
+
+
+
+
+-
+property self_role
+Gets the role associated with this client’s user, if any.
+
+
+- Type
+Optional[Role
]
+
+
+
+
+
+-
+property stage_instances
+Returns a list
of the guild’s stage instances that
+are currently running.
+
+
+- Type
+List[StageInstance
]
+
+
+
+
+
+-
+get_stage_instance(stage_instance_id, /)
+Returns a stage instance with the given ID.
+
+
+- Parameters
+stage_instance_id (int
) – The ID to search for.
+
+- Returns
+The stage instance or None
if not found.
+
+- Return type
+Optional[StageInstance
]
+
+
+
+
+
+-
+property owner
+The member that owns the guild.
+
+- Type
+Optional[Member
]
+
+
+
+
+
+-
+property icon
+Returns the guild’s icon asset, if available.
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+-
+property banner
+Returns the guild’s banner asset, if available.
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+-
+property splash
+Returns the guild’s invite splash asset, if available.
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+-
+property discovery_splash
+Returns the guild’s discovery splash asset, if available.
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+-
+property member_count
+Returns the true member count regardless of it being loaded fully or not.
+
+
Warning
+
Due to a Discord limitation, in order for this attribute to remain up-to-date and
+accurate, it requires Intents.members
to be specified.
+
+
+- Type
+int
+
+
+
+
+
+-
+property chunked
+Returns a boolean indicating if the guild is “chunked”.
+A chunked guild means that member_count
is equal to the
+number of members stored in the internal members
cache.
+If this value returns False
, then you should request for
+offline members.
+
+- Type
+bool
+
+
+
+
+
+-
+property shard_id
+Returns the shard ID for this guild if applicable.
+
+- Type
+int
+
+
+
+
+
+-
+property created_at
+Returns the guild’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+get_member_named(name, /)
+Returns the first member found that matches the name provided.
+The name can have an optional discriminator argument, e.g. “Jake#0001”
+or “Jake” will both do the lookup. However the former will give a more
+precise result. Note that the discriminator must have all 4 digits
+for this to work.
+If a nickname is passed, then it is looked up via the nickname. Note
+however, that a nickname + discriminator combo will not lookup the nickname
+but rather the username + discriminator combo due to nickname + discriminator
+not being unique.
+If no member is found, None
is returned.
+
+- Parameters
+name (str
) – The name of the member to lookup with an optional discriminator.
+
+- Returns
+The member in this guild with the associated name. If not found
+then None
is returned.
+
+- Return type
+Optional[Member
]
+
+
+
+
+
+-
+await create_text_channel(name, *, reason=None, category=None, position=..., topic=..., slowmode_delay=..., nsfw=..., overwrites=...)
+This function is a coroutine.
+Creates a TextChannel
for the guild.
+Note that you need the manage_channels
permission
+to create the channel.
+The overwrites
parameter can be used to create a ‘secret’
+channel upon creation. This parameter expects a dict
of
+overwrites with the target (either a Member
or a Role
)
+as the key and a PermissionOverwrite
as the value.
+
+
Note
+
Creating a channel of a specified position will not update the position of
+other channels to follow suit. A follow-up call to edit()
+will be required to update the position of the channel in the channel list.
+
+Examples
+Creating a basic channel:
+channel = await guild.create_text_channel('cool-channel')
+
+
+Creating a “secret” channel:
+overwrites = {
+ guild.default_role: discord.PermissionOverwrite(read_messages=False),
+ guild.me: discord.PermissionOverwrite(read_messages=True)
+}
+
+channel = await guild.create_text_channel('secret', overwrites=overwrites)
+
+
+
+- Parameters
+
+name (str
) – The channel’s name.
+overwrites (Dict[Union[Role
, Member
], PermissionOverwrite
]) – A dict
of target (either a role or a member) to
+PermissionOverwrite
to apply upon creation of a channel.
+Useful for creating secret channels.
+category (Optional[CategoryChannel
]) – The category to place the newly created channel under.
+The permissions will be automatically synced to category if no
+overwrites are provided.
+position (int
) – The position in the channel list. This is a number that starts
+at 0. e.g. the top channel is position 0.
+topic (str
) – The new channel’s topic.
+slowmode_delay (int
) – Specifies the slowmode rate limit for user in this channel, in seconds.
+The maximum value possible is 21600.
+nsfw (bool
) – To mark the channel as NSFW or not.
+reason (Optional[str
]) – The reason for creating this channel. Shows up on the audit log.
+
+
+- Raises
+
+Forbidden – You do not have the proper permissions to create this channel.
+HTTPException – Creating the channel failed.
+InvalidArgument – The permission overwrite information is not in proper form.
+
+
+- Returns
+The channel that was just created.
+
+- Return type
+TextChannel
+
+
+
+
+
+-
+await create_voice_channel(name, *, reason=None, category=None, position=..., bitrate=..., user_limit=..., rtc_region=..., video_quality_mode=..., overwrites=...)
+This function is a coroutine.
+This is similar to create_text_channel()
except makes a VoiceChannel
instead.
+
+- Parameters
+
+name (str
) – The channel’s name.
+overwrites (Dict[Union[Role
, Member
], PermissionOverwrite
]) – A dict
of target (either a role or a member) to
+PermissionOverwrite
to apply upon creation of a channel.
+Useful for creating secret channels.
+category (Optional[CategoryChannel
]) – The category to place the newly created channel under.
+The permissions will be automatically synced to category if no
+overwrites are provided.
+position (int
) – The position in the channel list. This is a number that starts
+at 0. e.g. the top channel is position 0.
+bitrate (int
) – The channel’s preferred audio bitrate in bits per second.
+user_limit (int
) – The channel’s limit for number of members that can be in a voice channel.
+rtc_region (Optional[VoiceRegion
]) –
The region for the voice channel’s voice communication.
+A value of None
indicates automatic voice region detection.
+
+
+video_quality_mode (VideoQualityMode
) –
The camera video quality for the voice channel’s participants.
+
+
+reason (Optional[str
]) – The reason for creating this channel. Shows up on the audit log.
+
+
+- Raises
+
+Forbidden – You do not have the proper permissions to create this channel.
+HTTPException – Creating the channel failed.
+InvalidArgument – The permission overwrite information is not in proper form.
+
+
+- Returns
+The channel that was just created.
+
+- Return type
+VoiceChannel
+
+
+
+
+
+-
+await create_stage_channel(name, *, topic, position=..., overwrites=..., category=None, reason=None)
+This function is a coroutine.
+This is similar to create_text_channel()
except makes a StageChannel
instead.
+
+
+- Parameters
+
+name (str
) – The channel’s name.
+topic (str
) – The new channel’s topic.
+overwrites (Dict[Union[Role
, Member
], PermissionOverwrite
]) – A dict
of target (either a role or a member) to
+PermissionOverwrite
to apply upon creation of a channel.
+Useful for creating secret channels.
+category (Optional[CategoryChannel
]) – The category to place the newly created channel under.
+The permissions will be automatically synced to category if no
+overwrites are provided.
+position (int
) – The position in the channel list. This is a number that starts
+at 0. e.g. the top channel is position 0.
+reason (Optional[str
]) – The reason for creating this channel. Shows up on the audit log.
+
+
+- Raises
+
+Forbidden – You do not have the proper permissions to create this channel.
+HTTPException – Creating the channel failed.
+InvalidArgument – The permission overwrite information is not in proper form.
+
+
+- Returns
+The channel that was just created.
+
+- Return type
+StageChannel
+
+
+
+
+
+-
+await create_category(name, *, overwrites=..., reason=None, position=...)
+This function is a coroutine.
+Same as create_text_channel()
except makes a CategoryChannel
instead.
+
+
Note
+
The category
parameter is not supported in this function since categories
+cannot have categories.
+
+
+- Raises
+
+Forbidden – You do not have the proper permissions to create this channel.
+HTTPException – Creating the channel failed.
+InvalidArgument – The permission overwrite information is not in proper form.
+
+
+- Returns
+The channel that was just created.
+
+- Return type
+CategoryChannel
+
+
+
+
+
+-
+await create_category_channel(name, *, overwrites=..., reason=None, position=...)
+This function is a coroutine.
+Same as create_text_channel()
except makes a CategoryChannel
instead.
+
+
Note
+
The category
parameter is not supported in this function since categories
+cannot have categories.
+
+
+- Raises
+
+Forbidden – You do not have the proper permissions to create this channel.
+HTTPException – Creating the channel failed.
+InvalidArgument – The permission overwrite information is not in proper form.
+
+
+- Returns
+The channel that was just created.
+
+- Return type
+CategoryChannel
+
+
+
+
+
+-
+await leave()
+This function is a coroutine.
+Leaves the guild.
+
+
Note
+
You cannot leave the guild that you own, you must delete it instead
+via delete()
.
+
+
+- Raises
+HTTPException – Leaving the guild failed.
+
+
+
+
+
+-
+await delete()
+This function is a coroutine.
+Deletes the guild. You must be the guild owner to delete the
+guild.
+
+- Raises
+-
+
+
+
+
+
+-
+await edit(*, reason=..., name=..., description=..., icon=..., banner=..., splash=..., discovery_splash=..., community=..., region=..., afk_channel=..., owner=..., afk_timeout=..., default_notifications=..., verification_level=..., explicit_content_filter=..., vanity_code=..., system_channel=..., system_channel_flags=..., preferred_locale=..., rules_channel=..., public_updates_channel=...)
+This function is a coroutine.
+Edits the guild.
+You must have the manage_guild
permission
+to edit the guild.
+
+
Changed in version 1.4: The rules_channel and public_updates_channel keyword-only parameters were added.
+
+
+
Changed in version 2.0: The discovery_splash and community keyword-only parameters were added.
+
+
+
Changed in version 2.0: The newly updated guild is returned.
+
+
+- Parameters
+
+name (str
) – The new name of the guild.
+description (Optional[str
]) – The new description of the guild. Could be None
for no description.
+This is only available to guilds that contain PUBLIC
in Guild.features
.
+icon (bytes
) – A bytes-like object representing the icon. Only PNG/JPEG is supported.
+GIF is only available to guilds that contain ANIMATED_ICON
in Guild.features
.
+Could be None
to denote removal of the icon.
+banner (bytes
) – A bytes-like object representing the banner.
+Could be None
to denote removal of the banner. This is only available to guilds that contain
+BANNER
in Guild.features
.
+splash (bytes
) – A bytes-like object representing the invite splash.
+Only PNG/JPEG supported. Could be None
to denote removing the
+splash. This is only available to guilds that contain INVITE_SPLASH
+in Guild.features
.
+discovery_splash (bytes
) – A bytes-like object representing the discovery splash.
+Only PNG/JPEG supported. Could be None
to denote removing the
+splash. This is only available to guilds that contain DISCOVERABLE
+in Guild.features
.
+community (bool
) – Whether the guild should be a Community guild. If set to True
, both rules_channel
+and public_updates_channel
parameters are required.
+region (Union[str
, VoiceRegion
]) – The new region for the guild’s voice communication.
+afk_channel (Optional[VoiceChannel
]) – The new channel that is the AFK channel. Could be None
for no AFK channel.
+afk_timeout (int
) – The number of seconds until someone is moved to the AFK channel.
+owner (Member
) – The new owner of the guild to transfer ownership to. Note that you must
+be owner of the guild to do this.
+verification_level (VerificationLevel
) – The new verification level for the guild.
+default_notifications (NotificationLevel
) – The new default notification level for the guild.
+explicit_content_filter (ContentFilter
) – The new explicit content filter for the guild.
+vanity_code (str
) – The new vanity code for the guild.
+system_channel (Optional[TextChannel
]) – The new channel that is used for the system channel. Could be None
for no system channel.
+system_channel_flags (SystemChannelFlags
) – The new system channel settings to use with the new system channel.
+preferred_locale (str
) – The new preferred locale for the guild. Used as the primary language in the guild.
+If set, this must be an ISO 639 code, e.g. en-US
or ja
or zh-CN
.
+rules_channel (Optional[TextChannel
]) – The new channel that is used for rules. This is only available to
+guilds that contain PUBLIC
in Guild.features
. Could be None
for no rules
+channel.
+public_updates_channel (Optional[TextChannel
]) – The new channel that is used for public updates from Discord. This is only available to
+guilds that contain PUBLIC
in Guild.features
. Could be None
for no
+public updates channel.
+reason (Optional[str
]) – The reason for editing this guild. Shows up on the audit log.
+
+
+- Raises
+
+Forbidden – You do not have permissions to edit the guild.
+HTTPException – Editing the guild failed.
+InvalidArgument – The image format passed in to icon
is invalid. It must be
+ PNG or JPG. This is also raised if you are not the owner of the
+ guild and request an ownership transfer.
+
+
+- Returns
+The newly updated guild. Note that this has the same limitations as
+mentioned in Client.fetch_guild()
and may not have full data.
+
+- Return type
+Guild
+
+
+
+
+
+-
+await fetch_channels()
+This function is a coroutine.
+Retrieves all abc.GuildChannel
that the guild has.
+
+
Note
+
This method is an API call. For general usage, consider channels
instead.
+
+
+
+- Raises
+-
+
+- Returns
+All channels in the guild.
+
+- Return type
+Sequence[abc.GuildChannel
]
+
+
+
+
+
+-
+await active_threads()
+This function is a coroutine.
+Returns a list of active Thread
that the client can access.
+This includes both private and public threads.
+
+
+- Raises
+HTTPException – The request to get the active threads failed.
+
+- Returns
+The active threads
+
+- Return type
+List[Thread
]
+
+
+
+
+
+-
+await fetch_member(member_id, /)
+This function is a coroutine.
+Retrieves a Member
from a guild ID, and a member ID.
+
+
+- Parameters
+member_id (int
) – The member’s ID to fetch from.
+
+- Raises
+-
+
+- Returns
+The member from the member ID.
+
+- Return type
+Member
+
+
+
+
+
+-
+await try_member(member_id, /)
+This function is a coroutine.
+Returns a member with the given ID. This uses the cache first, and if not found, it’ll request using fetch_member()
.
+
+
Note
+
This method might result in an API call.
+
+
+- Parameters
+member_id (int
) – The ID to search for.
+
+- Returns
+The member or None
if not found.
+
+- Return type
+Optional[Member
]
+
+
+
+
+
+-
+await fetch_ban(user)
+This function is a coroutine.
+Retrieves the BanEntry
for a user.
+You must have the ban_members
permission
+to get this information.
+
+- Parameters
+user (abc.Snowflake
) – The user to get ban information from.
+
+- Raises
+
+Forbidden – You do not have proper permissions to get the information.
+NotFound – This user is not banned.
+HTTPException – An error occurred while fetching the information.
+
+
+- Returns
+The BanEntry
object for the specified user.
+
+- Return type
+BanEntry
+
+
+
+
+
+-
+await fetch_channel(channel_id, /)
+This function is a coroutine.
+Retrieves a abc.GuildChannel
or Thread
with the specified ID.
+
+
+
+- Raises
+
+InvalidData – An unknown channel type was received from Discord
+ or the guild the channel belongs to is not the same
+ as the one in this object points to.
+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
, Thread
]
+
+
+
+
+
+-
+await bans()
+This function is a coroutine.
+Retrieves all the users that are banned from the guild as a list
of BanEntry
.
+You must have the ban_members
permission
+to get this information.
+
+- Raises
+-
+
+- Returns
+A list of BanEntry
objects.
+
+- Return type
+List[BanEntry
]
+
+
+
+
+
+-
+await prune_members(*, days, compute_prune_count=True, roles=..., reason=None)
+This function is a coroutine.
+Prunes the guild from its inactive members.
+The inactive members are denoted if they have not logged on in
+days
number of days and they have no roles.
+You must have the kick_members
permission
+to use this.
+To check how many members you would prune without actually pruning,
+see the estimate_pruned_members()
function.
+To prune members that have specific roles see the roles
parameter.
+
+
Changed in version 1.4: The roles
keyword-only parameter was added.
+
+
+- Parameters
+
+days (int
) – The number of days before counting as inactive.
+reason (Optional[str
]) – The reason for doing this action. Shows up on the audit log.
+compute_prune_count (bool
) – Whether to compute the prune count. This defaults to True
+which makes it prone to timeouts in very large guilds. In order
+to prevent timeouts, you must set this to False
. If this is
+set to False
, then this function will always return None
.
+roles (List[abc.Snowflake
]) – A list of abc.Snowflake
that represent roles to include in the pruning process. If a member
+has a role that is not specified, they’ll be excluded.
+
+
+- Raises
+-
+
+- Returns
+The number of members pruned. If compute_prune_count
is False
+then this returns None
.
+
+- Return type
+Optional[int
]
+
+
+
+
+
+-
+await templates()
+This function is a coroutine.
+Gets the list of templates from this guild.
+Requires manage_guild
permissions.
+
+
+- Raises
+Forbidden – You don’t have permissions to get the templates.
+
+- Returns
+The templates for this guild.
+
+- Return type
+List[Template
]
+
+
+
+
+
+-
+await webhooks()
+This function is a coroutine.
+Gets the list of webhooks from this guild.
+Requires manage_webhooks
permissions.
+
+- Raises
+Forbidden – You don’t have permissions to get the webhooks.
+
+- Returns
+The webhooks for this guild.
+
+- Return type
+List[Webhook
]
+
+
+
+
+
+-
+await estimate_pruned_members(*, days, roles=...)
+This function is a coroutine.
+Similar to prune_members()
except instead of actually
+pruning members, it returns how many members it would prune
+from the guild had it been called.
+
+- Parameters
+
+days (int
) – The number of days before counting as inactive.
+roles (List[abc.Snowflake
]) –
A list of abc.Snowflake
that represent roles to include in the estimate. If a member
+has a role that is not specified, they’ll be excluded.
+
+
+
+
+- Raises
+
+Forbidden – You do not have permissions to prune members.
+HTTPException – An error occurred while fetching the prune members estimate.
+InvalidArgument – An integer was not passed for days
.
+
+
+- Returns
+The number of members estimated to be pruned.
+
+- Return type
+int
+
+
+
+
+
+-
+await invites()
+This function is a coroutine.
+Returns a list of all active instant invites from the guild.
+You must have the manage_guild
permission to get
+this information.
+
+- Raises
+-
+
+- Returns
+The list of invites that are currently active.
+
+- Return type
+List[Invite
]
+
+
+
+
+
+-
+await create_template(*, name, description=...)
+This function is a coroutine.
+Creates a template for the guild.
+You must have the manage_guild
permission to
+do this.
+
+
+- Parameters
+-
+
+
+
+
+
+-
+await create_integration(*, type, id)
+This function is a coroutine.
+Attaches an integration to the guild.
+You must have the manage_guild
permission to
+do this.
+
+
+- Parameters
+-
+
+- Raises
+-
+
+
+
+
+
+-
+await integrations()
+This function is a coroutine.
+Returns a list of all integrations attached to the guild.
+You must have the manage_guild
permission to
+do this.
+
+
+- Raises
+-
+
+- Returns
+The list of integrations that are attached to the guild.
+
+- Return type
+List[Integration
]
+
+
+
+
+
+-
+await fetch_stickers()
+This function is a coroutine.
+Retrieves a list of all Sticker
s for the guild.
+
+
+
Note
+
This method is an API call. For general usage, consider stickers
instead.
+
+
+- Raises
+HTTPException – An error occurred fetching the stickers.
+
+- Returns
+The retrieved stickers.
+
+- Return type
+List[GuildSticker
]
+
+
+
+
+
+-
+await fetch_sticker(sticker_id, /)
+This function is a coroutine.
+Retrieves a custom Sticker
from the guild.
+
+
+
Note
+
This method is an API call.
+For general usage, consider iterating over stickers
instead.
+
+
+- Parameters
+sticker_id (int
) – The sticker’s ID.
+
+- Raises
+-
+
+- Returns
+The retrieved sticker.
+
+- Return type
+GuildSticker
+
+
+
+
+
+-
+await create_sticker(*, name, description=None, emoji, file, reason=None)
+This function is a coroutine.
+Creates a Sticker
for the guild.
+You must have manage_emojis_and_stickers
permission to
+do this.
+
+
+- Parameters
+
+name (str
) – The sticker name. Must be at least 2 characters.
+description (Optional[str
]) – The sticker’s description. Can be None
.
+emoji (str
) – The name of a unicode emoji that represents the sticker’s expression.
+file (File
) – The file of the sticker to upload.
+reason (str
) – The reason for creating this sticker. Shows up on the audit log.
+
+
+- Raises
+-
+
+- Returns
+The created sticker.
+
+- Return type
+GuildSticker
+
+
+
+
+
+-
+await delete_sticker(sticker, *, reason=None)
+This function is a coroutine.
+Deletes the custom Sticker
from the guild.
+You must have manage_emojis_and_stickers
permission to
+do this.
+
+
+- Parameters
+-
+
+- Raises
+-
+
+
+
+
+
+-
+await fetch_emojis()
+This function is a coroutine.
+Retrieves all custom Emoji
s from the guild.
+
+
Note
+
This method is an API call. For general usage, consider emojis
instead.
+
+
+- Raises
+HTTPException – An error occurred fetching the emojis.
+
+- Returns
+The retrieved emojis.
+
+- Return type
+List[Emoji
]
+
+
+
+
+
+-
+await fetch_emoji(emoji_id, /)
+This function is a coroutine.
+Retrieves a custom Emoji
from the guild.
+
+
Note
+
This method is an API call.
+For general usage, consider iterating over emojis
instead.
+
+
+- Parameters
+emoji_id (int
) – The emoji’s ID.
+
+- Raises
+-
+
+- Returns
+The retrieved emoji.
+
+- Return type
+Emoji
+
+
+
+
+
+-
+await create_custom_emoji(*, name, image, roles=..., reason=None)
+This function is a coroutine.
+Creates a custom Emoji
for the guild.
+There is currently a limit of 50 static and animated emojis respectively per guild,
+unless the guild has the MORE_EMOJI
feature which extends the limit to 200.
+You must have the manage_emojis
permission to
+do this.
+
+- Parameters
+
+name (str
) – The emoji name. Must be at least 2 characters.
+image (bytes
) – The bytes-like object representing the image data to use.
+Only JPG, PNG and GIF images are supported.
+roles (List[Role
]) – A list
of Role
s that can use this emoji. Leave empty to make it available to everyone.
+reason (Optional[str
]) – The reason for creating this emoji. Shows up on the audit log.
+
+
+- Raises
+-
+
+- Returns
+The created emoji.
+
+- Return type
+Emoji
+
+
+
+
+
+-
+await delete_emoji(emoji, *, reason=None)
+This function is a coroutine.
+Deletes the custom Emoji
from the guild.
+You must have manage_emojis
permission to
+do this.
+
+- Parameters
+-
+
+- Raises
+-
+
+
+
+
+
+-
+await fetch_roles()
+This function is a coroutine.
+Retrieves all Role
that the guild has.
+
+
Note
+
This method is an API call. For general usage, consider roles
instead.
+
+
+
+- Raises
+HTTPException – Retrieving the roles failed.
+
+- Returns
+All roles in the guild.
+
+- Return type
+List[Role
]
+
+
+
+
+
+-
+await create_role(*, name=..., permissions=..., color=..., colour=..., hoist=..., mentionable=..., reason=None)
+This function is a coroutine.
+Creates a Role
for the guild.
+All fields are optional.
+You must have the manage_roles
permission to
+do this.
+
+
Changed in version 1.6: Can now pass int
to colour
keyword-only parameter.
+
+
+- Parameters
+
+name (str
) – The role name. Defaults to ‘new role’.
+permissions (Permissions
) – The permissions to have. Defaults to no permissions.
+colour (Union[Colour
, int
]) – The colour for the role. Defaults to Colour.default()
.
+This is aliased to color
as well.
+hoist (bool
) – Indicates if the role should be shown separately in the member list.
+Defaults to False
.
+mentionable (bool
) – Indicates if the role should be mentionable by others.
+Defaults to False
.
+reason (Optional[str
]) – The reason for creating this role. Shows up on the audit log.
+
+
+- Raises
+-
+
+- Returns
+The newly created role.
+
+- Return type
+Role
+
+
+
+
+
+-
+await edit_role_positions(positions, *, reason=None)
+This function is a coroutine.
+Bulk edits a list of Role
in the guild.
+You must have the manage_roles
permission to
+do this.
+
+Example:
+positions = {
+ bots_role: 1, # penultimate role
+ tester_role: 2,
+ admin_role: 6
+}
+
+await guild.edit_role_positions(positions=positions)
+
+
+
+- Parameters
+-
+
+- Raises
+-
+
+- Returns
+A list of all the roles in the guild.
+
+- Return type
+List[Role
]
+
+
+
+
+
+-
+await kick(user, *, reason=None)
+This function is a coroutine.
+Kicks a user from the guild.
+The user must meet the abc.Snowflake
abc.
+You must have the kick_members
permission to
+do this.
+
+- Parameters
+-
+
+- Raises
+-
+
+
+
+
+
+-
+await ban(user, *, reason=None, delete_message_days=1)
+This function is a coroutine.
+Bans a user from the guild.
+The user must meet the abc.Snowflake
abc.
+You must have the ban_members
permission to
+do this.
+
+- Parameters
+
+user (abc.Snowflake
) – The user to ban from their guild.
+delete_message_days (int
) – The number of days worth of messages to delete from the user
+in the guild. The minimum is 0 and the maximum is 7.
+reason (Optional[str
]) – The reason the user got banned.
+
+
+- Raises
+-
+
+
+
+
+
+-
+await unban(user, *, reason=None)
+This function is a coroutine.
+Unbans a user from the guild.
+The user must meet the abc.Snowflake
abc.
+You must have the ban_members
permission to
+do this.
+
+- Parameters
+-
+
+- Raises
+-
+
+
+
+
+
+-
+await vanity_invite()
+This function is a coroutine.
+Returns the guild’s special vanity invite.
+The guild must have VANITY_URL
in features
.
+You must have the manage_guild
permission to use
+this as well.
+
+- Raises
+-
+
+- Returns
+The special vanity invite. If None
then the guild does not
+have a vanity invite set.
+
+- Return type
+Optional[Invite
]
+
+
+
+
+
+-
+await widget()
+This function is a coroutine.
+Returns the widget of the guild.
+
+
Note
+
The guild must have the widget enabled to get this information.
+
+
+- Raises
+-
+
+- Returns
+The guild’s widget.
+
+- Return type
+Widget
+
+
+
+
+
+-
+await edit_widget(*, enabled=..., channel=...)
+This function is a coroutine.
+Edits the widget of the guild.
+You must have the manage_guild
permission to
+use this
+
+
+- Parameters
+-
+
+- Raises
+-
+
+
+
+
+
+-
+await chunk(*, cache=True)
+This function is a coroutine.
+Requests all members that belong to this guild. In order to use this,
+Intents.members()
must be enabled.
+This is a websocket operation and can be slow.
+
+
+- Parameters
+cache (bool
) – Whether to cache the members as well.
+
+- Raises
+ClientException – The members intent is not enabled.
+
+
+
+
+
+-
+await query_members(query=None, *, limit=5, user_ids=None, presences=False, cache=True)
+This function is a coroutine.
+Request members that belong to this guild whose username starts with
+the query given.
+This is a websocket operation and can be slow.
+
+
+- Parameters
+
+query (Optional[str
]) – The string that the username’s start with.
+limit (int
) – The maximum number of members to send back. This must be
+a number between 5 and 100.
+presences (bool
) –
Whether to request for presences to be provided. This defaults
+to False
.
+
+
+cache (bool
) – Whether to cache the members internally. This makes operations
+such as get_member()
work for those that matched.
+user_ids (Optional[List[int
]]) –
List of user IDs to search for. If the user ID is not in the guild then it won’t be returned.
+
+
+
+
+- Raises
+-
+
+- Returns
+The list of members that have matched the query.
+
+- Return type
+List[Member
]
+
+
+
+
+
+-
+await change_voice_state(*, channel, self_mute=False, self_deaf=False)
+This function is a coroutine.
+Changes client’s voice state in the guild.
+
+
+- Parameters
+
+channel (Optional[VoiceChannel
]) – Channel the client wants to join. Use None
to disconnect.
+self_mute (bool
) – Indicates if the client should be self-muted.
+self_deaf (bool
) – Indicates if the client should be self-deafened.
+
+
+
+
+
+
+
+
+-
+class discord.BanEntry
+A namedtuple which represents a ban returned from bans()
.
+
+-
+reason
+The reason this user was banned.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+user
+The User
that was banned.
+
+- Type
+User
+
+
+
+
+
+
+
+
+Integration
+
+-
+class discord.Integration
+Represents a guild integration.
+
+
+-
+id
+The integration ID.
+
+- Type
+int
+
+
+
+
+
+-
+name
+The integration name.
+
+- Type
+str
+
+
+
+
+
+-
+guild
+The guild of the integration.
+
+- Type
+Guild
+
+
+
+
+
+-
+type
+The integration type (i.e. Twitch).
+
+- Type
+str
+
+
+
+
+
+-
+enabled
+Whether the integration is currently enabled.
+
+- Type
+bool
+
+
+
+
+
+-
+account
+The account linked to this integration.
+
+- Type
+IntegrationAccount
+
+
+
+
+
+-
+user
+The user that added this integration.
+
+- Type
+User
+
+
+
+
+
+-
+await delete(*, reason=None)
+This function is a coroutine.
+Deletes the integration.
+You must have the manage_guild
permission to
+do this.
+
+- Parameters
+reason (str
) –
The reason the integration was deleted. Shows up on the audit log.
+
+
+
+- Raises
+-
+
+
+
+
+
+
+
+-
+class discord.IntegrationAccount
+Represents an integration account.
+
+
+-
+id
+The account ID.
+
+- Type
+str
+
+
+
+
+
+-
+name
+The account name.
+
+- Type
+str
+
+
+
+
+
+
+
+-
+class discord.BotIntegration
+Represents a bot integration on discord.
+
+
+-
+id
+The integration ID.
+
+- Type
+int
+
+
+
+
+
+-
+name
+The integration name.
+
+- Type
+str
+
+
+
+
+
+-
+guild
+The guild of the integration.
+
+- Type
+Guild
+
+
+
+
+
+-
+type
+The integration type (i.e. Twitch).
+
+- Type
+str
+
+
+
+
+
+-
+enabled
+Whether the integration is currently enabled.
+
+- Type
+bool
+
+
+
+
+
+-
+user
+The user that added this integration.
+
+- Type
+User
+
+
+
+
+
+-
+account
+The integration account information.
+
+- Type
+IntegrationAccount
+
+
+
+
+
+-
+application
+The application tied to this integration.
+
+- Type
+IntegrationApplication
+
+
+
+
+
+
+
+-
+class discord.IntegrationApplication
+Represents an application for a bot integration.
+
+
+-
+id
+The ID for this application.
+
+- Type
+int
+
+
+
+
+
+-
+name
+The application’s name.
+
+- Type
+str
+
+
+
+
+
+-
+icon
+The application’s icon hash.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+description
+The application’s description. Can be an empty string.
+
+- Type
+str
+
+
+
+
+
+-
+summary
+The summary of the application. Can be an empty string.
+
+- Type
+str
+
+
+
+
+
+-
+user
+The bot user on this application.
+
+- Type
+Optional[User
]
+
+
+
+
+
+
+
+-
+class discord.StreamIntegration
+Represents a stream integration for Twitch or YouTube.
+
+
+-
+id
+The integration ID.
+
+- Type
+int
+
+
+
+
+
+-
+name
+The integration name.
+
+- Type
+str
+
+
+
+
+
+-
+guild
+The guild of the integration.
+
+- Type
+Guild
+
+
+
+
+
+-
+type
+The integration type (i.e. Twitch).
+
+- Type
+str
+
+
+
+
+
+-
+enabled
+Whether the integration is currently enabled.
+
+- Type
+bool
+
+
+
+
+
+-
+syncing
+Where the integration is currently syncing.
+
+- Type
+bool
+
+
+
+
+
+-
+enable_emoticons
+Whether emoticons should be synced for this integration (currently twitch only).
+
+- Type
+Optional[bool
]
+
+
+
+
+
+-
+expire_behaviour
+The behaviour of expiring subscribers. Aliased to expire_behavior
as well.
+
+- Type
+ExpireBehaviour
+
+
+
+
+
+-
+expire_grace_period
+The grace period (in days) for expiring subscribers.
+
+- Type
+int
+
+
+
+
+
+-
+user
+The user for the integration.
+
+- Type
+User
+
+
+
+
+
+-
+account
+The integration account information.
+
+- Type
+IntegrationAccount
+
+
+
+
+
+-
+synced_at
+An aware UTC datetime representing when the integration was last synced.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+property expire_behavior
+An alias for expire_behaviour
.
+
+- Type
+ExpireBehaviour
+
+
+
+
+
+-
+property role
+Optional[Role
] The role which the integration uses for subscribers.
+
+
+
+-
+await edit(*, expire_behaviour=..., expire_grace_period=..., enable_emoticons=...)
+This function is a coroutine.
+Edits the integration.
+You must have the manage_guild
permission to
+do this.
+
+- Parameters
+
+expire_behaviour (ExpireBehaviour
) – The behaviour when an integration subscription lapses. Aliased to expire_behavior
as well.
+expire_grace_period (int
) – The period (in days) where the integration will ignore lapsed subscriptions.
+enable_emoticons (bool
) – Where emoticons should be synced for this integration (currently twitch only).
+
+
+- Raises
+-
+
+
+
+
+
+-
+await sync()
+This function is a coroutine.
+Syncs the integration.
+You must have the manage_guild
permission to
+do this.
+
+- Raises
+-
+
+
+
+
+
+
+
+
+Interaction
+
+-
+class discord.Interaction
+Represents a Discord interaction.
+An interaction happens when a user does an action that needs to
+be notified. Current examples are slash commands and components.
+
+
+-
+id
+The interaction’s ID.
+
+- Type
+int
+
+
+
+
+
+-
+type
+The interaction type.
+
+- Type
+InteractionType
+
+
+
+
+
+-
+guild_id
+The guild ID the interaction was sent from.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+channel_id
+The channel ID the interaction was sent from.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+application_id
+The application ID that the interaction was for.
+
+- Type
+int
+
+
+
+
+
+-
+user
+The user or member that sent the interaction.
+
+- Type
+Optional[Union[User
, Member
]]
+
+
+
+
+
+-
+message
+The message that sent this interaction.
+
+- Type
+Optional[Message
]
+
+
+
+
+
+-
+token
+The token to continue the interaction. These are valid
+for 15 minutes.
+
+- Type
+str
+
+
+
+
+
+-
+data
+The raw interaction data.
+
+- Type
+dict
+
+
+
+
+
+-
+property guild
+The guild the interaction was sent from.
+
+- Type
+Optional[Guild
]
+
+
+
+
+
+-
+channel
+The channel the interaction was sent from.
+Note that due to a Discord limitation, DM channels are not resolved since there is
+no data to complete them. These are PartialMessageable
instead.
+
+- Type
+Optional[Union[abc.GuildChannel
, PartialMessageable
, Thread
]]
+
+
+
+
+
+-
+property permissions
+The resolved permissions of the member in the channel, including overwrites.
+In a non-guild context where this doesn’t apply, an empty permissions object is returned.
+
+- Type
+Permissions
+
+
+
+
+
+-
+response
+Returns an object responsible for handling responding to the interaction.
+A response can only be done once. If secondary messages need to be sent, consider using followup
+instead.
+
+- Type
+InteractionResponse
+
+
+
+
+
+-
+followup
+Returns the follow up webhook for follow up interactions.
+
+- Type
+Webhook
+
+
+
+
+
+-
+await original_message()
+This function is a coroutine.
+Fetches the original interaction response message associated with the interaction.
+If the interaction response was InteractionResponse.send_message()
then this would
+return the message that was sent using that response. Otherwise, this would return
+the message that triggered the interaction.
+Repeated calls to this will return a cached value.
+
+- Raises
+-
+
+- Returns
+The original interaction response message.
+
+- Return type
+InteractionMessage
+
+
+
+
+
+-
+await edit_original_message(*, content=..., embeds=..., embed=..., file=..., files=..., view=..., allowed_mentions=None)
+This function is a coroutine.
+Edits the original interaction response message.
+This is a lower level interface to InteractionMessage.edit()
in case
+you do not want to fetch the message and save an HTTP request.
+This method is also the only way to edit the original message if
+the message sent was ephemeral.
+
+- Parameters
+
+content (Optional[str
]) – The content to edit the message with or None
to clear it.
+embeds (List[Embed
]) – A list of embeds to edit the message with.
+embed (Optional[Embed
]) – The embed to edit the message with. None
suppresses the embeds.
+This should not be mixed with the embeds
parameter.
+file (File
) – The file to upload. This cannot be mixed with files
parameter.
+files (List[File
]) – A list of files to send with the content. This cannot be mixed with the
+file
parameter.
+allowed_mentions (AllowedMentions
) – Controls the mentions being processed in this message.
+See abc.Messageable.send()
for more information.
+view (Optional[View
]) – The updated view to update this message with. If None
is passed then
+the view is removed.
+
+
+- Raises
+
+HTTPException – Editing the message failed.
+Forbidden – Edited a message that is not yours.
+TypeError – You specified both embed
and embeds
or file
and files
+ValueError – The length of embeds
was invalid.
+
+
+- Returns
+The newly edited message.
+
+- Return type
+InteractionMessage
+
+
+
+
+
+-
+await delete_original_message()
+This function is a coroutine.
+Deletes the original interaction response message.
+This is a lower level interface to InteractionMessage.delete()
in case
+you do not want to fetch the message and save an HTTP request.
+
+- Raises
+-
+
+
+
+
+
+
+
+
+InteractionResponse
+
+-
+class discord.InteractionResponse
+Represents a Discord interaction response.
+This type can be accessed through Interaction.response
.
+
+
+-
+is_done()
+bool
: Indicates whether an interaction response has been done before.
+An interaction can only be responded to once.
+
+
+
+-
+await defer(*, ephemeral=False)
+This function is a coroutine.
+Defers the interaction response.
+This is typically used when the interaction is acknowledged
+and a secondary action will be done later.
+
+- Parameters
+ephemeral (bool
) – Indicates whether the deferred message will eventually be ephemeral.
+This only applies for interactions of type InteractionType.application_command
.
+
+- Raises
+-
+
+
+
+
+
+-
+await pong()
+This function is a coroutine.
+Pongs the ping interaction.
+This should rarely be used.
+
+- Raises
+-
+
+
+
+
+
+-
+await send_message(content=None, *, embed=..., embeds=..., view=..., tts=False, ephemeral=False)
+This function is a coroutine.
+Responds to this interaction by sending a message.
+
+- Parameters
+
+content (Optional[str
]) – The content of the message to send.
+embeds (List[Embed
]) – A list of embeds to send with the content. Maximum of 10. This cannot
+be mixed with the embed
parameter.
+embed (Embed
) – The rich embed for the content to send. This cannot be mixed with
+embeds
parameter.
+tts (bool
) – Indicates if the message should be sent using text-to-speech.
+view (discord.ui.View
) – The view to send with the message.
+ephemeral (bool
) – Indicates if the message should only be visible to the user who started the interaction.
+If a view is sent with an ephemeral message and it has no timeout set then the timeout
+is set to 15 minutes.
+
+
+- Raises
+-
+
+
+
+
+
+-
+await edit_message(*, content=..., embed=..., embeds=..., attachments=..., view=...)
+This function is a coroutine.
+Responds to this interaction by editing the original message of
+a component interaction.
+
+- Parameters
+
+content (Optional[str
]) – The new content to replace the message with. None
removes the content.
+embeds (List[Embed
]) – A list of embeds to edit the message with.
+embed (Optional[Embed
]) – The embed to edit the message with. None
suppresses the embeds.
+This should not be mixed with the embeds
parameter.
+attachments (List[Attachment
]) – A list of attachments to keep in the message. If []
is passed
+then all attachments are removed.
+view (Optional[View
]) – The updated view to update this message with. If None
is passed then
+the view is removed.
+
+
+- Raises
+-
+
+
+
+
+
+
+
+
+InteractionMessage
+
+-
+class discord.InteractionMessage
+Represents the original interaction response message.
+This allows you to edit or delete the message associated with
+the interaction response. To retrieve this object see Interaction.original_message()
.
+This inherits from discord.Message
with changes to
+edit()
and delete()
to work.
+
+
+-
+await edit(content=..., embeds=..., embed=..., file=..., files=..., view=..., allowed_mentions=None)
+This function is a coroutine.
+Edits the message.
+
+- Parameters
+
+content (Optional[str
]) – The content to edit the message with or None
to clear it.
+embeds (List[Embed
]) – A list of embeds to edit the message with.
+embed (Optional[Embed
]) – The embed to edit the message with. None
suppresses the embeds.
+This should not be mixed with the embeds
parameter.
+file (File
) – The file to upload. This cannot be mixed with files
parameter.
+files (List[File
]) – A list of files to send with the content. This cannot be mixed with the
+file
parameter.
+allowed_mentions (AllowedMentions
) – Controls the mentions being processed in this message.
+See abc.Messageable.send()
for more information.
+view (Optional[View
]) – The updated view to update this message with. If None
is passed then
+the view is removed.
+
+
+- Raises
+
+HTTPException – Editing the message failed.
+Forbidden – Edited a message that is not yours.
+TypeError – You specified both embed
and embeds
or file
and files
+ValueError – The length of embeds
was invalid.
+
+
+- Returns
+The newly edited message.
+
+- Return type
+InteractionMessage
+
+
+
+
+
+-
+await delete(*, delay=None)
+This function is a coroutine.
+Deletes the message.
+
+- Parameters
+delay (Optional[float
]) – If provided, the number of seconds to wait before deleting the message.
+The waiting is done in the background and deletion failures are ignored.
+
+- Raises
+
+Forbidden – You do not have proper permissions to delete the message.
+NotFound – The message was deleted already.
+HTTPException – Deleting the message failed.
+
+
+
+
+
+
+
+
+
+Member
+
+-
+class discord.Member
+Represents a Discord member to a Guild
.
+This implements a lot of the functionality of User
.
+
+
+-
+x == y
+Checks if two members are equal.
+Note that this works with User
instances too.
+
+
+
+-
+x != y
+Checks if two members are not equal.
+Note that this works with User
instances too.
+
+
+
+-
+hash(x)
+Returns the member’s hash.
+
+
+
+-
+str(x)
+Returns the member’s name with the discriminator.
+
+
+
+-
+int(x)
+Returns the user’s ID.
+
+
+
+
+-
+joined_at
+An aware datetime object that specifies the date and time in UTC that the member joined the guild.
+If the member left and rejoined the guild, this will be the latest date. In certain cases, this can be None
.
+
+- Type
+Optional[datetime.datetime
]
+
+
+
+
+
+-
+activities
+The activities that the user is currently doing.
+
+
Note
+
Due to a Discord API limitation, a user’s Spotify activity may not appear
+if they are listening to a song with a title longer
+than 128 characters. See GH-1738 for more information.
+
+
+- Type
+Tuple[Union[BaseActivity
, Spotify
]]
+
+
+
+
+
+-
+guild
+The guild that the member belongs to.
+
+- Type
+Guild
+
+
+
+
+
+-
+nick
+The guild specific nickname of the user.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+pending
+Whether the member is pending member verification.
+
+
+- Type
+bool
+
+
+
+
+
+-
+premium_since
+An aware datetime object that specifies the date and time in UTC when the member used their
+“Nitro boost” on the guild, if available. This could be None
.
+
+- Type
+Optional[datetime.datetime
]
+
+
+
+
+
+-
+async for ... in history(*, limit=100, before=None, after=None, around=None, oldest_first=None)
+Returns an AsyncIterator
that enables receiving the destination’s message history.
+You must have read_message_history
permissions to use this.
+Examples
+Usage
+counter = 0
+async for message in channel.history(limit=200):
+ if message.author == client.user:
+ counter += 1
+
+
+Flattening into a list:
+messages = await channel.history(limit=123).flatten()
+# messages is now a list of Message...
+
+
+All parameters are optional.
+
+- Parameters
+
+limit (Optional[int
]) – The number of messages to retrieve.
+If None
, retrieves every message in the channel. Note, however,
+that this would make it a slow operation.
+before (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages before this date or message.
+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 (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages after this date or message.
+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.
+around (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages around this date or message.
+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.
+When using this argument, the maximum limit is 101. Note that if the limit is an
+even number then this will return at most limit + 1 messages.
+oldest_first (Optional[bool
]) – If set to True
, return messages in oldest->newest order. Defaults to True
if
+after
is specified, otherwise False
.
+
+
+- Raises
+-
+
+- Yields
+Message
– The message with the message data parsed.
+
+
+
+
+
+-
+async with typing()
+Returns a context manager that allows you to type for an indefinite period of time.
+This is useful for denoting long computations in your bot.
+
+
Note
+
This is both a regular context manager and an async context manager.
+This means that both with
and async with
work with this.
+
+Example Usage:
+async with channel.typing():
+ # simulate something heavy
+ await asyncio.sleep(10)
+
+await channel.send('done!')
+
+
+
+
+
+-
+property name
+Equivalent to User.name
+
+
+
+-
+property id
+Equivalent to User.id
+
+
+
+-
+property discriminator
+Equivalent to User.discriminator
+
+
+
+-
+property bot
+Equivalent to User.bot
+
+
+
+-
+property system
+Equivalent to User.system
+
+
+
+-
+property created_at
+Equivalent to User.created_at
+
+
+
+-
+property default_avatar
+Equivalent to User.default_avatar
+
+
+
+-
+property avatar
+Equivalent to User.avatar
+
+
+
+-
+property dm_channel
+Equivalent to User.dm_channel
+
+
+
+-
+await create_dm()
+This function is a coroutine.
+Creates a DMChannel
with this user.
+This should be rarely called, as this is done transparently for most
+people.
+
+- Returns
+The channel that was created.
+
+- Return type
+DMChannel
+
+
+
+
+
+-
+property mutual_guilds
+Equivalent to User.mutual_guilds
+
+
+
+-
+property public_flags
+Equivalent to User.public_flags
+
+
+
+-
+property banner
+Equivalent to User.banner
+
+
+
+-
+property accent_color
+Equivalent to User.accent_color
+
+
+
+-
+property accent_colour
+Equivalent to User.accent_colour
+
+
+
+-
+property raw_status
+The member’s overall status as a string value.
+
+
+- Type
+str
+
+
+
+
+
+-
+property status
+The member’s overall status. If the value is unknown, then it will be a str
instead.
+
+- Type
+Status
+
+
+
+
+
+-
+property mobile_status
+The member’s status on a mobile device, if applicable.
+
+- Type
+Status
+
+
+
+
+
+-
+property desktop_status
+The member’s status on the desktop client, if applicable.
+
+- Type
+Status
+
+
+
+
+
+-
+property web_status
+The member’s status on the web client, if applicable.
+
+- Type
+Status
+
+
+
+
+
+-
+is_on_mobile()
+bool
: A helper function that determines if a member is active on a mobile device.
+
+
+
+-
+property colour
+A property that returns a colour denoting the rendered colour
+for the member. If the default colour is the one rendered then an instance
+of Colour.default()
is returned.
+There is an alias for this named color
.
+
+- Type
+Colour
+
+
+
+
+
+-
+property color
+A property that returns a color denoting the rendered color for
+the member. If the default color is the one rendered then an instance of Colour.default()
+is returned.
+There is an alias for this named colour
.
+
+- Type
+Colour
+
+
+
+
+
+-
+property roles
+A list
of Role
that the member belongs to. Note
+that the first element of this list is always the default ‘@everyone’
+role.
+These roles are sorted by their position in the role hierarchy.
+
+- Type
+List[Role
]
+
+
+
+
+
+-
+property mention
+Returns a string that allows you to mention the member.
+
+- Type
+str
+
+
+
+
+
+-
+property display_name
+Returns the user’s display name.
+For regular users this is just their username, but
+if they have a guild specific nickname then that
+is returned instead.
+
+- Type
+str
+
+
+
+
+
+-
+property display_avatar
+Returns the member’s display avatar.
+For regular members this is just their avatar, but
+if they have a guild specific avatar then that
+is returned instead.
+
+
+- Type
+Asset
+
+
+
+
+
+-
+property guild_avatar
+Returns an Asset
for the guild avatar
+the member has. If unavailable, None
is returned.
+
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+-
+property activity
+Returns the primary
+activity the user is currently doing. Could be None
if no activity is being done.
+
+
Note
+
Due to a Discord API limitation, this may be None
if
+the user is listening to a song on Spotify with a title longer
+than 128 characters. See GH-1738 for more information.
+
+
+
Note
+
A user may have multiple activities, these can be accessed under activities
.
+
+
+- Type
+Optional[Union[BaseActivity
, Spotify
]]
+
+
+
+
+
+-
+mentioned_in(message)
+Checks if the member is mentioned in the specified message.
+
+- Parameters
+message (Message
) – The message to check if you’re mentioned in.
+
+- Returns
+Indicates if the member is mentioned in the message.
+
+- Return type
+bool
+
+
+
+
+
+-
+property top_role
+Returns the member’s highest role.
+This is useful for figuring where a member stands in the role
+hierarchy chain.
+
+- Type
+Role
+
+
+
+
+
+-
+property guild_permissions
+Returns the member’s guild permissions.
+This only takes into consideration the guild permissions
+and not most of the implied permissions or any of the
+channel permission overwrites. For 100% accurate permission
+calculation, please use abc.GuildChannel.permissions_for()
.
+This does take into consideration guild ownership and the
+administrator implication.
+
+- Type
+Permissions
+
+
+
+
+
+-
+property voice
+Returns the member’s current voice state.
+
+- Type
+Optional[VoiceState
]
+
+
+
+
+
+-
+await ban(*, delete_message_days=1, reason=None)
+This function is a coroutine.
+Bans this member. Equivalent to Guild.ban()
.
+
+
+
+-
+await unban(*, reason=None)
+This function is a coroutine.
+Unbans this member. Equivalent to Guild.unban()
.
+
+
+
+-
+await kick(*, reason=None)
+This function is a coroutine.
+Kicks this member. Equivalent to Guild.kick()
.
+
+
+
+-
+await edit(*, nick=..., mute=..., deafen=..., suppress=..., roles=..., voice_channel=..., reason=None)
+This function is a coroutine.
+Edits the member’s data.
+Depending on the parameter passed, this requires different permissions listed below:
+All parameters are optional.
+
+
Changed in version 1.1: Can now pass None
to voice_channel
to kick a member from voice.
+
+
+
Changed in version 2.0: The newly member is now optionally returned, if applicable.
+
+
+- Parameters
+
+nick (Optional[str
]) – The member’s new nickname. Use None
to remove the nickname.
+mute (bool
) – Indicates if the member should be guild muted or un-muted.
+deafen (bool
) – Indicates if the member should be guild deafened or un-deafened.
+suppress (bool
) –
Indicates if the member should be suppressed in stage channels.
+
+
+roles (List[Role
]) – The member’s new list of roles. This replaces the roles.
+voice_channel (Optional[VoiceChannel
]) – The voice channel to move the member to.
+Pass None
to kick them from voice.
+reason (Optional[str
]) – The reason for editing this member. Shows up on the audit log.
+
+
+- Raises
+-
+
+- Returns
+The newly updated member, if applicable. This is only returned
+when certain fields are updated.
+
+- Return type
+Optional[Member
]
+
+
+
+
+
+-
+await request_to_speak()
+This function is a coroutine.
+Request to speak in the connected channel.
+Only applies to stage channels.
+
+
Note
+
Requesting members that are not the client is equivalent
+to edit
providing suppress
as False
.
+
+
+
+- Raises
+-
+
+
+
+
+
+-
+await move_to(channel, *, reason=None)
+This function is a coroutine.
+Moves a member to a new voice channel (they must be connected first).
+You must have the move_members
permission to
+use this.
+This raises the same exceptions as edit()
.
+
+
Changed in version 1.1: Can now pass None
to kick a member from voice.
+
+
+- Parameters
+
+channel (Optional[VoiceChannel
]) – The new voice channel to move the member to.
+Pass None
to kick them from voice.
+reason (Optional[str
]) – The reason for doing this action. Shows up on the audit log.
+
+
+
+
+
+
+-
+await add_roles(*roles, reason=None, atomic=True)
+This function is a coroutine.
+Gives the member a number of Role
s.
+You must have the manage_roles
permission to
+use this, and the added Role
s must appear lower in the list
+of roles than the highest role of the member.
+
+- Parameters
+
+*roles (abc.Snowflake
) – An argument list of abc.Snowflake
representing a Role
+to give to the member.
+reason (Optional[str
]) – The reason for adding these roles. Shows up on the audit log.
+atomic (bool
) – Whether to atomically add roles. This will ensure that multiple
+operations will always be applied regardless of the current
+state of the cache.
+
+
+- Raises
+-
+
+
+
+
+
+-
+await fetch_message(id, /)
+This function is a coroutine.
+Retrieves a single Message
from the destination.
+
+- Parameters
+id (int
) – The message ID to look for.
+
+- Raises
+
+NotFound – The specified message was not found.
+Forbidden – You do not have the permissions required to get a message.
+HTTPException – Retrieving the message failed.
+
+
+- Returns
+The message asked for.
+
+- Return type
+Message
+
+
+
+
+
+-
+await pins()
+This function is a coroutine.
+Retrieves all messages that are currently pinned in the channel.
+
+
Note
+
Due to a limitation with the Discord API, the Message
+objects returned by this method do not contain complete
+Message.reactions
data.
+
+
+- Raises
+HTTPException – Retrieving the pinned messages failed.
+
+- Returns
+The messages that are currently pinned.
+
+- Return type
+List[Message
]
+
+
+
+
+
+-
+await remove_roles(*roles, reason=None, atomic=True)
+This function is a coroutine.
+Removes Role
s from this member.
+You must have the manage_roles
permission to
+use this, and the removed Role
s must appear lower in the list
+of roles than the highest role of the member.
+
+- Parameters
+
+*roles (abc.Snowflake
) – An argument list of abc.Snowflake
representing a Role
+to remove from the member.
+reason (Optional[str
]) – The reason for removing these roles. Shows up on the audit log.
+atomic (bool
) – Whether to atomically remove roles. This will ensure that multiple
+operations will always be applied regardless of the current
+state of the cache.
+
+
+- Raises
+-
+
+
+
+
+
+-
+await send(content=None, *, tts=None, embed=None, embeds=None, file=None, files=None, stickers=None, delete_after=None, nonce=None, allowed_mentions=None, reference=None, mention_author=None, view=None)
+This function is a coroutine.
+Sends a message to the destination with the content given.
+The content must be a type that can convert to a string through str(content)
.
+If the content is set to None
(the default), then the embed
parameter must
+be provided.
+To upload a single file, the file
parameter should be used with a
+single File
object. To upload multiple files, the files
+parameter should be used with a list
of File
objects.
+Specifying both parameters will lead to an exception.
+To upload a single embed, the embed
parameter should be used with a
+single Embed
object. To upload multiple embeds, the embeds
+parameter should be used with a list
of Embed
objects.
+Specifying both parameters will lead to an exception.
+
+- Parameters
+
+content (Optional[str
]) – The content of the message to send.
+tts (bool
) – Indicates if the message should be sent using text-to-speech.
+embed (Embed
) – The rich embed for the content.
+file (File
) – The file to upload.
+files (List[File
]) – A list of files to upload. Must be a maximum of 10.
+nonce (int
) – The nonce to use for sending this message. If the message was successfully sent,
+then the message will have a nonce with this value.
+delete_after (float
) – If provided, the number of seconds to wait in the background
+before deleting the message we just sent. If the deletion fails,
+then it is silently ignored.
+allowed_mentions (AllowedMentions
) –
Controls the mentions being processed in this message. If this is
+passed, then the object is merged with allowed_mentions
.
+The merging behaviour only overrides attributes that have been explicitly passed
+to the object, otherwise it uses the attributes set in allowed_mentions
.
+If no object is passed at all then the defaults given by allowed_mentions
+are used instead.
+
+
+reference (Union[Message
, MessageReference
, PartialMessage
]) –
A reference to the Message
to which you are replying, this can be created using
+to_reference()
or passed directly as a Message
. You can control
+whether this mentions the author of the referenced message using the replied_user
+attribute of allowed_mentions
or by setting mention_author
.
+
+
+mention_author (Optional[bool
]) –
If set, overrides the replied_user
attribute of allowed_mentions
.
+
+
+view (discord.ui.View
) – A Discord UI View to add to the message.
+embeds (List[Embed
]) –
A list of embeds to upload. Must be a maximum of 10.
+
+
+stickers (Sequence[Union[GuildSticker
, StickerItem
]]) –
A list of stickers to upload. Must be a maximum of 3.
+
+
+
+
+- Raises
+-
+
+- Returns
+The message that was sent.
+
+- Return type
+Message
+
+
+
+
+
+-
+await trigger_typing()
+This function is a coroutine.
+Triggers a typing indicator to the destination.
+Typing indicator will go away after 10 seconds, or after a message is sent.
+
+
+
+-
+get_role(role_id, /)
+Returns a role with the given ID from roles which the member has.
+
+
+- Parameters
+role_id (int
) – The ID to search for.
+
+- Returns
+The role or None
if not found in the member’s roles.
+
+- Return type
+Optional[Role
]
+
+
+
+
+
+
+
+
+Spotify
+
+-
+class discord.Spotify
+Represents a Spotify listening activity from Discord. This is a special case of
+Activity
that makes it easier to work with the Spotify integration.
+
+
+-
+x == y
+Checks if two activities are equal.
+
+
+
+-
+x != y
+Checks if two activities are not equal.
+
+
+
+-
+hash(x)
+Returns the activity’s hash.
+
+
+
+-
+str(x)
+Returns the string ‘Spotify’.
+
+
+
+
+-
+property type
+Returns the activity’s type. This is for compatibility with Activity
.
+It always returns ActivityType.listening
.
+
+- Type
+ActivityType
+
+
+
+
+
+-
+property created_at
+When the user started listening in UTC.
+
+
+- Type
+Optional[datetime.datetime
]
+
+
+
+
+
+-
+property colour
+Returns the Spotify integration colour, as a Colour
.
+There is an alias for this named color
+
+- Type
+Colour
+
+
+
+
+
+-
+property color
+Returns the Spotify integration colour, as a Colour
.
+There is an alias for this named colour
+
+- Type
+Colour
+
+
+
+
+
+-
+property name
+The activity’s name. This will always return “Spotify”.
+
+- Type
+str
+
+
+
+
+
+-
+property title
+The title of the song being played.
+
+- Type
+str
+
+
+
+
+
+-
+property artists
+The artists of the song being played.
+
+- Type
+List[str
]
+
+
+
+
+
+-
+property artist
+The artist of the song being played.
+This does not attempt to split the artist information into
+multiple artists. Useful if there’s only a single artist.
+
+- Type
+str
+
+
+
+
+
+-
+property album
+The album that the song being played belongs to.
+
+- Type
+str
+
+
+
+
+
+-
+property album_cover_url
+The album cover image URL from Spotify’s CDN.
+
+- Type
+str
+
+
+
+
+
+-
+property track_id
+The track ID used by Spotify to identify this song.
+
+- Type
+str
+
+
+
+
+
+-
+property track_url
+The track URL to listen on Spotify.
+
+
+- Type
+str
+
+
+
+
+
+-
+property start
+When the user started playing this song in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+property end
+When the user will stop playing this song in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+property duration
+The duration of the song being played.
+
+- Type
+datetime.timedelta
+
+
+
+
+
+-
+property party_id
+The party ID of the listening party.
+
+- Type
+str
+
+
+
+
+
+
+
+
+VoiceState
+
+-
+class discord.VoiceState
+Represents a Discord user’s voice state.
+
+-
+deaf
+Indicates if the user is currently deafened by the guild.
+
+- Type
+bool
+
+
+
+
+
+-
+mute
+Indicates if the user is currently muted by the guild.
+
+- Type
+bool
+
+
+
+
+
+-
+self_mute
+Indicates if the user is currently muted by their own accord.
+
+- Type
+bool
+
+
+
+
+
+-
+self_deaf
+Indicates if the user is currently deafened by their own accord.
+
+- Type
+bool
+
+
+
+
+
+-
+self_stream
+Indicates if the user is currently streaming via ‘Go Live’ feature.
+
+
+- Type
+bool
+
+
+
+
+
+-
+self_video
+Indicates if the user is currently broadcasting video.
+
+- Type
+bool
+
+
+
+
+
+-
+suppress
+Indicates if the user is suppressed from speaking.
+Only applies to stage channels.
+
+
+- Type
+bool
+
+
+
+
+
+-
+requested_to_speak_at
+An aware datetime object that specifies the date and time in UTC that the member
+requested to speak. It will be None
if they are not requesting to speak
+anymore or have been accepted to speak.
+Only applicable to stage channels.
+
+
+- Type
+Optional[datetime.datetime
]
+
+
+
+
+
+-
+afk
+Indicates if the user is currently in the AFK channel in the guild.
+
+- Type
+bool
+
+
+
+
+
+-
+channel
+The voice channel that the user is currently connected to. None
if the user
+is not currently in a voice channel.
+
+- Type
+Optional[Union[VoiceChannel
, StageChannel
]]
+
+
+
+
+
+
+
+
+Emoji
+
+-
+class discord.Emoji
+Represents a custom emoji.
+Depending on the way this object was created, some of the attributes can
+have a value of None
.
+
+
+-
+x == y
+Checks if two emoji are the same.
+
+
+
+-
+x != y
+Checks if two emoji are not the same.
+
+
+
+-
+hash(x)
+Return the emoji’s hash.
+
+
+
+-
+iter(x)
+Returns an iterator of (field, value)
pairs. This allows this class
+to be used as an iterable in list/dict/etc constructions.
+
+
+
+-
+str(x)
+Returns the emoji rendered for discord.
+
+
+
+-
+int(x)
+Returns the emoji ID.
+
+
+
+
+-
+name
+The name of the emoji.
+
+- Type
+str
+
+
+
+
+
+-
+id
+The emoji’s ID.
+
+- Type
+int
+
+
+
+
+
+-
+require_colons
+If colons are required to use this emoji in the client (:PJSalt: vs PJSalt).
+
+- Type
+bool
+
+
+
+
+
+-
+animated
+Whether an emoji is animated or not.
+
+- Type
+bool
+
+
+
+
+
+-
+managed
+If this emoji is managed by a Twitch integration.
+
+- Type
+bool
+
+
+
+
+
+-
+guild_id
+The guild ID the emoji belongs to.
+
+- Type
+int
+
+
+
+
+
+-
+available
+Whether the emoji is available for use.
+
+- Type
+bool
+
+
+
+
+
+-
+user
+The user that created the emoji. This can only be retrieved using Guild.fetch_emoji()
and
+having the manage_emojis
permission.
+
+- Type
+Optional[User
]
+
+
+
+
+
+-
+property created_at
+Returns the emoji’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+property url
+Returns the URL of the emoji.
+
+- Type
+str
+
+
+
+
+
+-
+property roles
+A list
of roles that is allowed to use this emoji.
+If roles is empty, the emoji is unrestricted.
+
+- Type
+List[Role
]
+
+
+
+
+
+-
+property guild
+The guild this emoji belongs to.
+
+- Type
+Guild
+
+
+
+
+
+-
+is_usable()
+bool
: Whether the bot can use this emoji.
+
+
+
+
+-
+await delete(*, reason=None)
+This function is a coroutine.
+Deletes the custom emoji.
+You must have manage_emojis
permission to
+do this.
+
+- Parameters
+reason (Optional[str
]) – The reason for deleting this emoji. Shows up on the audit log.
+
+- Raises
+-
+
+
+
+
+
+-
+await edit(*, name=..., roles=..., reason=None)
+This function is a coroutine.
+Edits the custom emoji.
+You must have manage_emojis
permission to
+do this.
+
+
Changed in version 2.0: The newly updated emoji is returned.
+
+
+- Parameters
+
+name (str
) – The new emoji name.
+roles (Optional[List[Snowflake
]]) – A list of roles that can use this emoji. An empty list can be passed to make it available to everyone.
+reason (Optional[str
]) – The reason for editing this emoji. Shows up on the audit log.
+
+
+- Raises
+-
+
+- Returns
+The newly updated emoji.
+
+- Return type
+Emoji
+
+
+
+
+
+-
+await read()
+This function is a coroutine.
+Retrieves the content of this asset as a bytes
object.
+
+- Raises
+-
+
+- Returns
+The content of the asset.
+
+- Return type
+bytes
+
+
+
+
+
+-
+await save(fp, *, seek_begin=True)
+This function is a coroutine.
+Saves this asset into a file-like object.
+
+- Parameters
+
+fp (Union[io.BufferedIOBase
, os.PathLike
]) – The file-like object to save this attachment to or the filename
+to use. If a filename is passed then a file is created with that
+filename and used instead.
+seek_begin (bool
) – Whether to seek to the beginning of the file after saving is
+successfully done.
+
+
+- Raises
+-
+
+- Returns
+The number of bytes written.
+
+- Return type
+int
+
+
+
+
+
+
+
+
+PartialEmoji
+
+-
+class discord.PartialEmoji
+Represents a “partial” emoji.
+This model will be given in two scenarios:
+
+
+
+-
+x == y
+Checks if two emoji are the same.
+
+
+
+-
+x != y
+Checks if two emoji are not the same.
+
+
+
+-
+hash(x)
+Return the emoji’s hash.
+
+
+
+-
+str(x)
+Returns the emoji rendered for discord.
+
+
+
+
+-
+name
+The custom emoji name, if applicable, or the unicode codepoint
+of the non-custom emoji. This can be None
if the emoji
+got deleted (e.g. removing a reaction with a deleted emoji).
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+animated
+Whether the emoji is animated or not.
+
+- Type
+bool
+
+
+
+
+
+-
+id
+The ID of the custom emoji, if applicable.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+classmethod from_str(value)
+Converts a Discord string representation of an emoji to a PartialEmoji
.
+The formats accepted are:
+
+a:name:id
+<a:name:id>
+name:id
+<:name:id>
+
+If the format does not match then it is assumed to be a unicode emoji.
+
+
+- Parameters
+value (str
) – The string representation of an emoji.
+
+- Returns
+The partial emoji from this string.
+
+- Return type
+PartialEmoji
+
+
+
+
+
+-
+is_custom_emoji()
+bool
: Checks if this is a custom non-Unicode emoji.
+
+
+
+-
+is_unicode_emoji()
+bool
: Checks if this is a Unicode emoji.
+
+
+
+-
+property created_at
+Returns the emoji’s creation time in UTC, or None if Unicode emoji.
+
+
+- Type
+Optional[datetime.datetime
]
+
+
+
+
+
+-
+property url
+Returns the URL of the emoji, if it is custom.
+If this isn’t a custom emoji then an empty string is returned
+
+- Type
+str
+
+
+
+
+
+-
+await read()
+This function is a coroutine.
+Retrieves the content of this asset as a bytes
object.
+
+- Raises
+-
+
+- Returns
+The content of the asset.
+
+- Return type
+bytes
+
+
+
+
+
+-
+await save(fp, *, seek_begin=True)
+This function is a coroutine.
+Saves this asset into a file-like object.
+
+- Parameters
+
+fp (Union[io.BufferedIOBase
, os.PathLike
]) – The file-like object to save this attachment to or the filename
+to use. If a filename is passed then a file is created with that
+filename and used instead.
+seek_begin (bool
) – Whether to seek to the beginning of the file after saving is
+successfully done.
+
+
+- Raises
+-
+
+- Returns
+The number of bytes written.
+
+- Return type
+int
+
+
+
+
+
+
+
+
+Role
+
+-
+class discord.Role
+Represents a Discord role in a Guild
.
+
+
+-
+x == y
+Checks if two roles are equal.
+
+
+
+-
+x != y
+Checks if two roles are not equal.
+
+
+
+-
+x > y
+Checks if a role is higher than another in the hierarchy.
+
+
+
+-
+x < y
+Checks if a role is lower than another in the hierarchy.
+
+
+
+-
+x >= y
+Checks if a role is higher or equal to another in the hierarchy.
+
+
+
+-
+x <= y
+Checks if a role is lower or equal to another in the hierarchy.
+
+
+
+-
+hash(x)
+Return the role’s hash.
+
+
+
+-
+str(x)
+Returns the role’s name.
+
+
+
+-
+str(x)
+Returns the role’s ID.
+
+
+
+-
+int(x)
+Returns the role’s ID.
+
+
+
+
+-
+id
+The ID for the role.
+
+- Type
+int
+
+
+
+
+
+-
+name
+The name of the role.
+
+- Type
+str
+
+
+
+
+
+-
+guild
+The guild the role belongs to.
+
+- Type
+Guild
+
+
+
+
+
+-
+hoist
+Indicates if the role will be displayed separately from other members.
+
+- Type
+bool
+
+
+
+
+
+-
+position
+The position of the role. This number is usually positive. The bottom
+role has a position of 0.
+
+
Warning
+
Multiple roles can have the same position number. As a consequence
+of this, comparing via role position is prone to subtle bugs if
+checking for role hierarchy. The recommended and correct way to
+compare for roles in the hierarchy is using the comparison
+operators on the role objects themselves.
+
+
+- Type
+int
+
+
+
+
+
+-
+managed
+Indicates if the role is managed by the guild through some form of
+integrations such as Twitch.
+
+- Type
+bool
+
+
+
+
+
+-
+mentionable
+Indicates if the role can be mentioned by users.
+
+- Type
+bool
+
+
+
+
+
+-
+tags
+The role tags associated with this role.
+
+- Type
+Optional[RoleTags
]
+
+
+
+
+
+-
+is_default()
+bool
: Checks if the role is the default role.
+
+
+
+-
+is_bot_managed()
+bool
: Whether the role is associated with a bot.
+
+
+
+
+-
+is_premium_subscriber()
+bool
: Whether the role is the premium subscriber, AKA “boost”, role for the guild.
+
+
+
+
+-
+is_integration()
+bool
: Whether the role is managed by an integration.
+
+
+
+
+-
+is_assignable()
+bool
: Whether the role is able to be assigned or removed by the bot.
+
+
+
+
+-
+property permissions
+Returns the role’s permissions.
+
+- Type
+Permissions
+
+
+
+
+
+-
+property colour
+Returns the role colour. An alias exists under color
.
+
+- Type
+Colour
+
+
+
+
+
+-
+property color
+Returns the role color. An alias exists under colour
.
+
+- Type
+Colour
+
+
+
+
+
+-
+property created_at
+Returns the role’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+property mention
+Returns a string that allows you to mention a role.
+
+- Type
+str
+
+
+
+
+
+-
+property members
+Returns all the members with this role.
+
+- Type
+List[Member
]
+
+
+
+
+
+-
+await edit(*, name=..., permissions=..., colour=..., color=..., hoist=..., mentionable=..., position=..., reason=...)
+This function is a coroutine.
+Edits the role.
+You must have the manage_roles
permission to
+use this.
+All fields are optional.
+
+
Changed in version 1.4: Can now pass int
to colour
keyword-only parameter.
+
+
+
Changed in version 2.0: Edits are no longer in-place, the newly edited role is returned instead.
+
+
+- Parameters
+
+name (str
) – The new role name to change to.
+permissions (Permissions
) – The new permissions to change to.
+colour (Union[Colour
, int
]) – The new colour to change to. (aliased to color as well)
+hoist (bool
) – Indicates if the role should be shown separately in the member list.
+mentionable (bool
) – Indicates if the role should be mentionable by others.
+position (int
) – The new role’s position. This must be below your top role’s
+position or it will fail.
+reason (Optional[str
]) – The reason for editing this role. Shows up on the audit log.
+
+
+- Raises
+
+Forbidden – You do not have permissions to change the role.
+HTTPException – Editing the role failed.
+InvalidArgument – An invalid position was given or the default
+ role was asked to be moved.
+
+
+- Returns
+The newly edited role.
+
+- Return type
+Role
+
+
+
+
+
+-
+await delete(*, reason=None)
+This function is a coroutine.
+Deletes the role.
+You must have the manage_roles
permission to
+use this.
+
+- Parameters
+reason (Optional[str
]) – The reason for deleting this role. Shows up on the audit log.
+
+- Raises
+-
+
+
+
+
+
+
+
+
+
+PartialMessageable
+
+-
+class discord.PartialMessageable
+Represents a partial messageable to aid with working messageable channels when
+only a channel ID are present.
+The only way to construct this class is through Client.get_partial_messageable()
.
+Note that this class is trimmed down and has no rich attributes.
+
+
+
+-
+x == y
+Checks if two partial messageables are equal.
+
+
+
+-
+x != y
+Checks if two partial messageables are not equal.
+
+
+
+-
+hash(x)
+Returns the partial messageable’s hash.
+
+
+
+-
+int(x)
+Returns the messageable’s ID.
+
+
+
+
+-
+id
+The channel ID associated with this partial messageable.
+
+- Type
+int
+
+
+
+
+
+-
+type
+The channel type associated with this partial messageable, if given.
+
+- Type
+Optional[ChannelType
]
+
+
+
+
+
+-
+await fetch_message(id, /)
+This function is a coroutine.
+Retrieves a single Message
from the destination.
+
+- Parameters
+id (int
) – The message ID to look for.
+
+- Raises
+
+NotFound – The specified message was not found.
+Forbidden – You do not have the permissions required to get a message.
+HTTPException – Retrieving the message failed.
+
+
+- Returns
+The message asked for.
+
+- Return type
+Message
+
+
+
+
+
+-
+history(*, limit=100, before=None, after=None, around=None, oldest_first=None)
+Returns an AsyncIterator
that enables receiving the destination’s message history.
+You must have read_message_history
permissions to use this.
+Examples
+Usage
+counter = 0
+async for message in channel.history(limit=200):
+ if message.author == client.user:
+ counter += 1
+
+
+Flattening into a list:
+messages = await channel.history(limit=123).flatten()
+# messages is now a list of Message...
+
+
+All parameters are optional.
+
+- Parameters
+
+limit (Optional[int
]) – The number of messages to retrieve.
+If None
, retrieves every message in the channel. Note, however,
+that this would make it a slow operation.
+before (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages before this date or message.
+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 (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages after this date or message.
+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.
+around (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages around this date or message.
+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.
+When using this argument, the maximum limit is 101. Note that if the limit is an
+even number then this will return at most limit + 1 messages.
+oldest_first (Optional[bool
]) – If set to True
, return messages in oldest->newest order. Defaults to True
if
+after
is specified, otherwise False
.
+
+
+- Raises
+-
+
+- Yields
+Message
– The message with the message data parsed.
+
+
+
+
+
+-
+await pins()
+This function is a coroutine.
+Retrieves all messages that are currently pinned in the channel.
+
+
Note
+
Due to a limitation with the Discord API, the Message
+objects returned by this method do not contain complete
+Message.reactions
data.
+
+
+- Raises
+HTTPException – Retrieving the pinned messages failed.
+
+- Returns
+The messages that are currently pinned.
+
+- Return type
+List[Message
]
+
+
+
+
+
+-
+await send(content=None, *, tts=None, embed=None, embeds=None, file=None, files=None, stickers=None, delete_after=None, nonce=None, allowed_mentions=None, reference=None, mention_author=None, view=None)
+This function is a coroutine.
+Sends a message to the destination with the content given.
+The content must be a type that can convert to a string through str(content)
.
+If the content is set to None
(the default), then the embed
parameter must
+be provided.
+To upload a single file, the file
parameter should be used with a
+single File
object. To upload multiple files, the files
+parameter should be used with a list
of File
objects.
+Specifying both parameters will lead to an exception.
+To upload a single embed, the embed
parameter should be used with a
+single Embed
object. To upload multiple embeds, the embeds
+parameter should be used with a list
of Embed
objects.
+Specifying both parameters will lead to an exception.
+
+- Parameters
+
+content (Optional[str
]) – The content of the message to send.
+tts (bool
) – Indicates if the message should be sent using text-to-speech.
+embed (Embed
) – The rich embed for the content.
+file (File
) – The file to upload.
+files (List[File
]) – A list of files to upload. Must be a maximum of 10.
+nonce (int
) – The nonce to use for sending this message. If the message was successfully sent,
+then the message will have a nonce with this value.
+delete_after (float
) – If provided, the number of seconds to wait in the background
+before deleting the message we just sent. If the deletion fails,
+then it is silently ignored.
+allowed_mentions (AllowedMentions
) –
Controls the mentions being processed in this message. If this is
+passed, then the object is merged with allowed_mentions
.
+The merging behaviour only overrides attributes that have been explicitly passed
+to the object, otherwise it uses the attributes set in allowed_mentions
.
+If no object is passed at all then the defaults given by allowed_mentions
+are used instead.
+
+
+reference (Union[Message
, MessageReference
, PartialMessage
]) –
A reference to the Message
to which you are replying, this can be created using
+to_reference()
or passed directly as a Message
. You can control
+whether this mentions the author of the referenced message using the replied_user
+attribute of allowed_mentions
or by setting mention_author
.
+
+
+mention_author (Optional[bool
]) –
If set, overrides the replied_user
attribute of allowed_mentions
.
+
+
+view (discord.ui.View
) – A Discord UI View to add to the message.
+embeds (List[Embed
]) –
A list of embeds to upload. Must be a maximum of 10.
+
+
+stickers (Sequence[Union[GuildSticker
, StickerItem
]]) –
A list of stickers to upload. Must be a maximum of 3.
+
+
+
+
+- Raises
+-
+
+- Returns
+The message that was sent.
+
+- Return type
+Message
+
+
+
+
+
+-
+await trigger_typing()
+This function is a coroutine.
+Triggers a typing indicator to the destination.
+Typing indicator will go away after 10 seconds, or after a message is sent.
+
+
+
+-
+typing()
+Returns a context manager that allows you to type for an indefinite period of time.
+This is useful for denoting long computations in your bot.
+
+
Note
+
This is both a regular context manager and an async context manager.
+This means that both with
and async with
work with this.
+
+Example Usage:
+async with channel.typing():
+ # simulate something heavy
+ await asyncio.sleep(10)
+
+await channel.send('done!')
+
+
+
+
+
+-
+get_partial_message(message_id, /)
+Creates a PartialMessage
from the message ID.
+This is useful if you want to work with a message and only have its ID without
+doing an unnecessary API call.
+
+- Parameters
+message_id (int
) – The message ID to create a partial message for.
+
+- Returns
+The partial message.
+
+- Return type
+PartialMessage
+
+
+
+
+
+
+
+
+TextChannel
+
+-
+class discord.TextChannel
+Represents a Discord guild text channel.
+
+
+-
+x == y
+Checks if two channels are equal.
+
+
+
+-
+x != y
+Checks if two channels are not equal.
+
+
+
+-
+hash(x)
+Returns the channel’s hash.
+
+
+
+-
+str(x)
+Returns the channel’s name.
+
+
+
+-
+int(x)
+Returns the channel’s ID.
+
+
+
+
+-
+name
+The channel name.
+
+- Type
+str
+
+
+
+
+
+-
+guild
+The guild the channel belongs to.
+
+- Type
+Guild
+
+
+
+
+
+-
+id
+The channel ID.
+
+- Type
+int
+
+
+
+
+
+-
+category_id
+The category channel ID this channel belongs to, if applicable.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+topic
+The channel’s topic. None
if it doesn’t exist.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+position
+The position in the channel list. This is a number that starts at 0. e.g. the
+top channel is position 0.
+
+- Type
+int
+
+
+
+
+
+-
+last_message_id
+The last message ID of the message sent to this channel. It may
+not point to an existing or valid message.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+slowmode_delay
+The number of seconds a member must wait between sending messages
+in this channel. A value of 0 denotes that it is disabled.
+Bots and users with manage_channels
or
+manage_messages
bypass slowmode.
+
+- Type
+int
+
+
+
+
+
+-
+nsfw
+If the channel is marked as “not safe for work”.
+
+
Note
+
To check if the channel or the guild of that channel are marked as NSFW, consider is_nsfw()
instead.
+
+
+- Type
+bool
+
+
+
+
+
+-
+default_auto_archive_duration
+The default auto archive duration in minutes for threads created in this channel.
+
+
+- Type
+int
+
+
+
+
+
+-
+async for ... in history(*, limit=100, before=None, after=None, around=None, oldest_first=None)
+Returns an AsyncIterator
that enables receiving the destination’s message history.
+You must have read_message_history
permissions to use this.
+Examples
+Usage
+counter = 0
+async for message in channel.history(limit=200):
+ if message.author == client.user:
+ counter += 1
+
+
+Flattening into a list:
+messages = await channel.history(limit=123).flatten()
+# messages is now a list of Message...
+
+
+All parameters are optional.
+
+- Parameters
+
+limit (Optional[int
]) – The number of messages to retrieve.
+If None
, retrieves every message in the channel. Note, however,
+that this would make it a slow operation.
+before (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages before this date or message.
+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 (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages after this date or message.
+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.
+around (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages around this date or message.
+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.
+When using this argument, the maximum limit is 101. Note that if the limit is an
+even number then this will return at most limit + 1 messages.
+oldest_first (Optional[bool
]) – If set to True
, return messages in oldest->newest order. Defaults to True
if
+after
is specified, otherwise False
.
+
+
+- Raises
+-
+
+- Yields
+Message
– The message with the message data parsed.
+
+
+
+
+
+-
+async with typing()
+Returns a context manager that allows you to type for an indefinite period of time.
+This is useful for denoting long computations in your bot.
+
+
Note
+
This is both a regular context manager and an async context manager.
+This means that both with
and async with
work with this.
+
+Example Usage:
+async with channel.typing():
+ # simulate something heavy
+ await asyncio.sleep(10)
+
+await channel.send('done!')
+
+
+
+
+
+-
+property type
+The channel’s Discord type.
+
+- Type
+ChannelType
+
+
+
+
+
+-
+permissions_for(obj, /)
+Handles permission resolution for the Member
+or Role
.
+This function takes into consideration the following cases:
+
+Guild owner
+Guild roles
+Channel overrides
+Member overrides
+
+If a Role
is passed, then it checks the permissions
+someone with that role would have, which is essentially:
+
+The default role permissions
+The permissions of the role used as a parameter
+The default role permission overwrites
+The permission overwrites of the role used as a parameter
+
+
+
Changed in version 2.0: The object passed in can now be a role object.
+
+
+- Parameters
+obj (Union[Member
, Role
]) – The object to resolve permissions for. This could be either
+a member or a role. If it’s a role then member overwrites
+are not computed.
+
+- Returns
+The resolved permissions for the member or role.
+
+- Return type
+Permissions
+
+
+
+
+
+-
+property members
+Returns all members that can see this channel.
+
+- Type
+List[Member
]
+
+
+
+
+
+-
+property bots
+Returns all bots that can see this channel.
+
+- Type
+List[Member
]
+
+
+
+
+
+-
+property humans
+Returns all human members that can see this channel.
+
+- Type
+List[Member
]
+
+
+
+
+
+-
+property threads
+Returns all the threads that you can see.
+
+
+- Type
+List[Thread
]
+
+
+
+
+
+-
+is_nsfw()
+bool
: Checks if the channel is NSFW.
+
+
+
+-
+is_news()
+bool
: Checks if the channel is a news channel.
+
+
+
+-
+property last_message
+Fetches the last message from this channel in cache.
+The message might not be valid or point to an existing message.
+
+
+- Returns
+The last message in this channel or None
if not found.
+
+- Return type
+Optional[Message
]
+
+
+
+
+
+-
+await edit(*, reason=None, **options)
+This function is a coroutine.
+Edits the channel.
+You must have the manage_channels
permission to
+use this.
+
+
Changed in version 1.3: The overwrites
keyword-only parameter was added.
+
+
+
Changed in version 1.4: The type
keyword-only parameter was added.
+
+
+
Changed in version 2.0: Edits are no longer in-place, the newly edited channel is returned instead.
+
+
+- Parameters
+
+name (str
) – The new channel name.
+topic (str
) – The new channel’s topic.
+position (int
) – The new channel’s position.
+nsfw (bool
) – To mark the channel as NSFW or not.
+sync_permissions (bool
) – Whether to sync permissions with the channel’s new or pre-existing
+category. Defaults to False
.
+category (Optional[CategoryChannel
]) – The new category for this channel. Can be None
to remove the
+category.
+slowmode_delay (int
) – Specifies the slowmode rate limit for user in this channel, in seconds.
+A value of 0 disables slowmode. The maximum value possible is 21600.
+type (ChannelType
) – Change the type of this text channel. Currently, only conversion between
+ChannelType.text
and ChannelType.news
is supported. This
+is only available to guilds that contain NEWS
in Guild.features
.
+reason (Optional[str
]) – The reason for editing this channel. Shows up on the audit log.
+overwrites (Mapping
) – A Mapping
of target (either a role or a member) to
+PermissionOverwrite
to apply to the channel.
+default_auto_archive_duration (int
) – The new default auto archive duration in minutes for threads created in this channel.
+Must be one of 60
, 1440
, 4320
, or 10080
.
+
+
+- Raises
+
+InvalidArgument – If position is less than 0 or greater than the number of channels, or if
+ the permission overwrite information is not in proper form.
+Forbidden – You do not have permissions to edit the channel.
+HTTPException – Editing the channel failed.
+
+
+- Returns
+The newly edited text channel. If the edit was only positional
+then None
is returned instead.
+
+- Return type
+Optional[TextChannel
]
+
+
+
+
+
+-
+await clone(*, name=None, reason=None)
+This function is a coroutine.
+Clones this channel. This creates a channel with the same properties
+as this channel.
+You must have the manage_channels
permission to
+do this.
+
+
+- Parameters
+
+name (Optional[str
]) – The name of the new channel. If not provided, defaults to this
+channel name.
+reason (Optional[str
]) – The reason for cloning this channel. Shows up on the audit log.
+
+
+- Raises
+-
+
+- Returns
+The channel that was created.
+
+- Return type
+abc.GuildChannel
+
+
+
+
+
+-
+await delete_messages(messages)
+This function is a coroutine.
+Deletes a list of messages. This is similar to Message.delete()
+except it bulk deletes multiple messages.
+As a special case, if the number of messages is 0, then nothing
+is done. If the number of messages is 1 then single message
+delete is done. If it’s more than two, then bulk delete is used.
+You cannot bulk delete more than 100 messages or messages that
+are older than 14 days old.
+You must have the manage_messages
permission to
+use this.
+
+- Parameters
+messages (Iterable[abc.Snowflake
]) – An iterable of messages denoting which ones to bulk delete.
+
+- Raises
+
+ClientException – The number of messages to delete was more than 100.
+Forbidden – You do not have proper permissions to delete the messages.
+NotFound – If single delete, then the message was already deleted.
+HTTPException – Deleting the messages failed.
+
+
+
+
+
+
+-
+await purge(*, limit=100, check=..., before=None, after=None, around=None, oldest_first=False, bulk=True)
+This function is a coroutine.
+Purges a list of messages that meet the criteria given by the predicate
+check
. If a check
is not provided then all messages are deleted
+without discrimination.
+You must have the manage_messages
permission to
+delete messages even if they are your own.
+The read_message_history
permission is
+also needed to retrieve message history.
+Examples
+Deleting bot’s messages
+def is_me(m):
+ return m.author == client.user
+
+deleted = await channel.purge(limit=100, check=is_me)
+await channel.send(f'Deleted {len(deleted)} message(s)')
+
+
+
+- Parameters
+-
+
+- Raises
+-
+
+- Returns
+The list of messages that were deleted.
+
+- Return type
+List[Message
]
+
+
+
+
+
+-
+await webhooks()
+This function is a coroutine.
+Gets the list of webhooks from this channel.
+Requires manage_webhooks
permissions.
+
+- Raises
+Forbidden – You don’t have permissions to get the webhooks.
+
+- Returns
+The webhooks for this channel.
+
+- Return type
+List[Webhook
]
+
+
+
+
+
+-
+await create_webhook(*, name, avatar=None, reason=None)
+This function is a coroutine.
+Creates a webhook for this channel.
+Requires manage_webhooks
permissions.
+
+
Changed in version 1.1: Added the reason
keyword-only parameter.
+
+
+- Parameters
+
+name (str
) – The webhook’s name.
+avatar (Optional[bytes
]) – A bytes-like object representing the webhook’s default avatar.
+This operates similarly to edit()
.
+reason (Optional[str
]) – The reason for creating this webhook. Shows up in the audit logs.
+
+
+- Raises
+-
+
+- Returns
+The created webhook.
+
+- Return type
+Webhook
+
+
+
+
+
+-
+await follow(*, destination, reason=None)
+Follows a channel using a webhook.
+Only news channels can be followed.
+
+
Note
+
The webhook returned will not provide a token to do webhook
+actions, as Discord does not provide it.
+
+
+
+- Parameters
+-
+
+- Raises
+-
+
+- Returns
+The created webhook.
+
+- Return type
+Webhook
+
+
+
+
+
+-
+get_partial_message(message_id, /)
+Creates a PartialMessage
from the message ID.
+This is useful if you want to work with a message and only have its ID without
+doing an unnecessary API call.
+
+
+- Parameters
+message_id (int
) – The message ID to create a partial message for.
+
+- Returns
+The partial message.
+
+- Return type
+PartialMessage
+
+
+
+
+
+-
+get_thread(thread_id, /)
+Returns a thread with the given ID.
+
+
+- Parameters
+thread_id (int
) – The ID to search for.
+
+- Returns
+The returned thread or None
if not found.
+
+- Return type
+Optional[Thread
]
+
+
+
+
+
+-
+await create_thread(*, name, message=None, auto_archive_duration=..., type=None, reason=None)
+This function is a coroutine.
+Creates a thread in this text channel.
+To create a public thread, you must have create_public_threads
.
+For a private thread, create_private_threads
is needed instead.
+
+
+- Parameters
+
+name (str
) – The name of the thread.
+message (Optional[abc.Snowflake
]) – A snowflake representing the message to create the thread with.
+If None
is passed then a private thread is created.
+Defaults to None
.
+auto_archive_duration (int
) – The duration in minutes before a thread is automatically archived for inactivity.
+If not provided, the channel’s default auto archive duration is used.
+type (Optional[ChannelType
]) – The type of thread to create. If a message
is passed then this parameter
+is ignored, as a thread created with a message is always a public thread.
+By default this creates a private thread if this is None
.
+reason (str
) – The reason for creating a new thread. Shows up on the audit log.
+
+
+- Raises
+-
+
+- Returns
+The created thread
+
+- Return type
+Thread
+
+
+
+
+
+-
+archived_threads(*, private=False, joined=False, limit=50, before=None)
+Returns an AsyncIterator
that iterates over all archived threads in the guild.
+You must have read_message_history
to use this. If iterating over private threads
+then manage_threads
is also required.
+
+
+- Parameters
+
+limit (Optional[bool
]) – The number of threads to retrieve.
+If None
, retrieves every archived thread in the channel. Note, however,
+that this would make it a slow operation.
+before (Optional[Union[abc.Snowflake
, datetime.datetime
]]) – Retrieve archived channels before the given date or ID.
+private (bool
) – Whether to retrieve private archived threads.
+joined (bool
) – Whether to retrieve private archived threads that you’ve joined.
+You cannot set joined
to True
and private
to False
.
+
+
+- Raises
+-
+
+- Yields
+Thread
– The archived threads.
+
+
+
+
+
+-
+property category
+The category this channel belongs to.
+If there is no category then this is None
.
+
+- Type
+Optional[CategoryChannel
]
+
+
+
+
+
+-
+property changed_roles
+Returns a list of roles that have been overridden from
+their default values in the roles
attribute.
+
+- Type
+List[Role
]
+
+
+
+
+
+-
+await create_invite(*, reason=None, max_age=0, max_uses=0, temporary=False, unique=True, target_type=None, target_user=None, target_application_id=None)
+This function is a coroutine.
+Creates an instant invite from a text or voice channel.
+You must have the create_instant_invite
permission to
+do this.
+
+- Parameters
+
+max_age (int
) – How long the invite should last in seconds. If it’s 0 then the invite
+doesn’t expire. Defaults to 0
.
+max_uses (int
) – How many uses the invite could be used for. If it’s 0 then there
+are unlimited uses. Defaults to 0
.
+temporary (bool
) – Denotes that the invite grants temporary membership
+(i.e. they get kicked after they disconnect). Defaults to False
.
+unique (bool
) – Indicates if a unique invite URL should be created. Defaults to True.
+If this is set to False
then it will return a previously created
+invite.
+reason (Optional[str
]) – The reason for creating this invite. Shows up on the audit log.
+target_type (Optional[InviteTarget
]) –
The type of target for the voice channel invite, if any.
+
+
+target_user (Optional[User
]) –
The user whose stream to display for this invite, required if target_type is TargetType.stream. The user must be streaming in the channel.
+
+
+target_application_id: –
Optional[int
]: The id of the embedded application for the invite, required if target_type is TargetType.embedded_application.
+
+
+
+
+- Raises
+-
+
+- Returns
+The invite that was created.
+
+- Return type
+Invite
+
+
+
+
+
+-
+property created_at
+Returns the channel’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+await delete(*, reason=None)
+This function is a coroutine.
+Deletes the channel.
+You must have manage_channels
permission to use this.
+
+- Parameters
+reason (Optional[str
]) – The reason for deleting this channel.
+Shows up on the audit log.
+
+- Raises
+
+Forbidden – You do not have proper permissions to delete the channel.
+NotFound – The channel was not found or was already deleted.
+HTTPException – Deleting the channel failed.
+
+
+
+
+
+
+-
+await fetch_message(id, /)
+This function is a coroutine.
+Retrieves a single Message
from the destination.
+
+- Parameters
+id (int
) – The message ID to look for.
+
+- Raises
+
+NotFound – The specified message was not found.
+Forbidden – You do not have the permissions required to get a message.
+HTTPException – Retrieving the message failed.
+
+
+- Returns
+The message asked for.
+
+- Return type
+Message
+
+
+
+
+
+-
+await invites()
+This function is a coroutine.
+Returns a list of all active instant invites from this channel.
+You must have manage_channels
to get this information.
+
+- Raises
+-
+
+- Returns
+The list of invites that are currently active.
+
+- Return type
+List[Invite
]
+
+
+
+
+
+-
+property mention
+The string that allows you to mention the channel.
+
+- Type
+str
+
+
+
+
+
+-
+await move(**kwargs)
+This function is a coroutine.
+A rich interface to help move a channel relative to other channels.
+If exact position movement is required, edit
should be used instead.
+You must have the manage_channels
permission to
+do this.
+
+
Note
+
Voice channels will always be sorted below text channels.
+This is a Discord limitation.
+
+
+
+- Parameters
+
+beginning (bool
) – Whether to move the channel to the beginning of the
+channel list (or category if given).
+This is mutually exclusive with end
, before
, and after
.
+end (bool
) – Whether to move the channel to the end of the
+channel list (or category if given).
+This is mutually exclusive with beginning
, before
, and after
.
+before (Snowflake
) – The channel that should be before our current channel.
+This is mutually exclusive with beginning
, end
, and after
.
+after (Snowflake
) – The channel that should be after our current channel.
+This is mutually exclusive with beginning
, end
, and before
.
+offset (int
) – The number of channels to offset the move by. For example,
+an offset of 2
with beginning=True
would move
+it 2 after the beginning. A positive number moves it below
+while a negative number moves it above. Note that this
+number is relative and computed after the beginning
,
+end
, before
, and after
parameters.
+category (Optional[Snowflake
]) – The category to move this channel under.
+If None
is given then it moves it out of the category.
+This parameter is ignored if moving a category channel.
+sync_permissions (bool
) – Whether to sync the permissions with the category (if given).
+reason (str
) – The reason for the move.
+
+
+- Raises
+
+InvalidArgument – An invalid position was given or a bad mix of arguments were passed.
+Forbidden – You do not have permissions to move the channel.
+HTTPException – Moving the channel failed.
+
+
+
+
+
+
+-
+property overwrites
+Returns all of the channel’s overwrites.
+This is returned as a dictionary where the key contains the target which
+can be either a Role
or a Member
and the value is the
+overwrite as a PermissionOverwrite
.
+
+- Returns
+The channel’s permission overwrites.
+
+- Return type
+Dict[Union[Role
, Member
], PermissionOverwrite
]
+
+
+
+
+
+-
+overwrites_for(obj)
+Returns the channel-specific overwrites for a member or a role.
+
+- Parameters
+obj (Union[Role
, User
]) – The role or user denoting
+whose overwrite to get.
+
+- Returns
+The permission overwrites for this object.
+
+- Return type
+PermissionOverwrite
+
+
+
+
+
+-
+property permissions_synced
+Whether or not the permissions for this channel are synced with the
+category it belongs to.
+If there is no category then this is False
.
+
+
+- Type
+bool
+
+
+
+
+
+-
+await pins()
+This function is a coroutine.
+Retrieves all messages that are currently pinned in the channel.
+
+
Note
+
Due to a limitation with the Discord API, the Message
+objects returned by this method do not contain complete
+Message.reactions
data.
+
+
+- Raises
+HTTPException – Retrieving the pinned messages failed.
+
+- Returns
+The messages that are currently pinned.
+
+- Return type
+List[Message
]
+
+
+
+
+
+-
+await send(content=None, *, tts=None, embed=None, embeds=None, file=None, files=None, stickers=None, delete_after=None, nonce=None, allowed_mentions=None, reference=None, mention_author=None, view=None)
+This function is a coroutine.
+Sends a message to the destination with the content given.
+The content must be a type that can convert to a string through str(content)
.
+If the content is set to None
(the default), then the embed
parameter must
+be provided.
+To upload a single file, the file
parameter should be used with a
+single File
object. To upload multiple files, the files
+parameter should be used with a list
of File
objects.
+Specifying both parameters will lead to an exception.
+To upload a single embed, the embed
parameter should be used with a
+single Embed
object. To upload multiple embeds, the embeds
+parameter should be used with a list
of Embed
objects.
+Specifying both parameters will lead to an exception.
+
+- Parameters
+
+content (Optional[str
]) – The content of the message to send.
+tts (bool
) – Indicates if the message should be sent using text-to-speech.
+embed (Embed
) – The rich embed for the content.
+file (File
) – The file to upload.
+files (List[File
]) – A list of files to upload. Must be a maximum of 10.
+nonce (int
) – The nonce to use for sending this message. If the message was successfully sent,
+then the message will have a nonce with this value.
+delete_after (float
) – If provided, the number of seconds to wait in the background
+before deleting the message we just sent. If the deletion fails,
+then it is silently ignored.
+allowed_mentions (AllowedMentions
) –
Controls the mentions being processed in this message. If this is
+passed, then the object is merged with allowed_mentions
.
+The merging behaviour only overrides attributes that have been explicitly passed
+to the object, otherwise it uses the attributes set in allowed_mentions
.
+If no object is passed at all then the defaults given by allowed_mentions
+are used instead.
+
+
+reference (Union[Message
, MessageReference
, PartialMessage
]) –
A reference to the Message
to which you are replying, this can be created using
+to_reference()
or passed directly as a Message
. You can control
+whether this mentions the author of the referenced message using the replied_user
+attribute of allowed_mentions
or by setting mention_author
.
+
+
+mention_author (Optional[bool
]) –
If set, overrides the replied_user
attribute of allowed_mentions
.
+
+
+view (discord.ui.View
) – A Discord UI View to add to the message.
+embeds (List[Embed
]) –
A list of embeds to upload. Must be a maximum of 10.
+
+
+stickers (Sequence[Union[GuildSticker
, StickerItem
]]) –
A list of stickers to upload. Must be a maximum of 3.
+
+
+
+
+- Raises
+-
+
+- Returns
+The message that was sent.
+
+- Return type
+Message
+
+
+
+
+
+-
+await set_permissions(target, *, overwrite=see - below, reason=None, **permissions)
+This function is a coroutine.
+Sets the channel specific permission overwrites for a target in the
+channel.
+The target
parameter should either be a Member
or a
+Role
that belongs to guild.
+The overwrite
parameter, if given, must either be None
or
+PermissionOverwrite
. For convenience, you can pass in
+keyword arguments denoting Permissions
attributes. If this is
+done, then you cannot mix the keyword arguments with the overwrite
+parameter.
+If the overwrite
parameter is None
, then the permission
+overwrites are deleted.
+You must have the manage_roles
permission to use this.
+
+
Note
+
This method replaces the old overwrites with the ones given.
+
+Examples
+Setting allow and deny:
+await message.channel.set_permissions(message.author, read_messages=True,
+ send_messages=False)
+
+
+Deleting overwrites
+await channel.set_permissions(member, overwrite=None)
+
+
+Using PermissionOverwrite
+overwrite = discord.PermissionOverwrite()
+overwrite.send_messages = False
+overwrite.read_messages = True
+await channel.set_permissions(member, overwrite=overwrite)
+
+
+
+- Parameters
+
+target (Union[Member
, Role
]) – The member or role to overwrite permissions for.
+overwrite (Optional[PermissionOverwrite
]) – The permissions to allow and deny to the target, or None
to
+delete the overwrite.
+**permissions – A keyword argument list of permissions to set for ease of use.
+Cannot be mixed with overwrite
.
+reason (Optional[str
]) – The reason for doing this action. Shows up on the audit log.
+
+
+- Raises
+
+Forbidden – You do not have permissions to edit channel specific permissions.
+HTTPException – Editing channel specific permissions failed.
+NotFound – The role or member being edited is not part of the guild.
+InvalidArgument – The overwrite parameter invalid or the target type was not
+ Role
or Member
.
+
+
+
+
+
+
+-
+await trigger_typing()
+This function is a coroutine.
+Triggers a typing indicator to the destination.
+Typing indicator will go away after 10 seconds, or after a message is sent.
+
+
+
+
+
+
+Thread
+
+-
+class discord.Thread
+Represents a Discord thread.
+
+
+-
+x == y
+Checks if two threads are equal.
+
+
+
+-
+x != y
+Checks if two threads are not equal.
+
+
+
+-
+hash(x)
+Returns the thread’s hash.
+
+
+
+-
+int(x)
+Returns the thread’s ID.
+
+
+
+-
+str(x)
+Returns the thread’s name.
+
+
+
+
+
+-
+name
+The thread name.
+
+- Type
+str
+
+
+
+
+
+-
+guild
+The guild the thread belongs to.
+
+- Type
+Guild
+
+
+
+
+
+-
+id
+The thread ID.
+
+- Type
+int
+
+
+
+
+
+-
+parent_id
+The parent TextChannel
ID this thread belongs to.
+
+- Type
+int
+
+
+
+
+
+-
+owner_id
+The user’s ID that created this thread.
+
+- Type
+int
+
+
+
+
+
+-
+last_message_id
+The last message ID of the message sent to this thread. It may
+not point to an existing or valid message.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+slowmode_delay
+The number of seconds a member must wait between sending messages
+in this thread. A value of 0 denotes that it is disabled.
+Bots and users with manage_channels
or
+manage_messages
bypass slowmode.
+
+- Type
+int
+
+
+
+
+
+-
+message_count
+An approximate number of messages in this thread. This caps at 50.
+
+- Type
+int
+
+
+
+
+
+-
+member_count
+An approximate number of members in this thread. This caps at 50.
+
+- Type
+int
+
+
+
+
+
+-
+me
+A thread member representing yourself, if you’ve joined the thread.
+This could not be available.
+
+- Type
+Optional[ThreadMember
]
+
+
+
+
+
+-
+archived
+Whether the thread is archived.
+
+- Type
+bool
+
+
+
+
+
+-
+locked
+Whether the thread is locked.
+
+- Type
+bool
+
+
+
+
+
+-
+invitable
+Whether non-moderators can add other non-moderators to this thread.
+This is always True
for public threads.
+
+- Type
+bool
+
+
+
+
+
+-
+archiver_id
+The user’s ID that archived this thread.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+auto_archive_duration
+The duration in minutes until the thread is automatically archived due to inactivity.
+Usually a value of 60, 1440, 4320 and 10080.
+
+- Type
+int
+
+
+
+
+
+-
+archive_timestamp
+An aware timestamp of when the thread’s archived status was last updated in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+async for ... in history(*, limit=100, before=None, after=None, around=None, oldest_first=None)
+Returns an AsyncIterator
that enables receiving the destination’s message history.
+You must have read_message_history
permissions to use this.
+Examples
+Usage
+counter = 0
+async for message in channel.history(limit=200):
+ if message.author == client.user:
+ counter += 1
+
+
+Flattening into a list:
+messages = await channel.history(limit=123).flatten()
+# messages is now a list of Message...
+
+
+All parameters are optional.
+
+- Parameters
+
+limit (Optional[int
]) – The number of messages to retrieve.
+If None
, retrieves every message in the channel. Note, however,
+that this would make it a slow operation.
+before (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages before this date or message.
+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 (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages after this date or message.
+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.
+around (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages around this date or message.
+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.
+When using this argument, the maximum limit is 101. Note that if the limit is an
+even number then this will return at most limit + 1 messages.
+oldest_first (Optional[bool
]) – If set to True
, return messages in oldest->newest order. Defaults to True
if
+after
is specified, otherwise False
.
+
+
+- Raises
+-
+
+- Yields
+Message
– The message with the message data parsed.
+
+
+
+
+
+-
+async with typing()
+Returns a context manager that allows you to type for an indefinite period of time.
+This is useful for denoting long computations in your bot.
+
+
Note
+
This is both a regular context manager and an async context manager.
+This means that both with
and async with
work with this.
+
+Example Usage:
+async with channel.typing():
+ # simulate something heavy
+ await asyncio.sleep(10)
+
+await channel.send('done!')
+
+
+
+
+
+-
+property type
+The channel’s Discord type.
+
+- Type
+ChannelType
+
+
+
+
+
+-
+property parent
+The parent channel this thread belongs to.
+
+- Type
+Optional[TextChannel
]
+
+
+
+
+
+-
+property owner
+The member this thread belongs to.
+
+- Type
+Optional[Member
]
+
+
+
+
+
+-
+property mention
+The string that allows you to mention the thread.
+
+- Type
+str
+
+
+
+
+
+-
+property members
+A list of thread members in this thread.
+This requires Intents.members
to be properly filled. Most of the time however,
+this data is not provided by the gateway and a call to fetch_members()
is
+needed.
+
+- Type
+List[ThreadMember
]
+
+
+
+
+
+-
+property last_message
+Fetches the last message from this channel in cache.
+The message might not be valid or point to an existing message.
+
+
+- Returns
+The last message in this channel or None
if not found.
+
+- Return type
+Optional[Message
]
+
+
+
+
+
+-
+property category
+The category channel the parent channel belongs to, if applicable.
+
+- Raises
+ClientException – The parent channel was not cached and returned None
.
+
+- Returns
+The parent channel’s category.
+
+- Return type
+Optional[CategoryChannel
]
+
+
+
+
+
+-
+property category_id
+The category channel ID the parent channel belongs to, if applicable.
+
+- Raises
+ClientException – The parent channel was not cached and returned None
.
+
+- Returns
+The parent channel’s category ID.
+
+- Return type
+Optional[int
]
+
+
+
+
+
+-
+is_private()
+bool
: Whether the thread is a private thread.
+A private thread is only viewable by those that have been explicitly
+invited or have manage_threads
.
+
+
+
+-
+is_news()
+bool
: Whether the thread is a news thread.
+A news thread is a thread that has a parent that is a news channel,
+i.e. TextChannel.is_news()
is True
.
+
+
+
+-
+is_nsfw()
+bool
: Whether the thread is NSFW or not.
+An NSFW thread is a thread that has a parent that is an NSFW channel,
+i.e. TextChannel.is_nsfw()
is True
.
+
+
+
+-
+permissions_for(obj, /)
+Handles permission resolution for the Member
+or Role
.
+Since threads do not have their own permissions, they inherit them
+from the parent channel. This is a convenience method for
+calling permissions_for()
on the
+parent channel.
+
+- Parameters
+obj (Union[Member
, Role
]) – The object to resolve permissions for. This could be either
+a member or a role. If it’s a role then member overwrites
+are not computed.
+
+- Raises
+ClientException – The parent channel was not cached and returned None
+
+- Returns
+The resolved permissions for the member or role.
+
+- Return type
+Permissions
+
+
+
+
+
+-
+await delete_messages(messages)
+This function is a coroutine.
+Deletes a list of messages. This is similar to Message.delete()
+except it bulk deletes multiple messages.
+As a special case, if the number of messages is 0, then nothing
+is done. If the number of messages is 1 then single message
+delete is done. If it’s more than two, then bulk delete is used.
+You cannot bulk delete more than 100 messages or messages that
+are older than 14 days old.
+You must have the manage_messages
permission to
+use this.
+Usable only by bot accounts.
+
+- Parameters
+messages (Iterable[abc.Snowflake
]) – An iterable of messages denoting which ones to bulk delete.
+
+- Raises
+
+ClientException – The number of messages to delete was more than 100.
+Forbidden – You do not have proper permissions to delete the messages or
+ you’re not using a bot account.
+NotFound – If single delete, then the message was already deleted.
+HTTPException – Deleting the messages failed.
+
+
+
+
+
+
+-
+await purge(*, limit=100, check=..., before=None, after=None, around=None, oldest_first=False, bulk=True)
+This function is a coroutine.
+Purges a list of messages that meet the criteria given by the predicate
+check
. If a check
is not provided then all messages are deleted
+without discrimination.
+You must have the manage_messages
permission to
+delete messages even if they are your own (unless you are a user
+account). The read_message_history
permission is
+also needed to retrieve message history.
+Examples
+Deleting bot’s messages
+def is_me(m):
+ return m.author == client.user
+
+deleted = await thread.purge(limit=100, check=is_me)
+await thread.send(f'Deleted {len(deleted)} message(s)')
+
+
+
+- Parameters
+-
+
+- Raises
+-
+
+- Returns
+The list of messages that were deleted.
+
+- Return type
+List[Message
]
+
+
+
+
+
+-
+await edit(*, name=..., archived=..., locked=..., invitable=..., slowmode_delay=..., auto_archive_duration=...)
+This function is a coroutine.
+Edits the thread.
+Editing the thread requires Permissions.manage_threads
. The thread
+creator can also edit name
, archived
or auto_archive_duration
.
+Note that if the thread is locked then only those with Permissions.manage_threads
+can unarchive a thread.
+The thread must be unarchived to be edited.
+
+- Parameters
+
+name (str
) – The new name of the thread.
+archived (bool
) – Whether to archive the thread or not.
+locked (bool
) – Whether to lock the thread or not.
+invitable (bool
) – Whether non-moderators can add other non-moderators to this thread.
+Only available for private threads.
+auto_archive_duration (int
) – The new duration in minutes before a thread is automatically archived for inactivity.
+Must be one of 60
, 1440
, 4320
, or 10080
.
+slowmode_delay (int
) – Specifies the slowmode rate limit for user in this thread, in seconds.
+A value of 0
disables slowmode. The maximum value possible is 21600
.
+
+
+- Raises
+-
+
+- Returns
+The newly edited thread.
+
+- Return type
+Thread
+
+
+
+
+
+-
+await join()
+This function is a coroutine.
+Joins this thread.
+You must have send_messages_in_threads
to join a thread.
+If the thread is private, manage_threads
is also needed.
+
+- Raises
+-
+
+
+
+
+
+-
+await leave()
+This function is a coroutine.
+Leaves this thread.
+
+- Raises
+HTTPException – Leaving the thread failed.
+
+
+
+
+
+-
+await add_user(user)
+This function is a coroutine.
+Adds a user to this thread.
+You must have send_messages
and use_threads
+to add a user to a public thread. If the thread is private then send_messages
+and either use_private_threads
or manage_messages
+is required to add a user to the thread.
+
+- Parameters
+user (abc.Snowflake
) – The user to add to the thread.
+
+- Raises
+-
+
+
+
+
+
+-
+await remove_user(user)
+This function is a coroutine.
+Removes a user from this thread.
+You must have manage_threads
or be the creator of the thread to remove a user.
+
+- Parameters
+user (abc.Snowflake
) – The user to add to the thread.
+
+- Raises
+-
+
+
+
+
+
+-
+await fetch_members()
+This function is a coroutine.
+Retrieves all ThreadMember
that are in this thread.
+This requires Intents.members
to get information about members
+other than yourself.
+
+- Raises
+HTTPException – Retrieving the members failed.
+
+- Returns
+All thread members in the thread.
+
+- Return type
+List[ThreadMember
]
+
+
+
+
+
+-
+await delete()
+This function is a coroutine.
+Deletes this thread.
+You must have manage_threads
to delete threads.
+
+- Raises
+-
+
+
+
+
+
+-
+get_partial_message(message_id, /)
+Creates a PartialMessage
from the message ID.
+This is useful if you want to work with a message and only have its ID without
+doing an unnecessary API call.
+
+
+- Parameters
+message_id (int
) – The message ID to create a partial message for.
+
+- Returns
+The partial message.
+
+- Return type
+PartialMessage
+
+
+
+
+
+-
+await fetch_message(id, /)
+This function is a coroutine.
+Retrieves a single Message
from the destination.
+
+- Parameters
+id (int
) – The message ID to look for.
+
+- Raises
+
+NotFound – The specified message was not found.
+Forbidden – You do not have the permissions required to get a message.
+HTTPException – Retrieving the message failed.
+
+
+- Returns
+The message asked for.
+
+- Return type
+Message
+
+
+
+
+
+-
+await pins()
+This function is a coroutine.
+Retrieves all messages that are currently pinned in the channel.
+
+
Note
+
Due to a limitation with the Discord API, the Message
+objects returned by this method do not contain complete
+Message.reactions
data.
+
+
+- Raises
+HTTPException – Retrieving the pinned messages failed.
+
+- Returns
+The messages that are currently pinned.
+
+- Return type
+List[Message
]
+
+
+
+
+
+-
+await send(content=None, *, tts=None, embed=None, embeds=None, file=None, files=None, stickers=None, delete_after=None, nonce=None, allowed_mentions=None, reference=None, mention_author=None, view=None)
+This function is a coroutine.
+Sends a message to the destination with the content given.
+The content must be a type that can convert to a string through str(content)
.
+If the content is set to None
(the default), then the embed
parameter must
+be provided.
+To upload a single file, the file
parameter should be used with a
+single File
object. To upload multiple files, the files
+parameter should be used with a list
of File
objects.
+Specifying both parameters will lead to an exception.
+To upload a single embed, the embed
parameter should be used with a
+single Embed
object. To upload multiple embeds, the embeds
+parameter should be used with a list
of Embed
objects.
+Specifying both parameters will lead to an exception.
+
+- Parameters
+
+content (Optional[str
]) – The content of the message to send.
+tts (bool
) – Indicates if the message should be sent using text-to-speech.
+embed (Embed
) – The rich embed for the content.
+file (File
) – The file to upload.
+files (List[File
]) – A list of files to upload. Must be a maximum of 10.
+nonce (int
) – The nonce to use for sending this message. If the message was successfully sent,
+then the message will have a nonce with this value.
+delete_after (float
) – If provided, the number of seconds to wait in the background
+before deleting the message we just sent. If the deletion fails,
+then it is silently ignored.
+allowed_mentions (AllowedMentions
) –
Controls the mentions being processed in this message. If this is
+passed, then the object is merged with allowed_mentions
.
+The merging behaviour only overrides attributes that have been explicitly passed
+to the object, otherwise it uses the attributes set in allowed_mentions
.
+If no object is passed at all then the defaults given by allowed_mentions
+are used instead.
+
+
+reference (Union[Message
, MessageReference
, PartialMessage
]) –
A reference to the Message
to which you are replying, this can be created using
+to_reference()
or passed directly as a Message
. You can control
+whether this mentions the author of the referenced message using the replied_user
+attribute of allowed_mentions
or by setting mention_author
.
+
+
+mention_author (Optional[bool
]) –
If set, overrides the replied_user
attribute of allowed_mentions
.
+
+
+view (discord.ui.View
) – A Discord UI View to add to the message.
+embeds (List[Embed
]) –
A list of embeds to upload. Must be a maximum of 10.
+
+
+stickers (Sequence[Union[GuildSticker
, StickerItem
]]) –
A list of stickers to upload. Must be a maximum of 3.
+
+
+
+
+- Raises
+-
+
+- Returns
+The message that was sent.
+
+- Return type
+Message
+
+
+
+
+
+-
+await trigger_typing()
+This function is a coroutine.
+Triggers a typing indicator to the destination.
+Typing indicator will go away after 10 seconds, or after a message is sent.
+
+
+
+
+
+
+ThreadMember
+
+-
+class discord.ThreadMember
+Represents a Discord thread member.
+
+
+-
+x == y
+Checks if two thread members are equal.
+
+
+
+-
+x != y
+Checks if two thread members are not equal.
+
+
+
+-
+hash(x)
+Returns the thread member’s hash.
+
+
+
+-
+int(x)
+Returns the thread member’s ID.
+
+
+
+-
+str(x)
+Returns the thread member’s name.
+
+
+
+
+
+-
+id
+The thread member’s ID.
+
+- Type
+int
+
+
+
+
+
+-
+thread_id
+The thread’s ID.
+
+- Type
+int
+
+
+
+
+
+-
+joined_at
+The time the member joined the thread in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+property thread
+The thread this member belongs to.
+
+- Type
+Thread
+
+
+
+
+
+-
+await fetch_member()
+This function is a coroutine.
+Retrieves a Member
from the ThreadMember object.
+
+
+- Raises
+-
+
+- Returns
+The member.
+
+- Return type
+Member
+
+
+
+
+
+-
+get_member()
+Get the Member
from cache for the ThreadMember object.
+
+- Returns
+The member or None
if not found.
+
+- Return type
+Optional[Member
]
+
+
+
+
+
+
+
+
+StoreChannel
+
+-
+class discord.StoreChannel
+Represents a Discord guild store channel.
+
+
+-
+x == y
+Checks if two channels are equal.
+
+
+
+-
+x != y
+Checks if two channels are not equal.
+
+
+
+-
+hash(x)
+Returns the channel’s hash.
+
+
+
+-
+str(x)
+Returns the channel’s name.
+
+
+
+-
+int(x)
+Returns the channel’s ID.
+
+
+
+
+-
+name
+The channel name.
+
+- Type
+str
+
+
+
+
+
+-
+guild
+The guild the channel belongs to.
+
+- Type
+Guild
+
+
+
+
+
+-
+id
+The channel ID.
+
+- Type
+int
+
+
+
+
+
+-
+category_id
+The category channel ID this channel belongs to.
+
+- Type
+int
+
+
+
+
+
+-
+position
+The position in the channel list. This is a number that starts at 0. e.g. the
+top channel is position 0.
+
+- Type
+int
+
+
+
+
+
+-
+nsfw
+If the channel is marked as “not safe for work”.
+
+
Note
+
To check if the channel or the guild of that channel are marked as NSFW, consider is_nsfw()
instead.
+
+
+- Type
+bool
+
+
+
+
+
+-
+property type
+The channel’s Discord type.
+
+- Type
+ChannelType
+
+
+
+
+
+-
+permissions_for(obj, /)
+Handles permission resolution for the Member
+or Role
.
+This function takes into consideration the following cases:
+
+Guild owner
+Guild roles
+Channel overrides
+Member overrides
+
+If a Role
is passed, then it checks the permissions
+someone with that role would have, which is essentially:
+
+The default role permissions
+The permissions of the role used as a parameter
+The default role permission overwrites
+The permission overwrites of the role used as a parameter
+
+
+
Changed in version 2.0: The object passed in can now be a role object.
+
+
+- Parameters
+obj (Union[Member
, Role
]) – The object to resolve permissions for. This could be either
+a member or a role. If it’s a role then member overwrites
+are not computed.
+
+- Returns
+The resolved permissions for the member or role.
+
+- Return type
+Permissions
+
+
+
+
+
+-
+is_nsfw()
+bool
: Checks if the channel is NSFW.
+
+
+
+-
+await clone(*, name=None, reason=None)
+This function is a coroutine.
+Clones this channel. This creates a channel with the same properties
+as this channel.
+You must have the manage_channels
permission to
+do this.
+
+
+- Parameters
+
+name (Optional[str
]) – The name of the new channel. If not provided, defaults to this
+channel name.
+reason (Optional[str
]) – The reason for cloning this channel. Shows up on the audit log.
+
+
+- Raises
+-
+
+- Returns
+The channel that was created.
+
+- Return type
+abc.GuildChannel
+
+
+
+
+
+-
+await edit(*, reason=None, **options)
+This function is a coroutine.
+Edits the channel.
+You must have the manage_channels
permission to
+use this.
+
+
Changed in version 2.0: Edits are no longer in-place, the newly edited channel is returned instead.
+
+
+- Parameters
+
+name (str
) – The new channel name.
+position (int
) – The new channel’s position.
+nsfw (bool
) – To mark the channel as NSFW or not.
+sync_permissions (bool
) – Whether to sync permissions with the channel’s new or pre-existing
+category. Defaults to False
.
+category (Optional[CategoryChannel
]) – The new category for this channel. Can be None
to remove the
+category.
+reason (Optional[str
]) – The reason for editing this channel. Shows up on the audit log.
+overwrites (Mapping
) –
A Mapping
of target (either a role or a member) to
+PermissionOverwrite
to apply to the channel.
+
+
+
+
+- Raises
+
+InvalidArgument – If position is less than 0 or greater than the number of channels, or if
+ the permission overwrite information is not in proper form.
+Forbidden – You do not have permissions to edit the channel.
+HTTPException – Editing the channel failed.
+
+
+- Returns
+The newly edited store channel. If the edit was only positional
+then None
is returned instead.
+
+- Return type
+Optional[StoreChannel
]
+
+
+
+
+
+-
+property category
+The category this channel belongs to.
+If there is no category then this is None
.
+
+- Type
+Optional[CategoryChannel
]
+
+
+
+
+
+-
+property changed_roles
+Returns a list of roles that have been overridden from
+their default values in the roles
attribute.
+
+- Type
+List[Role
]
+
+
+
+
+
+-
+await create_invite(*, reason=None, max_age=0, max_uses=0, temporary=False, unique=True, target_type=None, target_user=None, target_application_id=None)
+This function is a coroutine.
+Creates an instant invite from a text or voice channel.
+You must have the create_instant_invite
permission to
+do this.
+
+- Parameters
+
+max_age (int
) – How long the invite should last in seconds. If it’s 0 then the invite
+doesn’t expire. Defaults to 0
.
+max_uses (int
) – How many uses the invite could be used for. If it’s 0 then there
+are unlimited uses. Defaults to 0
.
+temporary (bool
) – Denotes that the invite grants temporary membership
+(i.e. they get kicked after they disconnect). Defaults to False
.
+unique (bool
) – Indicates if a unique invite URL should be created. Defaults to True.
+If this is set to False
then it will return a previously created
+invite.
+reason (Optional[str
]) – The reason for creating this invite. Shows up on the audit log.
+target_type (Optional[InviteTarget
]) –
The type of target for the voice channel invite, if any.
+
+
+target_user (Optional[User
]) –
The user whose stream to display for this invite, required if target_type is TargetType.stream. The user must be streaming in the channel.
+
+
+target_application_id: –
Optional[int
]: The id of the embedded application for the invite, required if target_type is TargetType.embedded_application.
+
+
+
+
+- Raises
+-
+
+- Returns
+The invite that was created.
+
+- Return type
+Invite
+
+
+
+
+
+-
+property created_at
+Returns the channel’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+await delete(*, reason=None)
+This function is a coroutine.
+Deletes the channel.
+You must have manage_channels
permission to use this.
+
+- Parameters
+reason (Optional[str
]) – The reason for deleting this channel.
+Shows up on the audit log.
+
+- Raises
+
+Forbidden – You do not have proper permissions to delete the channel.
+NotFound – The channel was not found or was already deleted.
+HTTPException – Deleting the channel failed.
+
+
+
+
+
+
+-
+await invites()
+This function is a coroutine.
+Returns a list of all active instant invites from this channel.
+You must have manage_channels
to get this information.
+
+- Raises
+-
+
+- Returns
+The list of invites that are currently active.
+
+- Return type
+List[Invite
]
+
+
+
+
+
+-
+property mention
+The string that allows you to mention the channel.
+
+- Type
+str
+
+
+
+
+
+-
+await move(**kwargs)
+This function is a coroutine.
+A rich interface to help move a channel relative to other channels.
+If exact position movement is required, edit
should be used instead.
+You must have the manage_channels
permission to
+do this.
+
+
Note
+
Voice channels will always be sorted below text channels.
+This is a Discord limitation.
+
+
+
+- Parameters
+
+beginning (bool
) – Whether to move the channel to the beginning of the
+channel list (or category if given).
+This is mutually exclusive with end
, before
, and after
.
+end (bool
) – Whether to move the channel to the end of the
+channel list (or category if given).
+This is mutually exclusive with beginning
, before
, and after
.
+before (Snowflake
) – The channel that should be before our current channel.
+This is mutually exclusive with beginning
, end
, and after
.
+after (Snowflake
) – The channel that should be after our current channel.
+This is mutually exclusive with beginning
, end
, and before
.
+offset (int
) – The number of channels to offset the move by. For example,
+an offset of 2
with beginning=True
would move
+it 2 after the beginning. A positive number moves it below
+while a negative number moves it above. Note that this
+number is relative and computed after the beginning
,
+end
, before
, and after
parameters.
+category (Optional[Snowflake
]) – The category to move this channel under.
+If None
is given then it moves it out of the category.
+This parameter is ignored if moving a category channel.
+sync_permissions (bool
) – Whether to sync the permissions with the category (if given).
+reason (str
) – The reason for the move.
+
+
+- Raises
+
+InvalidArgument – An invalid position was given or a bad mix of arguments were passed.
+Forbidden – You do not have permissions to move the channel.
+HTTPException – Moving the channel failed.
+
+
+
+
+
+
+-
+property overwrites
+Returns all of the channel’s overwrites.
+This is returned as a dictionary where the key contains the target which
+can be either a Role
or a Member
and the value is the
+overwrite as a PermissionOverwrite
.
+
+- Returns
+The channel’s permission overwrites.
+
+- Return type
+Dict[Union[Role
, Member
], PermissionOverwrite
]
+
+
+
+
+
+-
+overwrites_for(obj)
+Returns the channel-specific overwrites for a member or a role.
+
+- Parameters
+obj (Union[Role
, User
]) – The role or user denoting
+whose overwrite to get.
+
+- Returns
+The permission overwrites for this object.
+
+- Return type
+PermissionOverwrite
+
+
+
+
+
+-
+property permissions_synced
+Whether or not the permissions for this channel are synced with the
+category it belongs to.
+If there is no category then this is False
.
+
+
+- Type
+bool
+
+
+
+
+
+-
+await set_permissions(target, *, overwrite=see - below, reason=None, **permissions)
+This function is a coroutine.
+Sets the channel specific permission overwrites for a target in the
+channel.
+The target
parameter should either be a Member
or a
+Role
that belongs to guild.
+The overwrite
parameter, if given, must either be None
or
+PermissionOverwrite
. For convenience, you can pass in
+keyword arguments denoting Permissions
attributes. If this is
+done, then you cannot mix the keyword arguments with the overwrite
+parameter.
+If the overwrite
parameter is None
, then the permission
+overwrites are deleted.
+You must have the manage_roles
permission to use this.
+
+
Note
+
This method replaces the old overwrites with the ones given.
+
+Examples
+Setting allow and deny:
+await message.channel.set_permissions(message.author, read_messages=True,
+ send_messages=False)
+
+
+Deleting overwrites
+await channel.set_permissions(member, overwrite=None)
+
+
+Using PermissionOverwrite
+overwrite = discord.PermissionOverwrite()
+overwrite.send_messages = False
+overwrite.read_messages = True
+await channel.set_permissions(member, overwrite=overwrite)
+
+
+
+- Parameters
+
+target (Union[Member
, Role
]) – The member or role to overwrite permissions for.
+overwrite (Optional[PermissionOverwrite
]) – The permissions to allow and deny to the target, or None
to
+delete the overwrite.
+**permissions – A keyword argument list of permissions to set for ease of use.
+Cannot be mixed with overwrite
.
+reason (Optional[str
]) – The reason for doing this action. Shows up on the audit log.
+
+
+- Raises
+
+Forbidden – You do not have permissions to edit channel specific permissions.
+HTTPException – Editing channel specific permissions failed.
+NotFound – The role or member being edited is not part of the guild.
+InvalidArgument – The overwrite parameter invalid or the target type was not
+ Role
or Member
.
+
+
+
+
+
+
+
+
+
+VoiceChannel
+
+-
+class discord.VoiceChannel
+Represents a Discord guild voice channel.
+
+
+-
+x == y
+Checks if two channels are equal.
+
+
+
+-
+x != y
+Checks if two channels are not equal.
+
+
+
+-
+hash(x)
+Returns the channel’s hash.
+
+
+
+-
+str(x)
+Returns the channel’s name.
+
+
+
+
+-
+name
+The channel name.
+
+- Type
+str
+
+
+
+
+
+-
+guild
+The guild the channel belongs to.
+
+- Type
+Guild
+
+
+
+
+
+-
+id
+The channel ID.
+
+- Type
+int
+
+
+
+
+
+-
+category_id
+The category channel ID this channel belongs to, if applicable.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+position
+The position in the channel list. This is a number that starts at 0. e.g. the
+top channel is position 0.
+
+- Type
+int
+
+
+
+
+
+-
+bitrate
+The channel’s preferred audio bitrate in bits per second.
+
+- Type
+int
+
+
+
+
+
+-
+user_limit
+The channel’s limit for number of members that can be in a voice channel.
+
+- Type
+int
+
+
+
+
+
+-
+rtc_region
+The region for the voice channel’s voice communication.
+A value of None
indicates automatic voice region detection.
+
+
+- Type
+Optional[VoiceRegion
]
+
+
+
+
+
+-
+video_quality_mode
+The camera video quality for the voice channel’s participants.
+
+
+- Type
+VideoQualityMode
+
+
+
+
+
+-
+property type
+The channel’s Discord type.
+
+- Type
+ChannelType
+
+
+
+
+
+-
+await clone(*, name=None, reason=None)
+This function is a coroutine.
+Clones this channel. This creates a channel with the same properties
+as this channel.
+You must have the manage_channels
permission to
+do this.
+
+
+- Parameters
+
+name (Optional[str
]) – The name of the new channel. If not provided, defaults to this
+channel name.
+reason (Optional[str
]) – The reason for cloning this channel. Shows up on the audit log.
+
+
+- Raises
+-
+
+- Returns
+The channel that was created.
+
+- Return type
+abc.GuildChannel
+
+
+
+
+
+-
+await edit(*, reason=None, **options)
+This function is a coroutine.
+Edits the channel.
+You must have the manage_channels
permission to
+use this.
+
+
Changed in version 1.3: The overwrites
keyword-only parameter was added.
+
+
+
Changed in version 2.0: Edits are no longer in-place, the newly edited channel is returned instead.
+
+
+- Parameters
+
+name (str
) – The new channel’s name.
+bitrate (int
) – The new channel’s bitrate.
+user_limit (int
) – The new channel’s user limit.
+position (int
) – The new channel’s position.
+sync_permissions (bool
) – Whether to sync permissions with the channel’s new or pre-existing
+category. Defaults to False
.
+category (Optional[CategoryChannel
]) – The new category for this channel. Can be None
to remove the
+category.
+reason (Optional[str
]) – The reason for editing this channel. Shows up on the audit log.
+overwrites (Mapping
) – A Mapping
of target (either a role or a member) to
+PermissionOverwrite
to apply to the channel.
+rtc_region (Optional[VoiceRegion
]) –
The new region for the voice channel’s voice communication.
+A value of None
indicates automatic voice region detection.
+
+
+video_quality_mode (VideoQualityMode
) –
The camera video quality for the voice channel’s participants.
+
+
+
+
+- Raises
+
+InvalidArgument – If the permission overwrite information is not in proper form.
+Forbidden – You do not have permissions to edit the channel.
+HTTPException – Editing the channel failed.
+
+
+- Returns
+The newly edited voice channel. If the edit was only positional
+then None
is returned instead.
+
+- Return type
+Optional[VoiceChannel
]
+
+
+
+
+
+-
+property category
+The category this channel belongs to.
+If there is no category then this is None
.
+
+- Type
+Optional[CategoryChannel
]
+
+
+
+
+
+-
+property changed_roles
+Returns a list of roles that have been overridden from
+their default values in the roles
attribute.
+
+- Type
+List[Role
]
+
+
+
+
+
+-
+await connect(*, timeout=60.0, reconnect=True, cls=<class 'discord.voice_client.VoiceClient'>)
+This function is a coroutine.
+Connects to voice and creates a VoiceClient
to establish
+your connection to the voice server.
+This requires Intents.voice_states
.
+
+- Parameters
+
+timeout (float
) – The timeout in seconds to wait for the voice endpoint.
+reconnect (bool
) – Whether the bot should automatically attempt
+a reconnect if a part of the handshake fails
+or the gateway goes down.
+cls (Type[VoiceProtocol
]) – A type that subclasses VoiceProtocol
to connect with.
+Defaults to VoiceClient
.
+
+
+- Raises
+-
+
+- Returns
+A voice client that is fully connected to the voice server.
+
+- Return type
+VoiceProtocol
+
+
+
+
+
+-
+await create_invite(*, reason=None, max_age=0, max_uses=0, temporary=False, unique=True, target_type=None, target_user=None, target_application_id=None)
+This function is a coroutine.
+Creates an instant invite from a text or voice channel.
+You must have the create_instant_invite
permission to
+do this.
+
+- Parameters
+
+max_age (int
) – How long the invite should last in seconds. If it’s 0 then the invite
+doesn’t expire. Defaults to 0
.
+max_uses (int
) – How many uses the invite could be used for. If it’s 0 then there
+are unlimited uses. Defaults to 0
.
+temporary (bool
) – Denotes that the invite grants temporary membership
+(i.e. they get kicked after they disconnect). Defaults to False
.
+unique (bool
) – Indicates if a unique invite URL should be created. Defaults to True.
+If this is set to False
then it will return a previously created
+invite.
+reason (Optional[str
]) – The reason for creating this invite. Shows up on the audit log.
+target_type (Optional[InviteTarget
]) –
The type of target for the voice channel invite, if any.
+
+
+target_user (Optional[User
]) –
The user whose stream to display for this invite, required if target_type is TargetType.stream. The user must be streaming in the channel.
+
+
+target_application_id: –
Optional[int
]: The id of the embedded application for the invite, required if target_type is TargetType.embedded_application.
+
+
+
+
+- Raises
+-
+
+- Returns
+The invite that was created.
+
+- Return type
+Invite
+
+
+
+
+
+-
+property created_at
+Returns the channel’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+await delete(*, reason=None)
+This function is a coroutine.
+Deletes the channel.
+You must have manage_channels
permission to use this.
+
+- Parameters
+reason (Optional[str
]) – The reason for deleting this channel.
+Shows up on the audit log.
+
+- Raises
+
+Forbidden – You do not have proper permissions to delete the channel.
+NotFound – The channel was not found or was already deleted.
+HTTPException – Deleting the channel failed.
+
+
+
+
+
+
+-
+await invites()
+This function is a coroutine.
+Returns a list of all active instant invites from this channel.
+You must have manage_channels
to get this information.
+
+- Raises
+-
+
+- Returns
+The list of invites that are currently active.
+
+- Return type
+List[Invite
]
+
+
+
+
+
+-
+property members
+Returns all members that are currently inside this voice channel.
+
+- Type
+List[Member
]
+
+
+
+
+
+-
+property mention
+The string that allows you to mention the channel.
+
+- Type
+str
+
+
+
+
+
+-
+await move(**kwargs)
+This function is a coroutine.
+A rich interface to help move a channel relative to other channels.
+If exact position movement is required, edit
should be used instead.
+You must have the manage_channels
permission to
+do this.
+
+
Note
+
Voice channels will always be sorted below text channels.
+This is a Discord limitation.
+
+
+
+- Parameters
+
+beginning (bool
) – Whether to move the channel to the beginning of the
+channel list (or category if given).
+This is mutually exclusive with end
, before
, and after
.
+end (bool
) – Whether to move the channel to the end of the
+channel list (or category if given).
+This is mutually exclusive with beginning
, before
, and after
.
+before (Snowflake
) – The channel that should be before our current channel.
+This is mutually exclusive with beginning
, end
, and after
.
+after (Snowflake
) – The channel that should be after our current channel.
+This is mutually exclusive with beginning
, end
, and before
.
+offset (int
) – The number of channels to offset the move by. For example,
+an offset of 2
with beginning=True
would move
+it 2 after the beginning. A positive number moves it below
+while a negative number moves it above. Note that this
+number is relative and computed after the beginning
,
+end
, before
, and after
parameters.
+category (Optional[Snowflake
]) – The category to move this channel under.
+If None
is given then it moves it out of the category.
+This parameter is ignored if moving a category channel.
+sync_permissions (bool
) – Whether to sync the permissions with the category (if given).
+reason (str
) – The reason for the move.
+
+
+- Raises
+
+InvalidArgument – An invalid position was given or a bad mix of arguments were passed.
+Forbidden – You do not have permissions to move the channel.
+HTTPException – Moving the channel failed.
+
+
+
+
+
+
+-
+property overwrites
+Returns all of the channel’s overwrites.
+This is returned as a dictionary where the key contains the target which
+can be either a Role
or a Member
and the value is the
+overwrite as a PermissionOverwrite
.
+
+- Returns
+The channel’s permission overwrites.
+
+- Return type
+Dict[Union[Role
, Member
], PermissionOverwrite
]
+
+
+
+
+
+-
+overwrites_for(obj)
+Returns the channel-specific overwrites for a member or a role.
+
+- Parameters
+obj (Union[Role
, User
]) – The role or user denoting
+whose overwrite to get.
+
+- Returns
+The permission overwrites for this object.
+
+- Return type
+PermissionOverwrite
+
+
+
+
+
+-
+permissions_for(obj, /)
+Handles permission resolution for the Member
+or Role
.
+This function takes into consideration the following cases:
+
+Guild owner
+Guild roles
+Channel overrides
+Member overrides
+
+If a Role
is passed, then it checks the permissions
+someone with that role would have, which is essentially:
+
+The default role permissions
+The permissions of the role used as a parameter
+The default role permission overwrites
+The permission overwrites of the role used as a parameter
+
+
+
Changed in version 2.0: The object passed in can now be a role object.
+
+
+- Parameters
+obj (Union[Member
, Role
]) – The object to resolve permissions for. This could be either
+a member or a role. If it’s a role then member overwrites
+are not computed.
+
+- Returns
+The resolved permissions for the member or role.
+
+- Return type
+Permissions
+
+
+
+
+
+-
+property permissions_synced
+Whether or not the permissions for this channel are synced with the
+category it belongs to.
+If there is no category then this is False
.
+
+
+- Type
+bool
+
+
+
+
+
+-
+await set_permissions(target, *, overwrite=see - below, reason=None, **permissions)
+This function is a coroutine.
+Sets the channel specific permission overwrites for a target in the
+channel.
+The target
parameter should either be a Member
or a
+Role
that belongs to guild.
+The overwrite
parameter, if given, must either be None
or
+PermissionOverwrite
. For convenience, you can pass in
+keyword arguments denoting Permissions
attributes. If this is
+done, then you cannot mix the keyword arguments with the overwrite
+parameter.
+If the overwrite
parameter is None
, then the permission
+overwrites are deleted.
+You must have the manage_roles
permission to use this.
+
+
Note
+
This method replaces the old overwrites with the ones given.
+
+Examples
+Setting allow and deny:
+await message.channel.set_permissions(message.author, read_messages=True,
+ send_messages=False)
+
+
+Deleting overwrites
+await channel.set_permissions(member, overwrite=None)
+
+
+Using PermissionOverwrite
+overwrite = discord.PermissionOverwrite()
+overwrite.send_messages = False
+overwrite.read_messages = True
+await channel.set_permissions(member, overwrite=overwrite)
+
+
+
+- Parameters
+
+target (Union[Member
, Role
]) – The member or role to overwrite permissions for.
+overwrite (Optional[PermissionOverwrite
]) – The permissions to allow and deny to the target, or None
to
+delete the overwrite.
+**permissions – A keyword argument list of permissions to set for ease of use.
+Cannot be mixed with overwrite
.
+reason (Optional[str
]) – The reason for doing this action. Shows up on the audit log.
+
+
+- Raises
+
+Forbidden – You do not have permissions to edit channel specific permissions.
+HTTPException – Editing channel specific permissions failed.
+NotFound – The role or member being edited is not part of the guild.
+InvalidArgument – The overwrite parameter invalid or the target type was not
+ Role
or Member
.
+
+
+
+
+
+
+-
+property voice_states
+Returns a mapping of member IDs who have voice states in this channel.
+
+
+
Note
+
This function is intentionally low level to replace members
+when the member cache is unavailable.
+
+
+- Returns
+The mapping of member ID to a voice state.
+
+- Return type
+Mapping[int
, VoiceState
]
+
+
+
+
+
+
+
+
+StageChannel
+
+-
+class discord.StageChannel
+Represents a Discord guild stage channel.
+
+
+
+-
+x == y
+Checks if two channels are equal.
+
+
+
+-
+x != y
+Checks if two channels are not equal.
+
+
+
+-
+hash(x)
+Returns the channel’s hash.
+
+
+
+-
+str(x)
+Returns the channel’s name.
+
+
+
+
+-
+name
+The channel name.
+
+- Type
+str
+
+
+
+
+
+-
+guild
+The guild the channel belongs to.
+
+- Type
+Guild
+
+
+
+
+
+-
+id
+The channel ID.
+
+- Type
+int
+
+
+
+
+
+-
+topic
+The channel’s topic. None
if it isn’t set.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+category_id
+The category channel ID this channel belongs to, if applicable.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+position
+The position in the channel list. This is a number that starts at 0. e.g. the
+top channel is position 0.
+
+- Type
+int
+
+
+
+
+
+-
+bitrate
+The channel’s preferred audio bitrate in bits per second.
+
+- Type
+int
+
+
+
+
+
+-
+user_limit
+The channel’s limit for number of members that can be in a stage channel.
+
+- Type
+int
+
+
+
+
+
+-
+rtc_region
+The region for the stage channel’s voice communication.
+A value of None
indicates automatic voice region detection.
+
+- Type
+Optional[VoiceRegion
]
+
+
+
+
+
+-
+video_quality_mode
+The camera video quality for the stage channel’s participants.
+
+
+- Type
+VideoQualityMode
+
+
+
+
+
+-
+property requesting_to_speak
+A list of members who are requesting to speak in the stage channel.
+
+- Type
+List[Member
]
+
+
+
+
+
+-
+property speakers
+A list of members who have been permitted to speak in the stage channel.
+
+
+- Type
+List[Member
]
+
+
+
+
+
+-
+property listeners
+A list of members who are listening in the stage channel.
+
+
+- Type
+List[Member
]
+
+
+
+
+
+-
+property moderators
+A list of members who are moderating the stage channel.
+
+
+- Type
+List[Member
]
+
+
+
+
+
+-
+property type
+The channel’s Discord type.
+
+- Type
+ChannelType
+
+
+
+
+
+-
+await clone(*, name=None, reason=None)
+This function is a coroutine.
+Clones this channel. This creates a channel with the same properties
+as this channel.
+You must have the manage_channels
permission to
+do this.
+
+
+- Parameters
+
+name (Optional[str
]) – The name of the new channel. If not provided, defaults to this
+channel name.
+reason (Optional[str
]) – The reason for cloning this channel. Shows up on the audit log.
+
+
+- Raises
+-
+
+- Returns
+The channel that was created.
+
+- Return type
+abc.GuildChannel
+
+
+
+
+
+-
+property instance
+The running stage instance of the stage channel.
+
+
+- Type
+Optional[StageInstance
]
+
+
+
+
+
+-
+await create_instance(*, topic, privacy_level=..., reason=None)
+This function is a coroutine.
+Create a stage instance.
+You must have the manage_channels
permission to
+use this.
+
+
+- Parameters
+-
+
+- Raises
+
+InvalidArgument – If the privacy_level
parameter is not the proper type.
+Forbidden – You do not have permissions to create a stage instance.
+HTTPException – Creating a stage instance failed.
+
+
+- Returns
+The newly created stage instance.
+
+- Return type
+StageInstance
+
+
+
+
+
+-
+await fetch_instance()
+This function is a coroutine.
+Gets the running StageInstance
.
+
+
+- Raises
+-
+
+- Returns
+The stage instance.
+
+- Return type
+StageInstance
+
+
+
+
+
+-
+await edit(*, reason=None, **options)
+This function is a coroutine.
+Edits the channel.
+You must have the manage_channels
permission to
+use this.
+
+
Changed in version 2.0: The topic
parameter must now be set via create_instance
.
+
+
+
Changed in version 2.0: Edits are no longer in-place, the newly edited channel is returned instead.
+
+
+- Parameters
+
+name (str
) – The new channel’s name.
+position (int
) – The new channel’s position.
+sync_permissions (bool
) – Whether to sync permissions with the channel’s new or pre-existing
+category. Defaults to False
.
+category (Optional[CategoryChannel
]) – The new category for this channel. Can be None
to remove the
+category.
+reason (Optional[str
]) – The reason for editing this channel. Shows up on the audit log.
+overwrites (Mapping
) – A Mapping
of target (either a role or a member) to
+PermissionOverwrite
to apply to the channel.
+rtc_region (Optional[VoiceRegion
]) – The new region for the stage channel’s voice communication.
+A value of None
indicates automatic voice region detection.
+video_quality_mode (VideoQualityMode
) –
The camera video quality for the stage channel’s participants.
+
+
+
+
+- Raises
+
+InvalidArgument – If the permission overwrite information is not in proper form.
+Forbidden – You do not have permissions to edit the channel.
+HTTPException – Editing the channel failed.
+
+
+- Returns
+The newly edited stage channel. If the edit was only positional
+then None
is returned instead.
+
+- Return type
+Optional[StageChannel
]
+
+
+
+
+
+-
+property category
+The category this channel belongs to.
+If there is no category then this is None
.
+
+- Type
+Optional[CategoryChannel
]
+
+
+
+
+
+-
+property changed_roles
+Returns a list of roles that have been overridden from
+their default values in the roles
attribute.
+
+- Type
+List[Role
]
+
+
+
+
+
+-
+await connect(*, timeout=60.0, reconnect=True, cls=<class 'discord.voice_client.VoiceClient'>)
+This function is a coroutine.
+Connects to voice and creates a VoiceClient
to establish
+your connection to the voice server.
+This requires Intents.voice_states
.
+
+- Parameters
+
+timeout (float
) – The timeout in seconds to wait for the voice endpoint.
+reconnect (bool
) – Whether the bot should automatically attempt
+a reconnect if a part of the handshake fails
+or the gateway goes down.
+cls (Type[VoiceProtocol
]) – A type that subclasses VoiceProtocol
to connect with.
+Defaults to VoiceClient
.
+
+
+- Raises
+-
+
+- Returns
+A voice client that is fully connected to the voice server.
+
+- Return type
+VoiceProtocol
+
+
+
+
+
+-
+await create_invite(*, reason=None, max_age=0, max_uses=0, temporary=False, unique=True, target_type=None, target_user=None, target_application_id=None)
+This function is a coroutine.
+Creates an instant invite from a text or voice channel.
+You must have the create_instant_invite
permission to
+do this.
+
+- Parameters
+
+max_age (int
) – How long the invite should last in seconds. If it’s 0 then the invite
+doesn’t expire. Defaults to 0
.
+max_uses (int
) – How many uses the invite could be used for. If it’s 0 then there
+are unlimited uses. Defaults to 0
.
+temporary (bool
) – Denotes that the invite grants temporary membership
+(i.e. they get kicked after they disconnect). Defaults to False
.
+unique (bool
) – Indicates if a unique invite URL should be created. Defaults to True.
+If this is set to False
then it will return a previously created
+invite.
+reason (Optional[str
]) – The reason for creating this invite. Shows up on the audit log.
+target_type (Optional[InviteTarget
]) –
The type of target for the voice channel invite, if any.
+
+
+target_user (Optional[User
]) –
The user whose stream to display for this invite, required if target_type is TargetType.stream. The user must be streaming in the channel.
+
+
+target_application_id: –
Optional[int
]: The id of the embedded application for the invite, required if target_type is TargetType.embedded_application.
+
+
+
+
+- Raises
+-
+
+- Returns
+The invite that was created.
+
+- Return type
+Invite
+
+
+
+
+
+-
+property created_at
+Returns the channel’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+await delete(*, reason=None)
+This function is a coroutine.
+Deletes the channel.
+You must have manage_channels
permission to use this.
+
+- Parameters
+reason (Optional[str
]) – The reason for deleting this channel.
+Shows up on the audit log.
+
+- Raises
+
+Forbidden – You do not have proper permissions to delete the channel.
+NotFound – The channel was not found or was already deleted.
+HTTPException – Deleting the channel failed.
+
+
+
+
+
+
+-
+await invites()
+This function is a coroutine.
+Returns a list of all active instant invites from this channel.
+You must have manage_channels
to get this information.
+
+- Raises
+-
+
+- Returns
+The list of invites that are currently active.
+
+- Return type
+List[Invite
]
+
+
+
+
+
+-
+property members
+Returns all members that are currently inside this voice channel.
+
+- Type
+List[Member
]
+
+
+
+
+
+-
+property mention
+The string that allows you to mention the channel.
+
+- Type
+str
+
+
+
+
+
+-
+await move(**kwargs)
+This function is a coroutine.
+A rich interface to help move a channel relative to other channels.
+If exact position movement is required, edit
should be used instead.
+You must have the manage_channels
permission to
+do this.
+
+
Note
+
Voice channels will always be sorted below text channels.
+This is a Discord limitation.
+
+
+
+- Parameters
+
+beginning (bool
) – Whether to move the channel to the beginning of the
+channel list (or category if given).
+This is mutually exclusive with end
, before
, and after
.
+end (bool
) – Whether to move the channel to the end of the
+channel list (or category if given).
+This is mutually exclusive with beginning
, before
, and after
.
+before (Snowflake
) – The channel that should be before our current channel.
+This is mutually exclusive with beginning
, end
, and after
.
+after (Snowflake
) – The channel that should be after our current channel.
+This is mutually exclusive with beginning
, end
, and before
.
+offset (int
) – The number of channels to offset the move by. For example,
+an offset of 2
with beginning=True
would move
+it 2 after the beginning. A positive number moves it below
+while a negative number moves it above. Note that this
+number is relative and computed after the beginning
,
+end
, before
, and after
parameters.
+category (Optional[Snowflake
]) – The category to move this channel under.
+If None
is given then it moves it out of the category.
+This parameter is ignored if moving a category channel.
+sync_permissions (bool
) – Whether to sync the permissions with the category (if given).
+reason (str
) – The reason for the move.
+
+
+- Raises
+
+InvalidArgument – An invalid position was given or a bad mix of arguments were passed.
+Forbidden – You do not have permissions to move the channel.
+HTTPException – Moving the channel failed.
+
+
+
+
+
+
+-
+property overwrites
+Returns all of the channel’s overwrites.
+This is returned as a dictionary where the key contains the target which
+can be either a Role
or a Member
and the value is the
+overwrite as a PermissionOverwrite
.
+
+- Returns
+The channel’s permission overwrites.
+
+- Return type
+Dict[Union[Role
, Member
], PermissionOverwrite
]
+
+
+
+
+
+-
+overwrites_for(obj)
+Returns the channel-specific overwrites for a member or a role.
+
+- Parameters
+obj (Union[Role
, User
]) – The role or user denoting
+whose overwrite to get.
+
+- Returns
+The permission overwrites for this object.
+
+- Return type
+PermissionOverwrite
+
+
+
+
+
+-
+permissions_for(obj, /)
+Handles permission resolution for the Member
+or Role
.
+This function takes into consideration the following cases:
+
+Guild owner
+Guild roles
+Channel overrides
+Member overrides
+
+If a Role
is passed, then it checks the permissions
+someone with that role would have, which is essentially:
+
+The default role permissions
+The permissions of the role used as a parameter
+The default role permission overwrites
+The permission overwrites of the role used as a parameter
+
+
+
Changed in version 2.0: The object passed in can now be a role object.
+
+
+- Parameters
+obj (Union[Member
, Role
]) – The object to resolve permissions for. This could be either
+a member or a role. If it’s a role then member overwrites
+are not computed.
+
+- Returns
+The resolved permissions for the member or role.
+
+- Return type
+Permissions
+
+
+
+
+
+-
+property permissions_synced
+Whether or not the permissions for this channel are synced with the
+category it belongs to.
+If there is no category then this is False
.
+
+
+- Type
+bool
+
+
+
+
+
+-
+await set_permissions(target, *, overwrite=see - below, reason=None, **permissions)
+This function is a coroutine.
+Sets the channel specific permission overwrites for a target in the
+channel.
+The target
parameter should either be a Member
or a
+Role
that belongs to guild.
+The overwrite
parameter, if given, must either be None
or
+PermissionOverwrite
. For convenience, you can pass in
+keyword arguments denoting Permissions
attributes. If this is
+done, then you cannot mix the keyword arguments with the overwrite
+parameter.
+If the overwrite
parameter is None
, then the permission
+overwrites are deleted.
+You must have the manage_roles
permission to use this.
+
+
Note
+
This method replaces the old overwrites with the ones given.
+
+Examples
+Setting allow and deny:
+await message.channel.set_permissions(message.author, read_messages=True,
+ send_messages=False)
+
+
+Deleting overwrites
+await channel.set_permissions(member, overwrite=None)
+
+
+Using PermissionOverwrite
+overwrite = discord.PermissionOverwrite()
+overwrite.send_messages = False
+overwrite.read_messages = True
+await channel.set_permissions(member, overwrite=overwrite)
+
+
+
+- Parameters
+
+target (Union[Member
, Role
]) – The member or role to overwrite permissions for.
+overwrite (Optional[PermissionOverwrite
]) – The permissions to allow and deny to the target, or None
to
+delete the overwrite.
+**permissions – A keyword argument list of permissions to set for ease of use.
+Cannot be mixed with overwrite
.
+reason (Optional[str
]) – The reason for doing this action. Shows up on the audit log.
+
+
+- Raises
+
+Forbidden – You do not have permissions to edit channel specific permissions.
+HTTPException – Editing channel specific permissions failed.
+NotFound – The role or member being edited is not part of the guild.
+InvalidArgument – The overwrite parameter invalid or the target type was not
+ Role
or Member
.
+
+
+
+
+
+
+-
+property voice_states
+Returns a mapping of member IDs who have voice states in this channel.
+
+
+
Note
+
This function is intentionally low level to replace members
+when the member cache is unavailable.
+
+
+- Returns
+The mapping of member ID to a voice state.
+
+- Return type
+Mapping[int
, VoiceState
]
+
+
+
+
+
+
+
+
+StageInstance
+
+-
+class discord.StageInstance
+Represents a stage instance of a stage channel in a guild.
+
+
+
+-
+x == y
+Checks if two stage instances are equal.
+
+
+
+-
+x != y
+Checks if two stage instances are not equal.
+
+
+
+-
+hash(x)
+Returns the stage instance’s hash.
+
+
+
+-
+int(x)
+Returns the stage instance’s ID.
+
+
+
+
+-
+id
+The stage instance’s ID.
+
+- Type
+int
+
+
+
+
+
+-
+guild
+The guild that the stage instance is running in.
+
+- Type
+Guild
+
+
+
+
+
+-
+channel_id
+The ID of the channel that the stage instance is running in.
+
+- Type
+int
+
+
+
+
+
+-
+topic
+The topic of the stage instance.
+
+- Type
+str
+
+
+
+
+
+-
+privacy_level
+The privacy level of the stage instance.
+
+- Type
+StagePrivacyLevel
+
+
+
+
+
+-
+discoverable_disabled
+Whether discoverability for the stage instance is disabled.
+
+- Type
+bool
+
+
+
+
+
+-
+channel
+The channel that stage instance is running in.
+
+- Type
+Optional[StageChannel
]
+
+
+
+
+
+-
+await edit(*, topic=..., privacy_level=..., reason=None)
+This function is a coroutine.
+Edits the stage instance.
+You must have the manage_channels
permission to
+use this.
+
+- Parameters
+
+topic (str
) – The stage instance’s new topic.
+privacy_level (StagePrivacyLevel
) – The stage instance’s new privacy level.
+reason (str
) – The reason the stage instance was edited. Shows up on the audit log.
+
+
+- Raises
+
+InvalidArgument – If the privacy_level
parameter is not the proper type.
+Forbidden – You do not have permissions to edit the stage instance.
+HTTPException – Editing a stage instance failed.
+
+
+
+
+
+
+-
+await delete(*, reason=None)
+This function is a coroutine.
+Deletes the stage instance.
+You must have the manage_channels
permission to
+use this.
+
+- Parameters
+reason (str
) – The reason the stage instance was deleted. Shows up on the audit log.
+
+- Raises
+-
+
+
+
+
+
+
+
+
+CategoryChannel
+
+-
+class discord.CategoryChannel
+Represents a Discord channel category.
+These are useful to group channels to logical compartments.
+
+
+-
+x == y
+Checks if two channels are equal.
+
+
+
+-
+x != y
+Checks if two channels are not equal.
+
+
+
+-
+hash(x)
+Returns the category’s hash.
+
+
+
+-
+str(x)
+Returns the category’s name.
+
+
+
+-
+int(x)
+Returns the category’s ID.
+
+
+
+
+-
+name
+The category name.
+
+- Type
+str
+
+
+
+
+
+-
+guild
+The guild the category belongs to.
+
+- Type
+Guild
+
+
+
+
+
+-
+id
+The category channel ID.
+
+- Type
+int
+
+
+
+
+
+-
+position
+The position in the category list. This is a number that starts at 0. e.g. the
+top category is position 0.
+
+- Type
+int
+
+
+
+
+
+-
+nsfw
+If the channel is marked as “not safe for work”.
+
+
Note
+
To check if the channel or the guild of that channel are marked as NSFW, consider is_nsfw()
instead.
+
+
+- Type
+bool
+
+
+
+
+
+-
+property type
+The channel’s Discord type.
+
+- Type
+ChannelType
+
+
+
+
+
+-
+is_nsfw()
+bool
: Checks if the category is NSFW.
+
+
+
+-
+await clone(*, name=None, reason=None)
+This function is a coroutine.
+Clones this channel. This creates a channel with the same properties
+as this channel.
+You must have the manage_channels
permission to
+do this.
+
+
+- Parameters
+
+name (Optional[str
]) – The name of the new channel. If not provided, defaults to this
+channel name.
+reason (Optional[str
]) – The reason for cloning this channel. Shows up on the audit log.
+
+
+- Raises
+-
+
+- Returns
+The channel that was created.
+
+- Return type
+abc.GuildChannel
+
+
+
+
+
+-
+await edit(*, reason=None, **options)
+This function is a coroutine.
+Edits the channel.
+You must have the manage_channels
permission to
+use this.
+
+
Changed in version 1.3: The overwrites
keyword-only parameter was added.
+
+
+
Changed in version 2.0: Edits are no longer in-place, the newly edited channel is returned instead.
+
+
+- Parameters
+
+name (str
) – The new category’s name.
+position (int
) – The new category’s position.
+nsfw (bool
) – To mark the category as NSFW or not.
+reason (Optional[str
]) – The reason for editing this category. Shows up on the audit log.
+overwrites (Mapping
) – A Mapping
of target (either a role or a member) to
+PermissionOverwrite
to apply to the channel.
+
+
+- Raises
+
+InvalidArgument – If position is less than 0 or greater than the number of categories.
+Forbidden – You do not have permissions to edit the category.
+HTTPException – Editing the category failed.
+
+
+- Returns
+The newly edited category channel. If the edit was only positional
+then None
is returned instead.
+
+- Return type
+Optional[CategoryChannel
]
+
+
+
+
+
+-
+await move(**kwargs)
+This function is a coroutine.
+A rich interface to help move a channel relative to other channels.
+If exact position movement is required, edit
should be used instead.
+You must have the manage_channels
permission to
+do this.
+
+
Note
+
Voice channels will always be sorted below text channels.
+This is a Discord limitation.
+
+
+
+- Parameters
+
+beginning (bool
) – Whether to move the channel to the beginning of the
+channel list (or category if given).
+This is mutually exclusive with end
, before
, and after
.
+end (bool
) – Whether to move the channel to the end of the
+channel list (or category if given).
+This is mutually exclusive with beginning
, before
, and after
.
+before (Snowflake
) – The channel that should be before our current channel.
+This is mutually exclusive with beginning
, end
, and after
.
+after (Snowflake
) – The channel that should be after our current channel.
+This is mutually exclusive with beginning
, end
, and before
.
+offset (int
) – The number of channels to offset the move by. For example,
+an offset of 2
with beginning=True
would move
+it 2 after the beginning. A positive number moves it below
+while a negative number moves it above. Note that this
+number is relative and computed after the beginning
,
+end
, before
, and after
parameters.
+category (Optional[Snowflake
]) – The category to move this channel under.
+If None
is given then it moves it out of the category.
+This parameter is ignored if moving a category channel.
+sync_permissions (bool
) – Whether to sync the permissions with the category (if given).
+reason (str
) – The reason for the move.
+
+
+- Raises
+
+InvalidArgument – An invalid position was given or a bad mix of arguments were passed.
+Forbidden – You do not have permissions to move the channel.
+HTTPException – Moving the channel failed.
+
+
+
+
+
+
+-
+property channels
+Returns the channels that are under this category.
+These are sorted by the official Discord UI, which places voice channels below the text channels.
+
+- Type
+List[abc.GuildChannel
]
+
+
+
+
+
+-
+property text_channels
+Returns the text channels that are under this category.
+
+- Type
+List[TextChannel
]
+
+
+
+
+
+-
+property voice_channels
+Returns the voice channels that are under this category.
+
+- Type
+List[VoiceChannel
]
+
+
+
+
+
+-
+property stage_channels
+Returns the stage channels that are under this category.
+
+
+- Type
+List[StageChannel
]
+
+
+
+
+
+-
+await create_text_channel(name, **options)
+This function is a coroutine.
+A shortcut method to Guild.create_text_channel()
to create a TextChannel
in the category.
+
+- Returns
+The channel that was just created.
+
+- Return type
+TextChannel
+
+
+
+
+
+-
+await create_voice_channel(name, **options)
+This function is a coroutine.
+A shortcut method to Guild.create_voice_channel()
to create a VoiceChannel
in the category.
+
+- Returns
+The channel that was just created.
+
+- Return type
+VoiceChannel
+
+
+
+
+
+-
+await create_stage_channel(name, **options)
+This function is a coroutine.
+A shortcut method to Guild.create_stage_channel()
to create a StageChannel
in the category.
+
+
+- Returns
+The channel that was just created.
+
+- Return type
+StageChannel
+
+
+
+
+
+-
+property category
+The category this channel belongs to.
+If there is no category then this is None
.
+
+- Type
+Optional[CategoryChannel
]
+
+
+
+
+
+-
+property changed_roles
+Returns a list of roles that have been overridden from
+their default values in the roles
attribute.
+
+- Type
+List[Role
]
+
+
+
+
+
+-
+await create_invite(*, reason=None, max_age=0, max_uses=0, temporary=False, unique=True, target_type=None, target_user=None, target_application_id=None)
+This function is a coroutine.
+Creates an instant invite from a text or voice channel.
+You must have the create_instant_invite
permission to
+do this.
+
+- Parameters
+
+max_age (int
) – How long the invite should last in seconds. If it’s 0 then the invite
+doesn’t expire. Defaults to 0
.
+max_uses (int
) – How many uses the invite could be used for. If it’s 0 then there
+are unlimited uses. Defaults to 0
.
+temporary (bool
) – Denotes that the invite grants temporary membership
+(i.e. they get kicked after they disconnect). Defaults to False
.
+unique (bool
) – Indicates if a unique invite URL should be created. Defaults to True.
+If this is set to False
then it will return a previously created
+invite.
+reason (Optional[str
]) – The reason for creating this invite. Shows up on the audit log.
+target_type (Optional[InviteTarget
]) –
The type of target for the voice channel invite, if any.
+
+
+target_user (Optional[User
]) –
The user whose stream to display for this invite, required if target_type is TargetType.stream. The user must be streaming in the channel.
+
+
+target_application_id: –
Optional[int
]: The id of the embedded application for the invite, required if target_type is TargetType.embedded_application.
+
+
+
+
+- Raises
+-
+
+- Returns
+The invite that was created.
+
+- Return type
+Invite
+
+
+
+
+
+-
+property created_at
+Returns the channel’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+await delete(*, reason=None)
+This function is a coroutine.
+Deletes the channel.
+You must have manage_channels
permission to use this.
+
+- Parameters
+reason (Optional[str
]) – The reason for deleting this channel.
+Shows up on the audit log.
+
+- Raises
+
+Forbidden – You do not have proper permissions to delete the channel.
+NotFound – The channel was not found or was already deleted.
+HTTPException – Deleting the channel failed.
+
+
+
+
+
+
+-
+await invites()
+This function is a coroutine.
+Returns a list of all active instant invites from this channel.
+You must have manage_channels
to get this information.
+
+- Raises
+-
+
+- Returns
+The list of invites that are currently active.
+
+- Return type
+List[Invite
]
+
+
+
+
+
+-
+property mention
+The string that allows you to mention the channel.
+
+- Type
+str
+
+
+
+
+
+-
+property overwrites
+Returns all of the channel’s overwrites.
+This is returned as a dictionary where the key contains the target which
+can be either a Role
or a Member
and the value is the
+overwrite as a PermissionOverwrite
.
+
+- Returns
+The channel’s permission overwrites.
+
+- Return type
+Dict[Union[Role
, Member
], PermissionOverwrite
]
+
+
+
+
+
+-
+overwrites_for(obj)
+Returns the channel-specific overwrites for a member or a role.
+
+- Parameters
+obj (Union[Role
, User
]) – The role or user denoting
+whose overwrite to get.
+
+- Returns
+The permission overwrites for this object.
+
+- Return type
+PermissionOverwrite
+
+
+
+
+
+-
+permissions_for(obj, /)
+Handles permission resolution for the Member
+or Role
.
+This function takes into consideration the following cases:
+
+Guild owner
+Guild roles
+Channel overrides
+Member overrides
+
+If a Role
is passed, then it checks the permissions
+someone with that role would have, which is essentially:
+
+The default role permissions
+The permissions of the role used as a parameter
+The default role permission overwrites
+The permission overwrites of the role used as a parameter
+
+
+
Changed in version 2.0: The object passed in can now be a role object.
+
+
+- Parameters
+obj (Union[Member
, Role
]) – The object to resolve permissions for. This could be either
+a member or a role. If it’s a role then member overwrites
+are not computed.
+
+- Returns
+The resolved permissions for the member or role.
+
+- Return type
+Permissions
+
+
+
+
+
+-
+property permissions_synced
+Whether or not the permissions for this channel are synced with the
+category it belongs to.
+If there is no category then this is False
.
+
+
+- Type
+bool
+
+
+
+
+
+-
+await set_permissions(target, *, overwrite=see - below, reason=None, **permissions)
+This function is a coroutine.
+Sets the channel specific permission overwrites for a target in the
+channel.
+The target
parameter should either be a Member
or a
+Role
that belongs to guild.
+The overwrite
parameter, if given, must either be None
or
+PermissionOverwrite
. For convenience, you can pass in
+keyword arguments denoting Permissions
attributes. If this is
+done, then you cannot mix the keyword arguments with the overwrite
+parameter.
+If the overwrite
parameter is None
, then the permission
+overwrites are deleted.
+You must have the manage_roles
permission to use this.
+
+
Note
+
This method replaces the old overwrites with the ones given.
+
+Examples
+Setting allow and deny:
+await message.channel.set_permissions(message.author, read_messages=True,
+ send_messages=False)
+
+
+Deleting overwrites
+await channel.set_permissions(member, overwrite=None)
+
+
+Using PermissionOverwrite
+overwrite = discord.PermissionOverwrite()
+overwrite.send_messages = False
+overwrite.read_messages = True
+await channel.set_permissions(member, overwrite=overwrite)
+
+
+
+- Parameters
+
+target (Union[Member
, Role
]) – The member or role to overwrite permissions for.
+overwrite (Optional[PermissionOverwrite
]) – The permissions to allow and deny to the target, or None
to
+delete the overwrite.
+**permissions – A keyword argument list of permissions to set for ease of use.
+Cannot be mixed with overwrite
.
+reason (Optional[str
]) – The reason for doing this action. Shows up on the audit log.
+
+
+- Raises
+
+Forbidden – You do not have permissions to edit channel specific permissions.
+HTTPException – Editing channel specific permissions failed.
+NotFound – The role or member being edited is not part of the guild.
+InvalidArgument – The overwrite parameter invalid or the target type was not
+ Role
or Member
.
+
+
+
+
+
+
+
+
+
+DMChannel
+
+-
+class discord.DMChannel
+Represents a Discord direct message channel.
+
+
+-
+x == y
+Checks if two channels are equal.
+
+
+
+-
+x != y
+Checks if two channels are not equal.
+
+
+
+-
+hash(x)
+Returns the channel’s hash.
+
+
+
+-
+str(x)
+Returns a string representation of the channel
+
+
+
+-
+int(x)
+Returns the channel’s ID.
+
+
+
+
+-
+recipient
+The user you are participating with in the direct message channel.
+If this channel is received through the gateway, the recipient information
+may not be always available.
+
+- Type
+Optional[User
]
+
+
+
+
+
+-
+me
+The user presenting yourself.
+
+- Type
+ClientUser
+
+
+
+
+
+-
+id
+The direct message channel ID.
+
+- Type
+int
+
+
+
+
+
+-
+async for ... in history(*, limit=100, before=None, after=None, around=None, oldest_first=None)
+Returns an AsyncIterator
that enables receiving the destination’s message history.
+You must have read_message_history
permissions to use this.
+Examples
+Usage
+counter = 0
+async for message in channel.history(limit=200):
+ if message.author == client.user:
+ counter += 1
+
+
+Flattening into a list:
+messages = await channel.history(limit=123).flatten()
+# messages is now a list of Message...
+
+
+All parameters are optional.
+
+- Parameters
+
+limit (Optional[int
]) – The number of messages to retrieve.
+If None
, retrieves every message in the channel. Note, however,
+that this would make it a slow operation.
+before (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages before this date or message.
+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 (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages after this date or message.
+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.
+around (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages around this date or message.
+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.
+When using this argument, the maximum limit is 101. Note that if the limit is an
+even number then this will return at most limit + 1 messages.
+oldest_first (Optional[bool
]) – If set to True
, return messages in oldest->newest order. Defaults to True
if
+after
is specified, otherwise False
.
+
+
+- Raises
+-
+
+- Yields
+Message
– The message with the message data parsed.
+
+
+
+
+
+-
+async with typing()
+Returns a context manager that allows you to type for an indefinite period of time.
+This is useful for denoting long computations in your bot.
+
+
Note
+
This is both a regular context manager and an async context manager.
+This means that both with
and async with
work with this.
+
+Example Usage:
+async with channel.typing():
+ # simulate something heavy
+ await asyncio.sleep(10)
+
+await channel.send('done!')
+
+
+
+
+
+-
+property type
+The channel’s Discord type.
+
+- Type
+ChannelType
+
+
+
+
+
+-
+property created_at
+Returns the direct message channel’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+permissions_for(obj=None, /)
+Handles permission resolution for a User
.
+This function is there for compatibility with other channel types.
+Actual direct messages do not really have the concept of permissions.
+This returns all the Text related permissions set to True
except:
+
+
+- Parameters
+obj (User
) – The user to check permissions for. This parameter is ignored
+but kept for compatibility with other permissions_for
methods.
+
+- Returns
+The resolved permissions.
+
+- Return type
+Permissions
+
+
+
+
+
+-
+get_partial_message(message_id, /)
+Creates a PartialMessage
from the message ID.
+This is useful if you want to work with a message and only have its ID without
+doing an unnecessary API call.
+
+
+- Parameters
+message_id (int
) – The message ID to create a partial message for.
+
+- Returns
+The partial message.
+
+- Return type
+PartialMessage
+
+
+
+
+
+-
+await fetch_message(id, /)
+This function is a coroutine.
+Retrieves a single Message
from the destination.
+
+- Parameters
+id (int
) – The message ID to look for.
+
+- Raises
+
+NotFound – The specified message was not found.
+Forbidden – You do not have the permissions required to get a message.
+HTTPException – Retrieving the message failed.
+
+
+- Returns
+The message asked for.
+
+- Return type
+Message
+
+
+
+
+
+-
+await pins()
+This function is a coroutine.
+Retrieves all messages that are currently pinned in the channel.
+
+
Note
+
Due to a limitation with the Discord API, the Message
+objects returned by this method do not contain complete
+Message.reactions
data.
+
+
+- Raises
+HTTPException – Retrieving the pinned messages failed.
+
+- Returns
+The messages that are currently pinned.
+
+- Return type
+List[Message
]
+
+
+
+
+
+-
+await send(content=None, *, tts=None, embed=None, embeds=None, file=None, files=None, stickers=None, delete_after=None, nonce=None, allowed_mentions=None, reference=None, mention_author=None, view=None)
+This function is a coroutine.
+Sends a message to the destination with the content given.
+The content must be a type that can convert to a string through str(content)
.
+If the content is set to None
(the default), then the embed
parameter must
+be provided.
+To upload a single file, the file
parameter should be used with a
+single File
object. To upload multiple files, the files
+parameter should be used with a list
of File
objects.
+Specifying both parameters will lead to an exception.
+To upload a single embed, the embed
parameter should be used with a
+single Embed
object. To upload multiple embeds, the embeds
+parameter should be used with a list
of Embed
objects.
+Specifying both parameters will lead to an exception.
+
+- Parameters
+
+content (Optional[str
]) – The content of the message to send.
+tts (bool
) – Indicates if the message should be sent using text-to-speech.
+embed (Embed
) – The rich embed for the content.
+file (File
) – The file to upload.
+files (List[File
]) – A list of files to upload. Must be a maximum of 10.
+nonce (int
) – The nonce to use for sending this message. If the message was successfully sent,
+then the message will have a nonce with this value.
+delete_after (float
) – If provided, the number of seconds to wait in the background
+before deleting the message we just sent. If the deletion fails,
+then it is silently ignored.
+allowed_mentions (AllowedMentions
) –
Controls the mentions being processed in this message. If this is
+passed, then the object is merged with allowed_mentions
.
+The merging behaviour only overrides attributes that have been explicitly passed
+to the object, otherwise it uses the attributes set in allowed_mentions
.
+If no object is passed at all then the defaults given by allowed_mentions
+are used instead.
+
+
+reference (Union[Message
, MessageReference
, PartialMessage
]) –
A reference to the Message
to which you are replying, this can be created using
+to_reference()
or passed directly as a Message
. You can control
+whether this mentions the author of the referenced message using the replied_user
+attribute of allowed_mentions
or by setting mention_author
.
+
+
+mention_author (Optional[bool
]) –
If set, overrides the replied_user
attribute of allowed_mentions
.
+
+
+view (discord.ui.View
) – A Discord UI View to add to the message.
+embeds (List[Embed
]) –
A list of embeds to upload. Must be a maximum of 10.
+
+
+stickers (Sequence[Union[GuildSticker
, StickerItem
]]) –
A list of stickers to upload. Must be a maximum of 3.
+
+
+
+
+- Raises
+-
+
+- Returns
+The message that was sent.
+
+- Return type
+Message
+
+
+
+
+
+-
+await trigger_typing()
+This function is a coroutine.
+Triggers a typing indicator to the destination.
+Typing indicator will go away after 10 seconds, or after a message is sent.
+
+
+
+
+
+
+GroupChannel
+
+-
+class discord.GroupChannel
+Represents a Discord group channel.
+
+
+-
+x == y
+Checks if two channels are equal.
+
+
+
+-
+x != y
+Checks if two channels are not equal.
+
+
+
+-
+hash(x)
+Returns the channel’s hash.
+
+
+
+-
+str(x)
+Returns a string representation of the channel
+
+
+
+-
+int(x)
+Returns the channel’s ID.
+
+
+
+
+-
+recipients
+The users you are participating with in the group channel.
+
+- Type
+List[User
]
+
+
+
+
+
+-
+me
+The user presenting yourself.
+
+- Type
+ClientUser
+
+
+
+
+
+-
+id
+The group channel ID.
+
+- Type
+int
+
+
+
+
+
+-
+owner
+The user that owns the group channel.
+
+- Type
+Optional[User
]
+
+
+
+
+
+-
+owner_id
+The owner ID that owns the group channel.
+
+
+- Type
+int
+
+
+
+
+
+-
+name
+The group channel’s name if provided.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+async for ... in history(*, limit=100, before=None, after=None, around=None, oldest_first=None)
+Returns an AsyncIterator
that enables receiving the destination’s message history.
+You must have read_message_history
permissions to use this.
+Examples
+Usage
+counter = 0
+async for message in channel.history(limit=200):
+ if message.author == client.user:
+ counter += 1
+
+
+Flattening into a list:
+messages = await channel.history(limit=123).flatten()
+# messages is now a list of Message...
+
+
+All parameters are optional.
+
+- Parameters
+
+limit (Optional[int
]) – The number of messages to retrieve.
+If None
, retrieves every message in the channel. Note, however,
+that this would make it a slow operation.
+before (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages before this date or message.
+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 (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages after this date or message.
+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.
+around (Optional[Union[Snowflake
, datetime.datetime
]]) – Retrieve messages around this date or message.
+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.
+When using this argument, the maximum limit is 101. Note that if the limit is an
+even number then this will return at most limit + 1 messages.
+oldest_first (Optional[bool
]) – If set to True
, return messages in oldest->newest order. Defaults to True
if
+after
is specified, otherwise False
.
+
+
+- Raises
+-
+
+- Yields
+Message
– The message with the message data parsed.
+
+
+
+
+
+-
+async with typing()
+Returns a context manager that allows you to type for an indefinite period of time.
+This is useful for denoting long computations in your bot.
+
+
Note
+
This is both a regular context manager and an async context manager.
+This means that both with
and async with
work with this.
+
+Example Usage:
+async with channel.typing():
+ # simulate something heavy
+ await asyncio.sleep(10)
+
+await channel.send('done!')
+
+
+
+
+
+-
+property type
+The channel’s Discord type.
+
+- Type
+ChannelType
+
+
+
+
+
+-
+property icon
+Returns the channel’s icon asset if available.
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+-
+property created_at
+Returns the channel’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+permissions_for(obj, /)
+Handles permission resolution for a User
.
+This function is there for compatibility with other channel types.
+Actual direct messages do not really have the concept of permissions.
+This returns all the Text related permissions set to True
except:
+
+This also checks the kick_members permission if the user is the owner.
+
+- Parameters
+obj (Snowflake
) – The user to check permissions for.
+
+- Returns
+The resolved permissions for the user.
+
+- Return type
+Permissions
+
+
+
+
+
+-
+await leave()
+This function is a coroutine.
+Leave the group.
+If you are the only one in the group, this deletes it as well.
+
+- Raises
+HTTPException – Leaving the group failed.
+
+
+
+
+
+-
+await fetch_message(id, /)
+This function is a coroutine.
+Retrieves a single Message
from the destination.
+
+- Parameters
+id (int
) – The message ID to look for.
+
+- Raises
+
+NotFound – The specified message was not found.
+Forbidden – You do not have the permissions required to get a message.
+HTTPException – Retrieving the message failed.
+
+
+- Returns
+The message asked for.
+
+- Return type
+Message
+
+
+
+
+
+-
+await pins()
+This function is a coroutine.
+Retrieves all messages that are currently pinned in the channel.
+
+
Note
+
Due to a limitation with the Discord API, the Message
+objects returned by this method do not contain complete
+Message.reactions
data.
+
+
+- Raises
+HTTPException – Retrieving the pinned messages failed.
+
+- Returns
+The messages that are currently pinned.
+
+- Return type
+List[Message
]
+
+
+
+
+
+-
+await send(content=None, *, tts=None, embed=None, embeds=None, file=None, files=None, stickers=None, delete_after=None, nonce=None, allowed_mentions=None, reference=None, mention_author=None, view=None)
+This function is a coroutine.
+Sends a message to the destination with the content given.
+The content must be a type that can convert to a string through str(content)
.
+If the content is set to None
(the default), then the embed
parameter must
+be provided.
+To upload a single file, the file
parameter should be used with a
+single File
object. To upload multiple files, the files
+parameter should be used with a list
of File
objects.
+Specifying both parameters will lead to an exception.
+To upload a single embed, the embed
parameter should be used with a
+single Embed
object. To upload multiple embeds, the embeds
+parameter should be used with a list
of Embed
objects.
+Specifying both parameters will lead to an exception.
+
+- Parameters
+
+content (Optional[str
]) – The content of the message to send.
+tts (bool
) – Indicates if the message should be sent using text-to-speech.
+embed (Embed
) – The rich embed for the content.
+file (File
) – The file to upload.
+files (List[File
]) – A list of files to upload. Must be a maximum of 10.
+nonce (int
) – The nonce to use for sending this message. If the message was successfully sent,
+then the message will have a nonce with this value.
+delete_after (float
) – If provided, the number of seconds to wait in the background
+before deleting the message we just sent. If the deletion fails,
+then it is silently ignored.
+allowed_mentions (AllowedMentions
) –
Controls the mentions being processed in this message. If this is
+passed, then the object is merged with allowed_mentions
.
+The merging behaviour only overrides attributes that have been explicitly passed
+to the object, otherwise it uses the attributes set in allowed_mentions
.
+If no object is passed at all then the defaults given by allowed_mentions
+are used instead.
+
+
+reference (Union[Message
, MessageReference
, PartialMessage
]) –
A reference to the Message
to which you are replying, this can be created using
+to_reference()
or passed directly as a Message
. You can control
+whether this mentions the author of the referenced message using the replied_user
+attribute of allowed_mentions
or by setting mention_author
.
+
+
+mention_author (Optional[bool
]) –
If set, overrides the replied_user
attribute of allowed_mentions
.
+
+
+view (discord.ui.View
) – A Discord UI View to add to the message.
+embeds (List[Embed
]) –
A list of embeds to upload. Must be a maximum of 10.
+
+
+stickers (Sequence[Union[GuildSticker
, StickerItem
]]) –
A list of stickers to upload. Must be a maximum of 3.
+
+
+
+
+- Raises
+-
+
+- Returns
+The message that was sent.
+
+- Return type
+Message
+
+
+
+
+
+-
+await trigger_typing()
+This function is a coroutine.
+Triggers a typing indicator to the destination.
+Typing indicator will go away after 10 seconds, or after a message is sent.
+
+
+
+
+
+
+PartialInviteGuild
+
+-
+class discord.PartialInviteGuild
+Represents a “partial” invite guild.
+This model will be given when the user is not part of the
+guild the Invite
resolves to.
+
+
+-
+x == y
+Checks if two partial guilds are the same.
+
+
+
+-
+x != y
+Checks if two partial guilds are not the same.
+
+
+
+-
+hash(x)
+Return the partial guild’s hash.
+
+
+
+-
+str(x)
+Returns the partial guild’s name.
+
+
+
+
+-
+name
+The partial guild’s name.
+
+- Type
+str
+
+
+
+
+
+-
+id
+The partial guild’s ID.
+
+- Type
+int
+
+
+
+
+
+-
+verification_level
+The partial guild’s verification level.
+
+- Type
+VerificationLevel
+
+
+
+
+
+-
+features
+A list of features the guild has. See Guild.features
for more information.
+
+- Type
+List[str
]
+
+
+
+
+
+-
+description
+The partial guild’s description.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+property created_at
+Returns the guild’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+property icon
+Returns the guild’s icon asset, if available.
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+-
+property banner
+Returns the guild’s banner asset, if available.
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+-
+property splash
+Returns the guild’s invite splash asset, if available.
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+
+
+
+PartialInviteChannel
+
+-
+class discord.PartialInviteChannel
+Represents a “partial” invite channel.
+This model will be given when the user is not part of the
+guild the Invite
resolves to.
+
+
+-
+x == y
+Checks if two partial channels are the same.
+
+
+
+-
+x != y
+Checks if two partial channels are not the same.
+
+
+
+-
+hash(x)
+Return the partial channel’s hash.
+
+
+
+-
+str(x)
+Returns the partial channel’s name.
+
+
+
+
+-
+name
+The partial channel’s name.
+
+- Type
+str
+
+
+
+
+
+-
+id
+The partial channel’s ID.
+
+- Type
+int
+
+
+
+
+
+-
+type
+The partial channel’s type.
+
+- Type
+ChannelType
+
+
+
+
+
+-
+property mention
+The string that allows you to mention the channel.
+
+- Type
+str
+
+
+
+
+
+-
+property created_at
+Returns the channel’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+
+
+
+Invite
+
+-
+class discord.Invite
+Represents a Discord Guild
or abc.GuildChannel
invite.
+Depending on the way this object was created, some of the attributes can
+have a value of None
.
+
+
+-
+x == y
+Checks if two invites are equal.
+
+
+
+-
+x != y
+Checks if two invites are not equal.
+
+
+
+-
+hash(x)
+Returns the invite hash.
+
+
+
+-
+str(x)
+Returns the invite URL.
+
+
+
+The following table illustrates what methods will obtain the attributes:
+If it’s not in the table above then it is available by all methods.
+
+-
+max_age
+How long before the invite expires in seconds.
+A value of 0
indicates that it doesn’t expire.
+
+- Type
+int
+
+
+
+
+
+-
+code
+The URL fragment used for the invite.
+
+- Type
+str
+
+
+
+
+
+-
+guild
+The guild the invite is for. Can be None
if it’s from a group direct message.
+
+- Type
+Optional[Union[Guild
, Object
, PartialInviteGuild
]]
+
+
+
+
+
+-
+revoked
+Indicates if the invite has been revoked.
+
+- Type
+bool
+
+
+
+
+
+-
+created_at
+An aware UTC datetime object denoting the time the invite was created.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+temporary
+Indicates that the invite grants temporary membership.
+If True
, members who joined via this invite will be kicked upon disconnect.
+
+- Type
+bool
+
+
+
+
+
+-
+uses
+How many times the invite has been used.
+
+- Type
+int
+
+
+
+
+
+-
+max_uses
+How many times the invite can be used.
+A value of 0
indicates that it has unlimited uses.
+
+- Type
+int
+
+
+
+
+
+-
+inviter
+The user who created the invite.
+
+- Type
+Optional[User
]
+
+
+
+
+
+-
+approximate_member_count
+The approximate number of members in the guild.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+approximate_presence_count
+The approximate number of members currently active in the guild.
+This includes idle, dnd, online, and invisible members. Offline members are excluded.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+expires_at
+The expiration date of the invite. If the value is None
when received through
+Client.fetch_invite with with_expiration enabled, the invite will never expire.
+
+
+- Type
+Optional[datetime.datetime
]
+
+
+
+
+
+-
+channel
+The channel the invite is for.
+
+- Type
+Union[abc.GuildChannel
, Object
, PartialInviteChannel
]
+
+
+
+
+
+-
+target_type
+The type of target for the voice channel invite.
+
+
+- Type
+InviteTarget
+
+
+
+
+
+-
+target_user
+The user whose stream to display for this invite, if any.
+
+
+- Type
+Optional[User
]
+
+
+
+
+
+-
+target_application
+The embedded application the invite targets, if any.
+
+
+- Type
+Optional[PartialAppInfo
]
+
+
+
+
+
+-
+property id
+Returns the proper code portion of the invite.
+
+- Type
+str
+
+
+
+
+
+-
+property url
+A property that retrieves the invite URL.
+
+- Type
+str
+
+
+
+
+
+-
+await delete(*, reason=None)
+This function is a coroutine.
+Revokes the instant invite.
+You must have the manage_channels
permission to do this.
+
+- Parameters
+reason (Optional[str
]) – The reason for deleting this invite. Shows up on the audit log.
+
+- Raises
+
+Forbidden – You do not have permissions to revoke invites.
+NotFound – The invite is invalid or expired.
+HTTPException – Revoking the invite failed.
+
+
+
+
+
+
+
+
+
+Template
+
+-
+class discord.Template
+Represents a Discord template.
+
+
+-
+code
+The template code.
+
+- Type
+str
+
+
+
+
+
+-
+uses
+How many times the template has been used.
+
+- Type
+int
+
+
+
+
+
+-
+name
+The name of the template.
+
+- Type
+str
+
+
+
+
+
+-
+description
+The description of the template.
+
+- Type
+str
+
+
+
+
+
+-
+creator
+The creator of the template.
+
+- Type
+User
+
+
+
+
+
+-
+created_at
+An aware datetime in UTC representing when the template was created.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+updated_at
+An aware datetime in UTC representing when the template was last updated.
+This is referred to as “last synced” in the official Discord client.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+source_guild
+The source guild.
+
+- Type
+Guild
+
+
+
+
+
+-
+is_dirty
+Whether the template has unsynced changes.
+
+
+- Type
+Optional[bool
]
+
+
+
+
+
+-
+await create_guild(name, region=None, icon=None)
+This function is a coroutine.
+Creates a Guild
using the template.
+Bot accounts in more than 10 guilds are not allowed to create guilds.
+
+- Parameters
+-
+
+- Raises
+-
+
+- Returns
+The guild created. This is not the same guild that is
+added to cache.
+
+- Return type
+Guild
+
+
+
+
+
+-
+await sync()
+This function is a coroutine.
+Sync the template to the guild’s current state.
+You must have the manage_guild
permission in the
+source guild to do this.
+
+
+
Changed in version 2.0: The template is no longer edited in-place, instead it is returned.
+
+
+- Raises
+
+HTTPException – Editing the template failed.
+Forbidden – You don’t have permissions to edit the template.
+NotFound – This template does not exist.
+
+
+- Returns
+The newly edited template.
+
+- Return type
+Template
+
+
+
+
+
+-
+await edit(*, name=..., description=...)
+This function is a coroutine.
+Edit the template metadata.
+You must have the manage_guild
permission in the
+source guild to do this.
+
+
+
Changed in version 2.0: The template is no longer edited in-place, instead it is returned.
+
+
+- Parameters
+-
+
+- Raises
+
+HTTPException – Editing the template failed.
+Forbidden – You don’t have permissions to edit the template.
+NotFound – This template does not exist.
+
+
+- Returns
+The newly edited template.
+
+- Return type
+Template
+
+
+
+
+
+-
+await delete()
+This function is a coroutine.
+Delete the template.
+You must have the manage_guild
permission in the
+source guild to do this.
+
+
+- Raises
+
+HTTPException – Editing the template failed.
+Forbidden – You don’t have permissions to edit the template.
+NotFound – This template does not exist.
+
+
+
+
+
+
+-
+property url
+The template url.
+
+
+- Type
+str
+
+
+
+
+
+
+
+
+
+
+
+StickerPack
+
+-
+class discord.StickerPack
+Represents a sticker pack.
+
+
+
+-
+str(x)
+Returns the name of the sticker pack.
+
+
+
+-
+hash(x)
+Returns the hash of the sticker pack.
+
+
+
+-
+int(x)
+Returns the ID of the sticker pack.
+
+
+
+-
+x == y
+Checks if the sticker pack is equal to another sticker pack.
+
+
+
+-
+x != y
+Checks if the sticker pack is not equal to another sticker pack.
+
+
+
+
+-
+name
+The name of the sticker pack.
+
+- Type
+str
+
+
+
+
+
+-
+description
+The description of the sticker pack.
+
+- Type
+str
+
+
+
+
+
+-
+id
+The id of the sticker pack.
+
+- Type
+int
+
+
+
+
+
+-
+stickers
+The stickers of this sticker pack.
+
+- Type
+List[StandardSticker
]
+
+
+
+
+
+-
+sku_id
+The SKU ID of the sticker pack.
+
+- Type
+int
+
+
+
+
+
+-
+cover_sticker_id
+The ID of the sticker used for the cover of the sticker pack.
+
+- Type
+int
+
+
+
+
+
+-
+cover_sticker
+The sticker used for the cover of the sticker pack.
+
+- Type
+StandardSticker
+
+
+
+
+
+-
+property banner
+The banner asset of the sticker pack.
+
+- Type
+Asset
+
+
+
+
+
+
+
+
+StickerItem
+
+-
+class discord.StickerItem
+Represents a sticker item.
+
+
+
+-
+str(x)
+Returns the name of the sticker item.
+
+
+
+-
+x == y
+Checks if the sticker item is equal to another sticker item.
+
+
+
+-
+x != y
+Checks if the sticker item is not equal to another sticker item.
+
+
+
+
+-
+name
+The sticker’s name.
+
+- Type
+str
+
+
+
+
+
+-
+id
+The id of the sticker.
+
+- Type
+int
+
+
+
+
+
+-
+format
+The format for the sticker’s image.
+
+- Type
+StickerFormatType
+
+
+
+
+
+-
+url
+The URL for the sticker’s image.
+
+- Type
+str
+
+
+
+
+
+-
+await fetch()
+This function is a coroutine.
+Attempts to retrieve the full sticker data of the sticker item.
+
+- Raises
+HTTPException – Retrieving the sticker failed.
+
+- Returns
+The retrieved sticker.
+
+- Return type
+Union[StandardSticker
, GuildSticker
]
+
+
+
+
+
+
+
+
+Sticker
+
+-
+class discord.Sticker
+Represents a sticker.
+
+
+
+-
+str(x)
+Returns the name of the sticker.
+
+
+
+-
+x == y
+Checks if the sticker is equal to another sticker.
+
+
+
+-
+x != y
+Checks if the sticker is not equal to another sticker.
+
+
+
+
+-
+name
+The sticker’s name.
+
+- Type
+str
+
+
+
+
+
+-
+id
+The id of the sticker.
+
+- Type
+int
+
+
+
+
+
+-
+description
+The description of the sticker.
+
+- Type
+str
+
+
+
+
+
+-
+pack_id
+The id of the sticker’s pack.
+
+- Type
+int
+
+
+
+
+
+-
+format
+The format for the sticker’s image.
+
+- Type
+StickerFormatType
+
+
+
+
+
+-
+url
+The URL for the sticker’s image.
+
+- Type
+str
+
+
+
+
+
+-
+property created_at
+Returns the sticker’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+
+
+
+StandardSticker
+
+-
+class discord.StandardSticker
+Represents a sticker that is found in a standard sticker pack.
+
+
+
+-
+str(x)
+Returns the name of the sticker.
+
+
+
+-
+x == y
+Checks if the sticker is equal to another sticker.
+
+
+
+-
+x != y
+Checks if the sticker is not equal to another sticker.
+
+
+
+
+-
+name
+The sticker’s name.
+
+- Type
+str
+
+
+
+
+
+-
+id
+The id of the sticker.
+
+- Type
+int
+
+
+
+
+
+-
+description
+The description of the sticker.
+
+- Type
+str
+
+
+
+
+
+-
+pack_id
+The id of the sticker’s pack.
+
+- Type
+int
+
+
+
+
+
+-
+format
+The format for the sticker’s image.
+
+- Type
+StickerFormatType
+
+
+
+
+
+-
+tags
+A list of tags for the sticker.
+
+- Type
+List[str
]
+
+
+
+
+
+-
+sort_value
+The sticker’s sort order within its pack.
+
+- Type
+int
+
+
+
+
+
+-
+await pack()
+This function is a coroutine.
+Retrieves the sticker pack that this sticker belongs to.
+
+- Raises
+-
+
+- Returns
+The retrieved sticker pack.
+
+- Return type
+StickerPack
+
+
+
+
+
+
+
+
+GuildSticker
+
+-
+class discord.GuildSticker
+Represents a sticker that belongs to a guild.
+
+
+
+-
+str(x)
+Returns the name of the sticker.
+
+
+
+-
+x == y
+Checks if the sticker is equal to another sticker.
+
+
+
+-
+x != y
+Checks if the sticker is not equal to another sticker.
+
+
+
+
+-
+name
+The sticker’s name.
+
+- Type
+str
+
+
+
+
+
+-
+id
+The id of the sticker.
+
+- Type
+int
+
+
+
+
+
+-
+description
+The description of the sticker.
+
+- Type
+str
+
+
+
+
+
+-
+format
+The format for the sticker’s image.
+
+- Type
+StickerFormatType
+
+
+
+
+
+-
+available
+Whether this sticker is available for use.
+
+- Type
+bool
+
+
+
+
+
+-
+guild_id
+The ID of the guild that this sticker is from.
+
+- Type
+int
+
+
+
+
+
+-
+user
+The user that created this sticker. This can only be retrieved using Guild.fetch_sticker()
and
+having the manage_emojis_and_stickers
permission.
+
+- Type
+Optional[User
]
+
+
+
+
+
+-
+emoji
+The name of a unicode emoji that represents this sticker.
+
+- Type
+str
+
+
+
+
+
+-
+guild
+The guild that this sticker is from.
+Could be None
if the bot is not in the guild.
+
+
+- Type
+Optional[Guild
]
+
+
+
+
+
+-
+await edit(*, name=..., description=..., emoji=..., reason=None)
+This function is a coroutine.
+Edits a GuildSticker
for the guild.
+
+- Parameters
+
+name (str
) – The sticker’s new name. Must be at least 2 characters.
+description (Optional[str
]) – The sticker’s new description. Can be None
.
+emoji (str
) – The name of a unicode emoji that represents the sticker’s expression.
+reason (str
) – The reason for editing this sticker. Shows up on the audit log.
+
+
+- Raises
+-
+
+- Returns
+The newly modified sticker.
+
+- Return type
+GuildSticker
+
+
+
+
+
+-
+await delete(*, reason=None)
+This function is a coroutine.
+Deletes the custom Sticker
from the guild.
+You must have manage_emojis_and_stickers
permission to
+do this.
+
+- Parameters
+reason (Optional[str
]) – The reason for deleting this sticker. Shows up on the audit log.
+
+- Raises
+-
+
+
+
+
+
+
+
+
+RawTypingEvent
+
+-
+class discord.RawTypingEvent
+Represents the payload for a on_raw_typing()
event.
+
+
+-
+channel_id
+The channel ID where the typing originated from.
+
+- Type
+int
+
+
+
+
+
+-
+user_id
+The ID of the user that started typing.
+
+- Type
+int
+
+
+
+
+
+-
+when
+When the typing started as an aware datetime in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+guild_id
+The guild ID where the typing originated from, if applicable.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+member
+The member who started typing. Only available if the member started typing in a guild.
+
+- Type
+Optional[Member
]
+
+
+
+
+
+
+
+
+RawMessageDeleteEvent
+
+-
+class discord.RawMessageDeleteEvent
+Represents the event payload for a on_raw_message_delete()
event.
+
+-
+channel_id
+The channel ID where the deletion took place.
+
+- Type
+int
+
+
+
+
+
+-
+guild_id
+The guild ID where the deletion took place, if applicable.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+message_id
+The message ID that got deleted.
+
+- Type
+int
+
+
+
+
+
+-
+cached_message
+The cached message, if found in the internal message cache.
+
+- Type
+Optional[Message
]
+
+
+
+
+
+
+
+
+RawBulkMessageDeleteEvent
+
+-
+class discord.RawBulkMessageDeleteEvent
+Represents the event payload for a on_raw_bulk_message_delete()
event.
+
+-
+message_ids
+A set
of the message IDs that were deleted.
+
+- Type
+Set[int
]
+
+
+
+
+
+-
+channel_id
+The channel ID where the message got deleted.
+
+- Type
+int
+
+
+
+
+
+-
+guild_id
+The guild ID where the message got deleted, if applicable.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+cached_messages
+The cached messages, if found in the internal message cache.
+
+- Type
+List[Message
]
+
+
+
+
+
+
+
+
+RawMessageUpdateEvent
+
+-
+class discord.RawMessageUpdateEvent
+Represents the payload for a on_raw_message_edit()
event.
+
+-
+message_id
+The message ID that got updated.
+
+- Type
+int
+
+
+
+
+
+-
+channel_id
+The channel ID where the update took place.
+
+
+- Type
+int
+
+
+
+
+
+-
+guild_id
+The guild ID where the message got updated, if applicable.
+
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+data
+The raw data given by the gateway
+
+- Type
+dict
+
+
+
+
+
+-
+cached_message
+The cached message, if found in the internal message cache. Represents the message before
+it is modified by the data in RawMessageUpdateEvent.data
.
+
+- Type
+Optional[Message
]
+
+
+
+
+
+
+
+
+RawReactionActionEvent
+
+-
+class discord.RawReactionActionEvent
+Represents the payload for a on_raw_reaction_add()
or
+on_raw_reaction_remove()
event.
+
+-
+message_id
+The message ID that got or lost a reaction.
+
+- Type
+int
+
+
+
+
+
+-
+user_id
+The user ID who added the reaction or whose reaction was removed.
+
+- Type
+int
+
+
+
+
+
+-
+channel_id
+The channel ID where the reaction got added or removed.
+
+- Type
+int
+
+
+
+
+
+-
+guild_id
+The guild ID where the reaction got added or removed, if applicable.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+emoji
+The custom or unicode emoji being used.
+
+- Type
+PartialEmoji
+
+
+
+
+
+-
+member
+The member who added the reaction. Only available if event_type is REACTION_ADD and the reaction is inside a guild.
+
+
+- Type
+Optional[Member
]
+
+
+
+
+
+-
+event_type
+The event type that triggered this action. Can be
+REACTION_ADD
for reaction addition or
+REACTION_REMOVE
for reaction removal.
+
+
+- Type
+str
+
+
+
+
+
+
+
+
+RawReactionClearEvent
+
+-
+class discord.RawReactionClearEvent
+Represents the payload for a on_raw_reaction_clear()
event.
+
+-
+message_id
+The message ID that got its reactions cleared.
+
+- Type
+int
+
+
+
+
+
+-
+channel_id
+The channel ID where the reactions got cleared.
+
+- Type
+int
+
+
+
+
+
+-
+guild_id
+The guild ID where the reactions got cleared.
+
+- Type
+Optional[int
]
+
+
+
+
+
+
+
+
+RawReactionClearEmojiEvent
+
+-
+class discord.RawReactionClearEmojiEvent
+Represents the payload for a on_raw_reaction_clear_emoji()
event.
+
+
+-
+message_id
+The message ID that got its reactions cleared.
+
+- Type
+int
+
+
+
+
+
+-
+channel_id
+The channel ID where the reactions got cleared.
+
+- Type
+int
+
+
+
+
+
+-
+guild_id
+The guild ID where the reactions got cleared.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+emoji
+The custom or unicode emoji being removed.
+
+- Type
+PartialEmoji
+
+
+
+
+
+
+
+
+RawIntegrationDeleteEvent
+
+-
+class discord.RawIntegrationDeleteEvent
+Represents the payload for a on_raw_integration_delete()
event.
+
+
+-
+integration_id
+The ID of the integration that got deleted.
+
+- Type
+int
+
+
+
+
+
+-
+application_id
+The ID of the bot/OAuth2 application for this deleted integration.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+guild_id
+The guild ID where the integration got deleted.
+
+- Type
+int
+
+
+
+
+
+
+
+
+PartialWebhookGuild
+
+-
+class discord.PartialWebhookGuild
+Represents a partial guild for webhooks.
+These are typically given for channel follower webhooks.
+
+
+-
+id
+The partial guild’s ID.
+
+- Type
+int
+
+
+
+
+
+-
+name
+The partial guild’s name.
+
+- Type
+str
+
+
+
+
+
+-
+property icon
+Returns the guild’s icon asset, if available.
+
+- Type
+Optional[Asset
]
+
+
+
+
+
+
+
+
+PartialWebhookChannel
+
+-
+class discord.PartialWebhookChannel
+Represents a partial channel for webhooks.
+These are typically given for channel follower webhooks.
+
+
+-
+id
+The partial channel’s ID.
+
+- Type
+int
+
+
+
+
+
+-
+name
+The partial channel’s name.
+
+- Type
+str
+
+
+
+
+
+
+
+
+
+Data Classes
+Some classes are just there to be data containers, this lists them.
+Unlike models you are allowed to create
+most of these yourself, even if they can also be used to hold attributes.
+Nearly all classes here have __slots__ defined which means that it is
+impossible to have dynamic attributes to the data classes.
+The only exception to this rule is Object
, which is made with
+dynamic attributes in mind.
+
+Object
+
+-
+class discord.Object(id)
+Represents a generic Discord object.
+The purpose of this class is to allow you to create ‘miniature’
+versions of data classes if you want to pass in just an ID. Most functions
+that take in a specific data class with an ID can also take in this class
+as a substitute instead. Note that even though this is the case, not all
+objects (if any) actually inherit from this class.
+There are also some cases where some websocket events are received
+in strange order and when such events happened you would
+receive this class rather than the actual data class. These cases are
+extremely rare.
+
+
+-
+x == y
+Checks if two objects are equal.
+
+
+
+-
+x != y
+Checks if two objects are not equal.
+
+
+
+-
+hash(x)
+Returns the object’s hash.
+
+
+
+-
+int(x)
+Returns the object’s ID.
+
+
+
+
+-
+id
+The ID of the object.
+
+- Type
+int
+
+
+
+
+
+-
+property created_at
+Returns the snowflake’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+
+
+
+Embed
+
+-
+class discord.Embed(*, colour=Embed.Empty, color=Embed.Empty, title=Embed.Empty, type='rich', url=Embed.Empty, description=Embed.Empty, timestamp=None)
+Represents a Discord embed.
+
+
+-
+len(x)
+Returns the total size of the embed.
+Useful for checking if it’s within the 6000 character limit.
+
+
+
+-
+bool(b)
+Returns whether the embed has any data set.
+
+
+
+
+Certain properties return an EmbedProxy
, a type
+that acts similar to a regular dict
except using dotted access,
+e.g. embed.author.icon_url
. If the attribute
+is invalid or empty, then a special sentinel value is returned,
+Embed.Empty
.
+For ease of use, all parameters that expect a str
are implicitly
+casted to str
for you.
+
+-
+title
+The title of the embed.
+This can be set during initialisation.
+
+- Type
+str
+
+
+
+
+
+-
+type
+The type of embed. Usually “rich”.
+This can be set during initialisation.
+Possible strings for embed types can be found on discord’s
+api docs
+
+- Type
+str
+
+
+
+
+
+-
+description
+The description of the embed.
+This can be set during initialisation.
+
+- Type
+str
+
+
+
+
+
+-
+url
+The URL of the embed.
+This can be set during initialisation.
+
+- Type
+str
+
+
+
+
+
+-
+timestamp
+The timestamp of the embed content. This is an aware datetime.
+If a naive datetime is passed, it is converted to an aware
+datetime with the local timezone.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+colour
+The colour code of the embed. Aliased to color
as well.
+This can be set during initialisation.
+
+- Type
+Union[Colour
, int
]
+
+
+
+
+
+-
+Empty
+A special sentinel value used by EmbedProxy
and this class
+to denote that the value or attribute is empty.
+
+- Type
+Final
+
+
+
+
+
+-
+classmethod from_dict(data)
+Converts a dict
to a Embed
provided it is in the
+format that Discord expects it to be in.
+You can find out about this format in the official Discord documentation.
+
+- Parameters
+data (dict
) – The dictionary to convert into an embed.
+
+
+
+
+
+-
+copy()
+Returns a shallow copy of the embed.
+
+
+
+
+Returns an EmbedProxy
denoting the footer contents.
+See set_footer()
for possible values you can access.
+If the attribute has no value then Empty
is returned.
+
+
+
+
+Sets the footer for the embed content.
+This function returns the class instance to allow for fluent-style
+chaining.
+
+- Parameters
+-
+
+
+
+
+
+
+Clears embed’s footer information.
+This function returns the class instance to allow for fluent-style
+chaining.
+
+
+
+
+-
+property image
+Returns an EmbedProxy
denoting the image contents.
+Possible attributes you can access are:
+
+url
+proxy_url
+width
+height
+
+If the attribute has no value then Empty
is returned.
+
+
+
+-
+set_image(*, url)
+Sets the image for the embed content.
+This function returns the class instance to allow for fluent-style
+chaining.
+
+
Changed in version 1.4: Passing Empty
removes the image.
+
+
+- Parameters
+url (str
) – The source URL for the image. Only HTTP(S) is supported.
+
+
+
+
+
+-
+property thumbnail
+Returns an EmbedProxy
denoting the thumbnail contents.
+Possible attributes you can access are:
+
+url
+proxy_url
+width
+height
+
+If the attribute has no value then Empty
is returned.
+
+
+
+-
+set_thumbnail(*, url)
+Sets the thumbnail for the embed content.
+This function returns the class instance to allow for fluent-style
+chaining.
+
+
Changed in version 1.4: Passing Empty
removes the thumbnail.
+
+
+- Parameters
+url (str
) – The source URL for the thumbnail. Only HTTP(S) is supported.
+
+
+
+
+
+-
+property video
+Returns an EmbedProxy
denoting the video contents.
+Possible attributes include:
+
+If the attribute has no value then Empty
is returned.
+
+
+
+-
+property provider
+Returns an EmbedProxy
denoting the provider contents.
+The only attributes that might be accessed are name
and url
.
+If the attribute has no value then Empty
is returned.
+
+
+
+-
+property author
+Returns an EmbedProxy
denoting the author contents.
+See set_author()
for possible values you can access.
+If the attribute has no value then Empty
is returned.
+
+
+
+-
+set_author(*, name, url=Embed.Empty, icon_url=Embed.Empty)
+Sets the author for the embed content.
+This function returns the class instance to allow for fluent-style
+chaining.
+
+- Parameters
+
+name (str
) – The name of the author.
+url (str
) – The URL for the author.
+icon_url (str
) – The URL of the author icon. Only HTTP(S) is supported.
+
+
+
+
+
+
+-
+remove_author()
+Clears embed’s author information.
+This function returns the class instance to allow for fluent-style
+chaining.
+
+
+
+
+-
+property fields
+Returns a list
of EmbedProxy
denoting the field contents.
+See add_field()
for possible values you can access.
+If the attribute has no value then Empty
is returned.
+
+- Type
+List[Union[EmbedProxy
, Empty
]]
+
+
+
+
+
+-
+add_field(*, name, value, inline=True)
+Adds a field to the embed object.
+This function returns the class instance to allow for fluent-style
+chaining.
+
+- Parameters
+
+name (str
) – The name of the field.
+value (str
) – The value of the field.
+inline (bool
) – Whether the field should be displayed inline.
+
+
+
+
+
+
+-
+insert_field_at(index, *, name, value, inline=True)
+Inserts a field before a specified index to the embed.
+This function returns the class instance to allow for fluent-style
+chaining.
+
+
+- Parameters
+
+index (int
) – The index of where to insert the field.
+name (str
) – The name of the field.
+value (str
) – The value of the field.
+inline (bool
) – Whether the field should be displayed inline.
+
+
+
+
+
+
+-
+clear_fields()
+Removes all fields from this embed.
+
+
+
+-
+remove_field(index)
+Removes a field at a specified index.
+If the index is invalid or out of bounds then the error is
+silently swallowed.
+
+
Note
+
When deleting a field by index, the index of the other fields
+shift to fill the gap just like a regular list.
+
+
+- Parameters
+index (int
) – The index of the field to remove.
+
+
+
+
+
+-
+set_field_at(index, *, name, value, inline=True)
+Modifies a field to the embed object.
+The index must point to a valid pre-existing field.
+This function returns the class instance to allow for fluent-style
+chaining.
+
+- Parameters
+
+index (int
) – The index of the field to modify.
+name (str
) – The name of the field.
+value (str
) – The value of the field.
+inline (bool
) – Whether the field should be displayed inline.
+
+
+- Raises
+IndexError – An invalid index was provided.
+
+
+
+
+
+-
+to_dict()
+Converts this embed object into a dict.
+
+
+
+
+
+
+AllowedMentions
+
+-
+class discord.AllowedMentions(*, everyone=True, users=True, roles=True, replied_user=True)
+A class that represents what mentions are allowed in a message.
+This class can be set during Client
initialisation to apply
+to every message sent. It can also be applied on a per message basis
+via abc.Messageable.send()
for more fine-grained control.
+
+-
+everyone
+Whether to allow everyone and here mentions. Defaults to True
.
+
+- Type
+bool
+
+
+
+
+
+-
+users
+Controls the users being mentioned. If True
(the default) then
+users are mentioned based on the message content. If False
then
+users are not mentioned at all. If a list of abc.Snowflake
+is given then only the users provided will be mentioned, provided those
+users are in the message content.
+
+- Type
+Union[bool
, List[abc.Snowflake
]]
+
+
+
+
+
+-
+roles
+Controls the roles being mentioned. If True
(the default) then
+roles are mentioned based on the message content. If False
then
+roles are not mentioned at all. If a list of abc.Snowflake
+is given then only the roles provided will be mentioned, provided those
+roles are in the message content.
+
+- Type
+Union[bool
, List[abc.Snowflake
]]
+
+
+
+
+
+-
+replied_user
+Whether to mention the author of the message being replied to. Defaults
+to True
.
+
+
+- Type
+bool
+
+
+
+
+
+-
+classmethod all()
+A factory method that returns a AllowedMentions
with all fields explicitly set to True
+
+
+
+
+-
+classmethod none()
+A factory method that returns a AllowedMentions
with all fields set to False
+
+
+
+
+
+
+
+MessageReference
+
+-
+class discord.MessageReference(*, message_id, channel_id, guild_id=None, fail_if_not_exists=True)
+Represents a reference to a Message
.
+
+
+
Changed in version 1.6: This class can now be constructed by users.
+
+
+-
+message_id
+The id of the message referenced.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+channel_id
+The channel id of the message referenced.
+
+- Type
+int
+
+
+
+
+
+-
+guild_id
+The guild id of the message referenced.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+fail_if_not_exists
+Whether replying to the referenced message should raise HTTPException
+if the message no longer exists or Discord could not fetch the message.
+
+
+- Type
+bool
+
+
+
+
+
+-
+resolved
+The message that this reference resolved to. If this is None
+then the original message was not fetched either due to the Discord API
+not attempting to resolve it or it not being available at the time of creation.
+If the message was resolved at a prior point but has since been deleted then
+this will be of type DeletedReferencedMessage
.
+Currently, this is mainly the replied to message when a user replies to a message.
+
+
+- Type
+Optional[Union[Message
, DeletedReferencedMessage
]]
+
+
+
+
+
+-
+classmethod from_message(message, *, fail_if_not_exists=True)
+Creates a MessageReference
from an existing Message
.
+
+
+- Parameters
+
+message (Message
) – The message to be converted into a reference.
+fail_if_not_exists (bool
) –
Whether replying to the referenced message should raise HTTPException
+if the message no longer exists or Discord could not fetch the message.
+
+
+
+
+- Returns
+A reference to the message.
+
+- Return type
+MessageReference
+
+
+
+
+
+-
+property cached_message
+The cached message, if found in the internal message cache.
+
+- Type
+Optional[Message
]
+
+
+
+
+
+-
+property jump_url
+Returns a URL that allows the client to jump to the referenced message.
+
+
+- Type
+str
+
+
+
+
+
+
+
+
+PartialMessage
+
+-
+class discord.PartialMessage(*, channel, id)
+Represents a partial message to aid with working messages when only
+a message and channel ID are present.
+There are two ways to construct this class. The first one is through
+the constructor itself, and the second is via the following:
+
+Note that this class is trimmed down and has no rich attributes.
+
+
+
+-
+x == y
+Checks if two partial messages are equal.
+
+
+
+-
+x != y
+Checks if two partial messages are not equal.
+
+
+
+-
+hash(x)
+Returns the partial message’s hash.
+
+
+
+-
+int(x)
+Returns the partial message’s ID.
+
+
+
+
+-
+channel
+The channel associated with this partial message.
+
+- Type
+Union[TextChannel
, Thread
, DMChannel
]
+
+
+
+
+
+-
+id
+The message ID.
+
+- Type
+int
+
+
+
+
+
+-
+property jump_url
+Returns a URL that allows the client to jump to this message.
+
+- Type
+str
+
+
+
+
+
+-
+await delete(*, delay=None, silent=False)
+This function is a coroutine.
+Deletes the message.
+Your own messages could be deleted without any proper permissions. However to
+delete other people’s messages, you need the manage_messages
+permission.
+
+
Changed in version 1.1: Added the new delay
keyword-only parameter.
+
+
+
Changed in version 2.0: Added the new silent
keyword-only parameter.
+
+
+- Parameters
+
+delay (Optional[float
]) – If provided, the number of seconds to wait in the background
+before deleting the message. If the deletion fails then it is silently ignored.
+silent (bool
) – If silent is set to True
, the error will not be raised, it will be ignored.
+This defaults to False
+
+
+- Raises
+
+Forbidden – You do not have proper permissions to delete the message.
+NotFound – The message was deleted already
+HTTPException – Deleting the message failed.
+
+
+
+
+
+
+-
+await publish()
+This function is a coroutine.
+Publishes this message to your announcement channel.
+You must have the send_messages
permission to do this.
+If the message is not your own then the manage_messages
+permission is also needed.
+
+- Raises
+-
+
+
+
+
+
+-
+await pin(*, reason=None)
+This function is a coroutine.
+Pins the message.
+You must have the manage_messages
permission to do
+this in a non-private channel context.
+
+- Parameters
+reason (Optional[str
]) –
The reason for pinning the message. Shows up on the audit log.
+
+
+
+- Raises
+
+Forbidden – You do not have permissions to pin the message.
+NotFound – The message or channel was not found or deleted.
+HTTPException – Pinning the message failed, probably due to the channel
+ having more than 50 pinned messages.
+
+
+
+
+
+
+-
+await unpin(*, reason=None)
+This function is a coroutine.
+Unpins the message.
+You must have the manage_messages
permission to do
+this in a non-private channel context.
+
+- Parameters
+reason (Optional[str
]) –
The reason for unpinning the message. Shows up on the audit log.
+
+
+
+- Raises
+
+Forbidden – You do not have permissions to unpin the message.
+NotFound – The message or channel was not found or deleted.
+HTTPException – Unpinning the message failed.
+
+
+
+
+
+
+-
+await add_reaction(emoji)
+This function is a coroutine.
+Add a reaction to the message.
+The emoji may be a unicode emoji or a custom guild Emoji
.
+You must have the read_message_history
permission
+to use this. If nobody else has reacted to the message using this
+emoji, the add_reactions
permission is required.
+
+- Parameters
+emoji (Union[Emoji
, Reaction
, PartialEmoji
, str
]) – The emoji to react with.
+
+- Raises
+
+HTTPException – Adding the reaction failed.
+Forbidden – You do not have the proper permissions to react to the message.
+NotFound – The emoji you specified was not found.
+InvalidArgument – The emoji parameter is invalid.
+
+
+
+
+
+
+-
+await remove_reaction(emoji, member)
+This function is a coroutine.
+Remove a reaction by the member from the message.
+The emoji may be a unicode emoji or a custom guild Emoji
.
+If the reaction is not your own (i.e. member
parameter is not you) then
+the manage_messages
permission is needed.
+The member
parameter must represent a member and meet
+the abc.Snowflake
abc.
+
+- Parameters
+-
+
+- Raises
+
+HTTPException – Removing the reaction failed.
+Forbidden – You do not have the proper permissions to remove the reaction.
+NotFound – The member or emoji you specified was not found.
+InvalidArgument – The emoji parameter is invalid.
+
+
+
+
+
+
+-
+await clear_reaction(emoji)
+This function is a coroutine.
+Clears a specific reaction from the message.
+The emoji may be a unicode emoji or a custom guild Emoji
.
+You need the manage_messages
permission to use this.
+
+
+- Parameters
+emoji (Union[Emoji
, Reaction
, PartialEmoji
, str
]) – The emoji to clear.
+
+- Raises
+
+HTTPException – Clearing the reaction failed.
+Forbidden – You do not have the proper permissions to clear the reaction.
+NotFound – The emoji you specified was not found.
+InvalidArgument – The emoji parameter is invalid.
+
+
+
+
+
+
+-
+await clear_reactions()
+This function is a coroutine.
+Removes all the reactions from the message.
+You need the manage_messages
permission to use this.
+
+- Raises
+-
+
+
+
+
+
+-
+await reply(content=None, **kwargs)
+This function is a coroutine.
+A shortcut method to abc.Messageable.send()
to reply to the
+Message
.
+
+
+- Raises
+
+HTTPException – Sending the message failed.
+Forbidden – You do not have the proper permissions to send the message.
+InvalidArgument – The files
list is not of the appropriate size or
+ you specified both file
and files
.
+
+
+- Returns
+The message that was sent.
+
+- Return type
+Message
+
+
+
+
+
+-
+to_reference(*, fail_if_not_exists=True)
+Creates a MessageReference
from the current message.
+
+
+- Parameters
+fail_if_not_exists (bool
) –
Whether replying using the message reference should raise HTTPException
+if the message no longer exists or Discord could not fetch the message.
+
+
+
+- Returns
+The reference to this message.
+
+- Return type
+MessageReference
+
+
+
+
+
+-
+property created_at
+The partial message’s creation time in UTC.
+
+- Type
+datetime.datetime
+
+
+
+
+
+-
+guild
+The guild that the partial message belongs to, if applicable.
+
+- Type
+Optional[Guild
]
+
+
+
+
+
+-
+await fetch()
+This function is a coroutine.
+Fetches the partial message to a full Message
.
+
+- Raises
+
+NotFound – The message was not found.
+Forbidden – You do not have the permissions required to get a message.
+HTTPException – Retrieving the message failed.
+
+
+- Returns
+The full message.
+
+- Return type
+Message
+
+
+
+
+
+-
+await edit(**fields)
+This function is a coroutine.
+Edits the message.
+The content must be able to be transformed into a string via str(content)
.
+
+
Changed in version 1.7: discord.Message
is returned instead of None
if an edit took place.
+
+
+- Parameters
+
+content (Optional[str
]) – The new content to replace the message with.
+Could be None
to remove the content.
+embed (Optional[Embed
]) – The new embed to replace the original with.
+Could be None
to remove the embed.
+suppress (bool
) – Whether to suppress embeds for the message. This removes
+all the embeds if set to True
. If set to False
+this brings the embeds back if they were suppressed.
+Using this parameter requires manage_messages
.
+delete_after (Optional[float
]) – If provided, the number of seconds to wait in the background
+before deleting the message we just edited. If the deletion fails,
+then it is silently ignored.
+allowed_mentions (Optional[AllowedMentions
]) – Controls the mentions being processed in this message. If this is
+passed, then the object is merged with allowed_mentions
.
+The merging behaviour only overrides attributes that have been explicitly passed
+to the object, otherwise it uses the attributes set in allowed_mentions
.
+If no object is passed at all then the defaults given by allowed_mentions
+are used instead.
+view (Optional[View
]) –
The updated view to update this message with. If None
is passed then
+the view is removed.
+
+
+
+
+- Raises
+
+NotFound – The message was not found.
+HTTPException – Editing the message failed.
+Forbidden – Tried to suppress a message without permissions or
+ edited a message’s content or embed that isn’t yours.
+
+
+- Returns
+The message that was edited.
+
+- Return type
+Optional[Message
]
+
+
+
+
+
+
+
+
+SelectOption
+
+-
+class discord.SelectOption(*, label, value=..., description=None, emoji=None, default=False)
+Represents a select menu’s option.
+These can be created by users.
+
+
+-
+label
+The label of the option. This is displayed to users.
+Can only be up to 100 characters.
+
+- Type
+str
+
+
+
+
+
+-
+value
+The value of the option. This is not displayed to users.
+If not provided when constructed then it defaults to the
+label. Can only be up to 100 characters.
+
+- Type
+str
+
+
+
+
+
+-
+description
+An additional description of the option, if any.
+Can only be up to 100 characters.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+emoji
+The emoji of the option, if available.
+
+- Type
+Optional[Union[str
, Emoji
, PartialEmoji
]]
+
+
+
+
+
+-
+default
+Whether this option is selected by default.
+
+- Type
+bool
+
+
+
+
+
+
+
+
+Intents
+
+-
+class discord.Intents(**kwargs)
+Wraps up a Discord gateway intent flag.
+Similar to Permissions
, the properties provided are two way.
+You can set and retrieve individual bits using the properties as if they
+were regular bools.
+To construct an object you can pass keyword arguments denoting the flags
+to enable or disable.
+This is used to disable certain gateway features that are unnecessary to
+run your bot. To make use of this, it is passed to the intents
keyword
+argument of Client
.
+
+
+
+-
+x == y
+Checks if two flags are equal.
+
+
+
+-
+x != y
+Checks if two flags are not equal.
+
+
+
+-
+hash(x)
+Return the flag’s hash.
+
+
+
+-
+iter(x)
+Returns an iterator of (name, value)
pairs. This allows it
+to be, for example, constructed as a dict or a list of pairs.
+
+
+
+
+-
+value
+The raw value. You should query flags via the properties
+rather than using this raw value.
+
+- Type
+int
+
+
+
+
+
+-
+classmethod all()
+A factory method that creates a Intents
with everything enabled.
+
+
+
+-
+classmethod none()
+A factory method that creates a Intents
with everything disabled.
+
+
+
+-
+guilds
+Whether guild related events are enabled.
+This corresponds to the following events:
+
+This also corresponds to the following attributes and classes in terms of cache:
+
+It is highly advisable to leave this intent enabled for your bot to function.
+
+- Type
+bool
+
+
+
+
+
+-
+members
+Whether guild member related events are enabled.
+This corresponds to the following events:
+
+This also corresponds to the following attributes and classes in terms of cache:
+
+For more information go to the member intent documentation.
+
+
Note
+
Currently, this requires opting in explicitly via the developer portal as well.
+Bots in over 100 guilds will need to apply to Discord for verification.
+
+
+- Type
+bool
+
+
+
+
+
+-
+bans
+Whether guild ban related events are enabled.
+This corresponds to the following events:
+
+This does not correspond to any attributes or classes in the library in terms of cache.
+
+- Type
+bool
+
+
+
+
+
+-
+emojis
+Alias of emojis_and_stickers
.
+
+
Changed in version 2.0: Changed to an alias.
+
+
+- Type
+bool
+
+
+
+
+
+-
+emojis_and_stickers
+Whether guild emoji and sticker related events are enabled.
+
+This corresponds to the following events:
+
+This also corresponds to the following attributes and classes in terms of cache:
+
+
+- Type
+bool
+
+
+
+
+
+-
+integrations
+Whether guild integration related events are enabled.
+This corresponds to the following events:
+
+This does not correspond to any attributes or classes in the library in terms of cache.
+
+- Type
+bool
+
+
+
+
+
+-
+webhooks
+Whether guild webhook related events are enabled.
+This corresponds to the following events:
+
+This does not correspond to any attributes or classes in the library in terms of cache.
+
+- Type
+bool
+
+
+
+
+
+-
+invites
+Whether guild invite related events are enabled.
+This corresponds to the following events:
+
+This does not correspond to any attributes or classes in the library in terms of cache.
+
+- Type
+bool
+
+
+
+
+
+-
+voice_states
+Whether guild voice state related events are enabled.
+This corresponds to the following events:
+
+This also corresponds to the following attributes and classes in terms of cache:
+
+
+
Note
+
This intent is required to connect to voice.
+
+
+- Type
+bool
+
+
+
+
+
+-
+presences
+Whether guild presence related events are enabled.
+This corresponds to the following events:
+
+This also corresponds to the following attributes and classes in terms of cache:
+
+For more information go to the presence intent documentation.
+
+
Note
+
Currently, this requires opting in explicitly via the developer portal as well.
+Bots in over 100 guilds will need to apply to Discord for verification.
+
+
+- Type
+bool
+
+
+
+
+
+-
+messages
+Whether guild and direct message related events are enabled.
+This is a shortcut to set or get both guild_messages
and dm_messages
.
+This corresponds to the following events:
+
+This also corresponds to the following attributes and classes in terms of cache:
+
+Note that due to an implicit relationship this also corresponds to the following events:
+
+
+- Type
+bool
+
+
+
+
+
+-
+guild_messages
+Whether guild message related events are enabled.
+See also dm_messages
for DMs or messages
for both.
+This corresponds to the following events:
+
+This also corresponds to the following attributes and classes in terms of cache:
+
+Note that due to an implicit relationship this also corresponds to the following events:
+
+
+- Type
+bool
+
+
+
+
+
+-
+dm_messages
+Whether direct message related events are enabled.
+See also guild_messages
for guilds or messages
for both.
+This corresponds to the following events:
+
+This also corresponds to the following attributes and classes in terms of cache:
+
+Note that due to an implicit relationship this also corresponds to the following events:
+
+
+- Type
+bool
+
+
+
+
+
+-
+reactions
+Whether guild and direct message reaction related events are enabled.
+This is a shortcut to set or get both guild_reactions
and dm_reactions
.
+This corresponds to the following events:
+
+This also corresponds to the following attributes and classes in terms of cache:
+
+
+- Type
+bool
+
+
+
+
+
+-
+guild_reactions
+Whether guild message reaction related events are enabled.
+See also dm_reactions
for DMs or reactions
for both.
+This corresponds to the following events:
+
+This also corresponds to the following attributes and classes in terms of cache:
+
+
+- Type
+bool
+
+
+
+
+
+-
+dm_reactions
+Whether direct message reaction related events are enabled.
+See also guild_reactions
for guilds or reactions
for both.
+This corresponds to the following events:
+
+This also corresponds to the following attributes and classes in terms of cache:
+
+
+- Type
+bool
+
+
+
+
+
+-
+typing
+Whether guild and direct message typing related events are enabled.
+This is a shortcut to set or get both guild_typing
and dm_typing
.
+This corresponds to the following events:
+
+This does not correspond to any attributes or classes in the library in terms of cache.
+
+- Type
+bool
+
+
+
+
+
+-
+guild_typing
+Whether guild and direct message typing related events are enabled.
+See also dm_typing
for DMs or typing
for both.
+This corresponds to the following events:
+
+This does not correspond to any attributes or classes in the library in terms of cache.
+
+- Type
+bool
+
+
+
+
+
+-
+dm_typing
+Whether guild and direct message typing related events are enabled.
+See also guild_typing
for guilds or typing
for both.
+This corresponds to the following events:
+
+This does not correspond to any attributes or classes in the library in terms of cache.
+
+- Type
+bool
+
+
+
+
+
+
+
+
+MemberCacheFlags
+
+-
+class discord.MemberCacheFlags(**kwargs)
+Controls the library’s cache policy when it comes to members.
+This allows for finer grained control over what members are cached.
+Note that the bot’s own member is always cached. This class is passed
+to the member_cache_flags
parameter in Client
.
+Due to a quirk in how Discord works, in order to ensure proper cleanup
+of cache resources it is recommended to have Intents.members
+enabled. Otherwise the library cannot know when a member leaves a guild and
+is thus unable to cleanup after itself.
+To construct an object you can pass keyword arguments denoting the flags
+to enable or disable.
+The default value is all flags enabled.
+
+
+
+-
+x == y
+Checks if two flags are equal.
+
+
+
+-
+x != y
+Checks if two flags are not equal.
+
+
+
+-
+hash(x)
+Return the flag’s hash.
+
+
+
+-
+iter(x)
+Returns an iterator of (name, value)
pairs. This allows it
+to be, for example, constructed as a dict or a list of pairs.
+
+
+
+
+-
+value
+The raw value. You should query flags via the properties
+rather than using this raw value.
+
+- Type
+int
+
+
+
+
+
+-
+classmethod all()
+A factory method that creates a MemberCacheFlags
with everything enabled.
+
+
+
+-
+classmethod none()
+A factory method that creates a MemberCacheFlags
with everything disabled.
+
+
+
+-
+voice
+Whether to cache members that are in voice.
+This requires Intents.voice_states
.
+Members that leave voice are no longer cached.
+
+- Type
+bool
+
+
+
+
+
+-
+joined
+Whether to cache members that joined the guild
+or are chunked as part of the initial log in flow.
+This requires Intents.members
.
+Members that leave the guild are no longer cached.
+
+- Type
+bool
+
+
+
+
+
+-
+classmethod from_intents(intents)
+A factory method that creates a MemberCacheFlags
based on
+the currently selected Intents
.
+
+- Parameters
+intents (Intents
) – The intents to select from.
+
+- Returns
+The resulting member cache flags.
+
+- Return type
+MemberCacheFlags
+
+
+
+
+
+
+
+
+ApplicationFlags
+
+-
+class discord.ApplicationFlags(**kwargs)
+Wraps up the Discord Application flags.
+
+
+-
+x == y
+Checks if two ApplicationFlags are equal.
+
+
+
+-
+x != y
+Checks if two ApplicationFlags are not equal.
+
+
+
+-
+hash(x)
+Return the flag’s hash.
+
+
+
+-
+iter(x)
+Returns an iterator of (name, value)
pairs. This allows it
+to be, for example, constructed as a dict or a list of pairs.
+Note that aliases are not shown.
+
+
+
+
+
+-
+value
+The raw value. You should query flags via the properties
+rather than using this raw value.
+
+- Type
+int
+
+
+
+
+
+-
+gateway_presence
+Returns True
if the application is verified and is allowed to
+receive presence information over the gateway.
+
+- Type
+bool
+
+
+
+
+
+-
+gateway_presence_limited
+Returns True
if the application is allowed to receive limited
+presence information over the gateway.
+
+- Type
+bool
+
+
+
+
+
+-
+gateway_guild_members
+Returns True
if the application is verified and is allowed to
+receive guild members information over the gateway.
+
+- Type
+bool
+
+
+
+
+
+-
+gateway_guild_members_limited
+Returns True
if the application is allowed to receive limited
+guild members information over the gateway.
+
+- Type
+bool
+
+
+
+
+
+-
+verification_pending_guild_limit
+Returns True
if the application is currently pending verification
+and has hit the guild limit.
+
+- Type
+bool
+
+
+
+
+
+-
+embedded
+Returns True
if the application is embedded within the Discord client.
+
+- Type
+bool
+
+
+
+
+
+
+
+
+File
+
+-
+class discord.File(fp, filename=None, *, spoiler=False)
+A parameter object used for abc.Messageable.send()
+for sending file objects.
+
+
+-
+fp
+A file-like object opened in binary mode and read mode
+or a filename representing a file in the hard drive to
+open.
+
+
Note
+
If the file-like object passed is opened via open
then the
+modes ‘rb’ should be used.
+
To pass binary data, consider usage of io.BytesIO
.
+
+
+- Type
+Union[os.PathLike
, io.BufferedIOBase
]
+
+
+
+
+
+-
+filename
+The filename to display when uploading to Discord.
+If this is not given then it defaults to fp.name
or if fp
is
+a string then the filename
will default to the string given.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+spoiler
+Whether the attachment is a spoiler.
+
+- Type
+bool
+
+
+
+
+
+
+
+
+Colour
+
+-
+class discord.Colour(value)
+Represents a Discord role colour. This class is similar
+to a (red, green, blue) tuple
.
+There is an alias for this called Color.
+
+
+-
+x == y
+Checks if two colours are equal.
+
+
+
+-
+x != y
+Checks if two colours are not equal.
+
+
+
+-
+hash(x)
+Return the colour’s hash.
+
+
+
+-
+str(x)
+Returns the hex format for the colour.
+
+
+
+-
+int(x)
+Returns the raw colour value.
+
+
+
+
+-
+value
+The raw integer colour value.
+
+- Type
+int
+
+
+
+
+
+-
+property r
+Returns the red component of the colour.
+
+- Type
+int
+
+
+
+
+
+-
+property g
+Returns the green component of the colour.
+
+- Type
+int
+
+
+
+
+
+-
+property b
+Returns the blue component of the colour.
+
+- Type
+int
+
+
+
+
+
+-
+to_rgb()
+Tuple[int
, int
, int
]: Returns an (r, g, b) tuple representing the colour.
+
+
+
+-
+classmethod from_rgb(r, g, b)
+Constructs a Colour
from an RGB tuple.
+
+
+
+-
+classmethod from_hsv(h, s, v)
+Constructs a Colour
from an HSV tuple.
+
+
+
+-
+classmethod default()
+A factory method that returns a Colour
with a value of 0
.
+
+
+
+-
+classmethod random(*, seed=None)
+A factory method that returns a Colour
with a random hue.
+
+
Note
+
The random algorithm works by choosing a colour with a random hue but
+with maxed out saturation and value.
+
+
+
+- Parameters
+seed (Optional[Union[int
, str
, float
, bytes
, bytearray
]]) –
The seed to initialize the RNG with. If None
is passed the default RNG is used.
+
+
+
+
+
+
+
+-
+classmethod teal()
+A factory method that returns a Colour
with a value of 0x1abc9c
.
+
+
+
+-
+classmethod dark_teal()
+A factory method that returns a Colour
with a value of 0x11806a
.
+
+
+
+-
+classmethod brand_green()
+A factory method that returns a Colour
with a value of 0x57F287
.
+
+
+
+
+-
+classmethod green()
+A factory method that returns a Colour
with a value of 0x2ecc71
.
+
+
+
+-
+classmethod dark_green()
+A factory method that returns a Colour
with a value of 0x1f8b4c
.
+
+
+
+-
+classmethod blue()
+A factory method that returns a Colour
with a value of 0x3498db
.
+
+
+
+-
+classmethod dark_blue()
+A factory method that returns a Colour
with a value of 0x206694
.
+
+
+
+-
+classmethod purple()
+A factory method that returns a Colour
with a value of 0x9b59b6
.
+
+
+
+-
+classmethod dark_purple()
+A factory method that returns a Colour
with a value of 0x71368a
.
+
+
+
+-
+classmethod magenta()
+A factory method that returns a Colour
with a value of 0xe91e63
.
+
+
+
+-
+classmethod dark_magenta()
+A factory method that returns a Colour
with a value of 0xad1457
.
+
+
+
+-
+classmethod gold()
+A factory method that returns a Colour
with a value of 0xf1c40f
.
+
+
+
+-
+classmethod dark_gold()
+A factory method that returns a Colour
with a value of 0xc27c0e
.
+
+
+
+-
+classmethod orange()
+A factory method that returns a Colour
with a value of 0xe67e22
.
+
+
+
+-
+classmethod dark_orange()
+A factory method that returns a Colour
with a value of 0xa84300
.
+
+
+
+-
+classmethod brand_red()
+A factory method that returns a Colour
with a value of 0xED4245
.
+
+
+
+
+-
+classmethod red()
+A factory method that returns a Colour
with a value of 0xe74c3c
.
+
+
+
+-
+classmethod nitro_booster()
+A factory method that returns a Colour
with a value of 0xf47fff
.
+
+
+
+
+-
+classmethod dark_red()
+A factory method that returns a Colour
with a value of 0x992d22
.
+
+
+
+-
+classmethod lighter_grey()
+A factory method that returns a Colour
with a value of 0x95a5a6
.
+
+
+
+-
+classmethod lighter_gray()
+A factory method that returns a Colour
with a value of 0x95a5a6
.
+
+
+
+-
+classmethod dark_grey()
+A factory method that returns a Colour
with a value of 0x607d8b
.
+
+
+
+-
+classmethod dark_gray()
+A factory method that returns a Colour
with a value of 0x607d8b
.
+
+
+
+-
+classmethod light_grey()
+A factory method that returns a Colour
with a value of 0x979c9f
.
+
+
+
+-
+classmethod light_gray()
+A factory method that returns a Colour
with a value of 0x979c9f
.
+
+
+
+-
+classmethod darker_grey()
+A factory method that returns a Colour
with a value of 0x546e7a
.
+
+
+
+-
+classmethod darker_gray()
+A factory method that returns a Colour
with a value of 0x546e7a
.
+
+
+
+-
+classmethod og_blurple()
+A factory method that returns a Colour
with a value of 0x7289da
.
+
+
+
+-
+classmethod blurple()
+A factory method that returns a Colour
with a value of 0x5865F2
.
+
+
+
+-
+classmethod greyple()
+A factory method that returns a Colour
with a value of 0x99aab5
.
+
+
+
+-
+classmethod dark_theme()
+A factory method that returns a Colour
with a value of 0x36393F
.
+This will appear transparent on Discord’s dark theme.
+
+
+
+
+-
+classmethod fuchsia()
+A factory method that returns a Colour
with a value of 0xEB459E
.
+
+
+
+
+-
+classmethod yellow()
+A factory method that returns a Colour
with a value of 0xFEE75C
.
+
+
+
+
+-
+classmethod dark_blurple()
+A factory method that returns a Colour
with a value of 0x4E5D94
.
+This is the original Dark Blurple branding.
+
+
+
+
+
+
+
+BaseActivity
+
+-
+class discord.BaseActivity(**kwargs)
+The base activity that all user-settable activities inherit from.
+A user-settable activity is one that can be used in Client.change_presence()
.
+The following types currently count as user-settable:
+
+Note that although these types are considered user-settable by the library,
+Discord typically ignores certain combinations of activity depending on
+what is currently set. This behaviour may change in the future so there are
+no guarantees on whether Discord will actually let you set these types.
+
+
+-
+property created_at
+When the user started doing this activity in UTC.
+
+
+- Type
+Optional[datetime.datetime
]
+
+
+
+
+
+
+
+
+Activity
+
+-
+class discord.Activity(**kwargs)
+Represents an activity in Discord.
+This could be an activity such as streaming, playing, listening
+or watching.
+For memory optimisation purposes, some activities are offered in slimmed
+down versions:
+
+
+-
+application_id
+The application ID of the game.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+name
+The name of the activity.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+url
+A stream URL that the activity could be doing.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+type
+The type of activity currently being done.
+
+- Type
+ActivityType
+
+
+
+
+
+-
+state
+The user’s current state. For example, “In Game”.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+details
+The detail of the user’s current activity.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+timestamps
+A dictionary of timestamps. It contains the following optional keys:
+
+
+- Type
+dict
+
+
+
+
+
+-
+assets
+A dictionary representing the images and their hover text of an activity.
+It contains the following optional keys:
+
+large_image
: A string representing the ID for the large image asset.
+large_text
: A string representing the text when hovering over the large image asset.
+small_image
: A string representing the ID for the small image asset.
+small_text
: A string representing the text when hovering over the small image asset.
+
+
+- Type
+dict
+
+
+
+
+
+-
+party
+A dictionary representing the activity party. It contains the following optional keys:
+
+id
: A string representing the party ID.
+size
: A list of up to two integer elements denoting (current_size, maximum_size).
+
+
+- Type
+dict
+
+
+
+
+
+-
+buttons
+An list of dictionaries representing custom buttons shown in a rich presence.
+Each dictionary contains the following keys:
+
+
+
+- Type
+List[dict
]
+
+
+
+
+
+-
+emoji
+The emoji that belongs to this activity.
+
+- Type
+Optional[PartialEmoji
]
+
+
+
+
+
+-
+property start
+When the user started doing this activity in UTC, if applicable.
+
+- Type
+Optional[datetime.datetime
]
+
+
+
+
+
+-
+property end
+When the user will stop doing this activity in UTC, if applicable.
+
+- Type
+Optional[datetime.datetime
]
+
+
+
+
+
+-
+property large_image_url
+Returns a URL pointing to the large image asset of this activity if applicable.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+property small_image_url
+Returns a URL pointing to the small image asset of this activity if applicable.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+property large_image_text
+Returns the large image asset hover text of this activity if applicable.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+property small_image_text
+Returns the small image asset hover text of this activity if applicable.
+
+- Type
+Optional[str
]
+
+
+
+
+
+
+
+
+Game
+
+-
+class discord.Game(name, **extra)
+A slimmed down version of Activity
that represents a Discord game.
+This is typically displayed via Playing on the official Discord client.
+
+
+-
+x == y
+Checks if two games are equal.
+
+
+
+-
+x != y
+Checks if two games are not equal.
+
+
+
+-
+hash(x)
+Returns the game’s hash.
+
+
+
+-
+str(x)
+Returns the game’s name.
+
+
+
+
+- Parameters
+name (str
) – The game’s name.
+
+
+
+-
+name
+The game’s name.
+
+- Type
+str
+
+
+
+
+
+-
+property type
+Returns the game’s type. This is for compatibility with Activity
.
+It always returns ActivityType.playing
.
+
+- Type
+ActivityType
+
+
+
+
+
+-
+property start
+When the user started playing this game in UTC, if applicable.
+
+- Type
+Optional[datetime.datetime
]
+
+
+
+
+
+-
+property end
+When the user will stop playing this game in UTC, if applicable.
+
+- Type
+Optional[datetime.datetime
]
+
+
+
+
+
+
+
+
+Streaming
+
+-
+class discord.Streaming(*, name, url, **extra)
+A slimmed down version of Activity
that represents a Discord streaming status.
+This is typically displayed via Streaming on the official Discord client.
+
+
+-
+x == y
+Checks if two streams are equal.
+
+
+
+-
+x != y
+Checks if two streams are not equal.
+
+
+
+-
+hash(x)
+Returns the stream’s hash.
+
+
+
+-
+str(x)
+Returns the stream’s name.
+
+
+
+
+-
+platform
+Where the user is streaming from (ie. YouTube, Twitch).
+
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+name
+The stream’s name.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+details
+An alias for name
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+game
+The game being streamed.
+
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+url
+The stream’s URL.
+
+- Type
+str
+
+
+
+
+
+-
+assets
+A dictionary comprising of similar keys than those in Activity.assets
.
+
+- Type
+dict
+
+
+
+
+
+-
+property type
+Returns the game’s type. This is for compatibility with Activity
.
+It always returns ActivityType.streaming
.
+
+- Type
+ActivityType
+
+
+
+
+
+-
+property twitch_name
+If provided, the twitch name of the user streaming.
+This corresponds to the large_image
key of the Streaming.assets
+dictionary if it starts with twitch:
. Typically set by the Discord client.
+
+- Type
+Optional[str
]
+
+
+
+
+
+
+
+
+CustomActivity
+
+-
+class discord.CustomActivity(name, *, emoji=None, **extra)
+Represents a Custom activity from Discord.
+
+
+-
+x == y
+Checks if two activities are equal.
+
+
+
+-
+x != y
+Checks if two activities are not equal.
+
+
+
+-
+hash(x)
+Returns the activity’s hash.
+
+
+
+-
+str(x)
+Returns the custom status text.
+
+
+
+
+
+-
+name
+The custom activity’s name.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+emoji
+The emoji to pass to the activity, if any.
+
+- Type
+Optional[PartialEmoji
]
+
+
+
+
+
+-
+property type
+Returns the activity’s type. This is for compatibility with Activity
.
+It always returns ActivityType.custom
.
+
+- Type
+ActivityType
+
+
+
+
+
+
+
+
+Permissions
+
+-
+class discord.Permissions(permissions=0, **kwargs)
+Wraps up the Discord permission value.
+The properties provided are two way. You can set and retrieve individual
+bits using the properties as if they were regular bools. This allows
+you to edit permissions.
+
+
Changed in version 1.3: You can now use keyword arguments to initialize Permissions
+similar to update()
.
+
+
+
+-
+x == y
+Checks if two permissions are equal.
+
+
+
+-
+x != y
+Checks if two permissions are not equal.
+
+
+
+-
+x <= y
+Checks if a permission is a subset of another permission.
+
+
+
+-
+x >= y
+Checks if a permission is a superset of another permission.
+
+
+
+-
+x < y
+Checks if a permission is a strict subset of another permission.
+
+
+
+-
+x > y
+Checks if a permission is a strict superset of another permission.
+
+
+
+-
+hash(x)
+Return the permission’s hash.
+
+
+
+-
+iter(x)
+Returns an iterator of (perm, value)
pairs. This allows it
+to be, for example, constructed as a dict or a list of pairs.
+Note that aliases are not shown.
+
+
+
+
+-
+value
+The raw value. This value is a bit array field of a 53-bit integer
+representing the currently available permissions. You should query
+permissions via the properties rather than using this raw value.
+
+- Type
+int
+
+
+
+
+
+-
+is_subset(other)
+Returns True
if self has the same or fewer permissions as other.
+
+
+
+-
+is_superset(other)
+Returns True
if self has the same or more permissions as other.
+
+
+
+-
+is_strict_subset(other)
+Returns True
if the permissions on other are a strict subset of those on self.
+
+
+
+-
+is_strict_superset(other)
+Returns True
if the permissions on other are a strict superset of those on self.
+
+
+
+-
+classmethod none()
+A factory method that creates a Permissions
with all
+permissions set to False
.
+
+
+
+-
+classmethod all()
+A factory method that creates a Permissions
with all
+permissions set to True
.
+
+
+
+-
+classmethod all_channel()
+A Permissions
with all channel-specific permissions set to
+True
and the guild-specific ones set to False
. The guild-specific
+permissions are currently:
+
+
+
+
+
+
+-
+classmethod general()
+A factory method that creates a Permissions
with all
+“General” permissions from the official Discord UI set to True
.
+
+
+
+
+-
+classmethod membership()
+A factory method that creates a Permissions
with all
+“Membership” permissions from the official Discord UI set to True
.
+
+
+
+
+-
+classmethod text()
+A factory method that creates a Permissions
with all
+“Text” permissions from the official Discord UI set to True
.
+
+
+
+
+
+-
+classmethod voice()
+A factory method that creates a Permissions
with all
+“Voice” permissions from the official Discord UI set to True
.
+
+
+
+-
+classmethod stage()
+A factory method that creates a Permissions
with all
+“Stage Channel” permissions from the official Discord UI set to True
.
+
+
+
+
+-
+classmethod stage_moderator()
+A factory method that creates a Permissions
with all
+“Stage Moderator” permissions from the official Discord UI set to True
.
+
+
+
+
+-
+classmethod advanced()
+A factory method that creates a Permissions
with all
+“Advanced” permissions from the official Discord UI set to True
.
+
+
+
+
+-
+update(**kwargs)
+Bulk updates this permission object.
+Allows you to set multiple attributes by using keyword
+arguments. The names must be equivalent to the properties
+listed. Extraneous key/value pairs will be silently ignored.
+
+- Parameters
+**kwargs – A list of key/value pairs to bulk update permissions with.
+
+
+
+
+
+-
+create_instant_invite
+Returns True
if the user can create instant invites.
+
+- Type
+bool
+
+
+
+
+
+-
+kick_members
+Returns True
if the user can kick users from the guild.
+
+- Type
+bool
+
+
+
+
+
+-
+ban_members
+Returns True
if a user can ban users from the guild.
+
+- Type
+bool
+
+
+
+
+
+-
+administrator
+Returns True
if a user is an administrator. This role overrides all other permissions.
+This also bypasses all channel-specific overrides.
+
+- Type
+bool
+
+
+
+
+
+-
+admin
+An alias for administrator
.
+.. versionadded:: 2.0
+
+- Type
+bool
+
+
+
+
+
+-
+manage_channels
+Returns True
if a user can edit, delete, or create channels in the guild.
+This also corresponds to the “Manage Channel” channel-specific override.
+
+- Type
+bool
+
+
+
+
+
+-
+manage_guild
+Returns True
if a user can edit guild properties.
+
+- Type
+bool
+
+
+
+
+
+-
+add_reactions
+Returns True
if a user can add reactions to messages.
+
+- Type
+bool
+
+
+
+
+
+-
+view_audit_log
+Returns True
if a user can view the guild’s audit log.
+
+- Type
+bool
+
+
+
+
+
+-
+priority_speaker
+Returns True
if a user can be more easily heard while talking.
+
+- Type
+bool
+
+
+
+
+
+-
+stream
+Returns True
if a user can stream in a voice channel.
+
+- Type
+bool
+
+
+
+
+
+-
+read_messages
+Returns True
if a user can read messages from all or specific text channels.
+
+- Type
+bool
+
+
+
+
+
+-
+view_channel
+An alias for read_messages
.
+
+
+- Type
+bool
+
+
+
+
+
+-
+send_messages
+Returns True
if a user can send messages from all or specific text channels.
+
+- Type
+bool
+
+
+
+
+
+-
+send_tts_messages
+Returns True
if a user can send TTS messages from all or specific text channels.
+
+- Type
+bool
+
+
+
+
+
+-
+manage_messages
+Returns True
if a user can delete or pin messages in a text channel.
+
+
Note
+
Note that there are currently no ways to edit other people’s messages.
+
+
+- Type
+bool
+
+
+
+
+
+-
+embed_links
+Returns True
if a user’s messages will automatically be embedded by Discord.
+
+- Type
+bool
+
+
+
+
+
+-
+attach_files
+Returns True
if a user can send files in their messages.
+
+- Type
+bool
+
+
+
+
+
+-
+read_message_history
+Returns True
if a user can read a text channel’s previous messages.
+
+- Type
+bool
+
+
+
+
+
+-
+mention_everyone
+Returns True
if a user’s @everyone or @here will mention everyone in the text channel.
+
+- Type
+bool
+
+
+
+
+
+-
+external_emojis
+Returns True
if a user can use emojis from other guilds.
+
+- Type
+bool
+
+
+
+
+
+-
+use_external_emojis
+An alias for external_emojis
.
+
+
+- Type
+bool
+
+
+
+
+
+-
+view_guild_insights
+Returns True
if a user can view the guild’s insights.
+
+
+- Type
+bool
+
+
+
+
+
+-
+connect
+Returns True
if a user can connect to a voice channel.
+
+- Type
+bool
+
+
+
+
+
+-
+speak
+Returns True
if a user can speak in a voice channel.
+
+- Type
+bool
+
+
+
+
+
+-
+mute_members
+Returns True
if a user can mute other users.
+
+- Type
+bool
+
+
+
+
+
+-
+deafen_members
+Returns True
if a user can deafen other users.
+
+- Type
+bool
+
+
+
+
+
+-
+move_members
+Returns True
if a user can move users between other voice channels.
+
+- Type
+bool
+
+
+
+
+
+-
+use_voice_activation
+Returns True
if a user can use voice activation in voice channels.
+
+- Type
+bool
+
+
+
+
+
+-
+change_nickname
+Returns True
if a user can change their nickname in the guild.
+
+- Type
+bool
+
+
+
+
+
+-
+manage_nicknames
+Returns True
if a user can change other user’s nickname in the guild.
+
+- Type
+bool
+
+
+
+
+
+-
+manage_roles
+Returns True
if a user can create or edit roles less than their role’s position.
+This also corresponds to the “Manage Permissions” channel-specific override.
+
+- Type
+bool
+
+
+
+
+
+-
+manage_permissions
+An alias for manage_roles
.
+
+
+- Type
+bool
+
+
+
+
+
+-
+manage_webhooks
+Returns True
if a user can create, edit, or delete webhooks.
+
+- Type
+bool
+
+
+
+
+
+-
+manage_emojis
+Returns True
if a user can create, edit, or delete emojis.
+
+- Type
+bool
+
+
+
+
+
+-
+manage_emojis_and_stickers
+An alias for manage_emojis
.
+
+
+- Type
+bool
+
+
+
+
+
+-
+use_slash_commands
+Returns True
if a user can use slash commands.
+
+
+- Type
+bool
+
+
+
+
+
+-
+request_to_speak
+Returns True
if a user can request to speak in a stage channel.
+
+
+- Type
+bool
+
+
+
+
+
+-
+manage_events
+Returns True
if a user can manage guild events.
+
+
+- Type
+bool
+
+
+
+
+
+-
+manage_threads
+Returns True
if a user can manage threads.
+
+
+- Type
+bool
+
+
+
+
+
+-
+create_public_threads
+Returns True
if a user can create public threads.
+
+
+- Type
+bool
+
+
+
+
+
+-
+create_private_threads
+Returns True
if a user can create private threads.
+
+
+- Type
+bool
+
+
+
+
+
+-
+external_stickers
+Returns True
if a user can use stickers from other guilds.
+
+
+- Type
+bool
+
+
+
+
+
+-
+use_external_stickers
+An alias for external_stickers
.
+
+
+- Type
+bool
+
+
+
+
+
+-
+send_messages_in_threads
+Returns True
if a user can send messages in threads.
+
+
+- Type
+bool
+
+
+
+
+
+
+
+
+PermissionOverwrite
+
+-
+class discord.PermissionOverwrite(**kwargs)
+A type that is used to represent a channel specific permission.
+Unlike a regular Permissions
, the default value of a
+permission is equivalent to None
and not False
. Setting
+a value to False
is explicitly denying that permission,
+while setting a value to True
is explicitly allowing
+that permission.
+The values supported by this are the same as Permissions
+with the added possibility of it being set to None
.
+
+
+-
+x == y
+Checks if two overwrites are equal.
+
+
+
+-
+x != y
+Checks if two overwrites are not equal.
+
+
+
+-
+iter(x)
+Returns an iterator of (perm, value)
pairs. This allows it
+to be, for example, constructed as a dict or a list of pairs.
+Note that aliases are not shown.
+
+
+
+
+- Parameters
+**kwargs – Set the value of permissions by their name.
+
+
+
+-
+pair()
+Tuple[Permissions
, Permissions
]: Returns the (allow, deny) pair from this overwrite.
+
+
+
+-
+classmethod from_pair(allow, deny)
+Creates an overwrite from an allow/deny pair of Permissions
.
+
+
+
+-
+is_empty()
+Checks if the permission overwrite is currently empty.
+An empty permission overwrite is one that has no overwrites set
+to True
or False
.
+
+- Returns
+Indicates if the overwrite is empty.
+
+- Return type
+bool
+
+
+
+
+
+-
+update(**kwargs)
+Bulk updates this permission overwrite object.
+Allows you to set multiple attributes by using keyword
+arguments. The names must be equivalent to the properties
+listed. Extraneous key/value pairs will be silently ignored.
+
+- Parameters
+**kwargs – A list of key/value pairs to bulk update with.
+
+
+
+
+
+
+
+
+ShardInfo
+
+-
+class discord.ShardInfo
+A class that gives information and control over a specific shard.
+You can retrieve this object via AutoShardedClient.get_shard()
+or AutoShardedClient.shards
.
+
+
+-
+id
+The shard ID for this shard.
+
+- Type
+int
+
+
+
+
+
+-
+shard_count
+The shard count for this cluster. If this is None
then the bot has not started yet.
+
+- Type
+Optional[int
]
+
+
+
+
+
+-
+is_closed()
+bool
: Whether the shard connection is currently closed.
+
+
+
+-
+await disconnect()
+This function is a coroutine.
+Disconnects a shard. When this is called, the shard connection will no
+longer be open.
+If the shard is already disconnected this does nothing.
+
+
+
+-
+await reconnect()
+This function is a coroutine.
+Disconnects and then connects the shard again.
+
+
+
+-
+await connect()
+This function is a coroutine.
+Connects a shard. If the shard is already connected this does nothing.
+
+
+
+-
+property latency
+Measures latency between a HEARTBEAT and a HEARTBEAT_ACK in seconds for this shard.
+
+- Type
+float
+
+
+
+
+
+-
+is_ws_ratelimited()
+bool
: 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.
+
+
+
+
+
+
+
+SystemChannelFlags
+
+-
+class discord.SystemChannelFlags
+Wraps up a Discord system channel flag value.
+Similar to Permissions
, the properties provided are two way.
+You can set and retrieve individual bits using the properties as if they
+were regular bools. This allows you to edit the system flags easily.
+To construct an object you can pass keyword arguments denoting the flags
+to enable or disable.
+
+
+-
+x == y
+Checks if two flags are equal.
+
+
+
+-
+x != y
+Checks if two flags are not equal.
+
+
+
+-
+hash(x)
+Return the flag’s hash.
+
+
+
+-
+iter(x)
+Returns an iterator of (name, value)
pairs. This allows it
+to be, for example, constructed as a dict or a list of pairs.
+
+
+
+
+-
+value
+The raw value. This value is a bit array field of a 53-bit integer
+representing the currently available flags. You should query
+flags via the properties rather than using this raw value.
+
+- Type
+int
+
+
+
+
+
+-
+join_notifications
+Returns True
if the system channel is used for member join notifications.
+
+- Type
+bool
+
+
+
+
+
+-
+premium_subscriptions
+Returns True
if the system channel is used for “Nitro boosting” notifications.
+
+- Type
+bool
+
+
+
+
+
+-
+guild_reminder_notifications
+Returns True
if the system channel is used for server setup helpful tips notifications.
+
+
+- Type
+bool
+
+
+
+
+
+
+
+
+MessageFlags
+
+-
+class discord.MessageFlags
+Wraps up a Discord Message flag value.
+See SystemChannelFlags
.
+
+
+-
+x == y
+Checks if two flags are equal.
+
+
+
+-
+x != y
+Checks if two flags are not equal.
+
+
+
+-
+hash(x)
+Return the flag’s hash.
+
+
+
+-
+iter(x)
+Returns an iterator of (name, value)
pairs. This allows it
+to be, for example, constructed as a dict or a list of pairs.
+
+
+
+
+
+-
+value
+The raw value. This value is a bit array field of a 53-bit integer
+representing the currently available flags. You should query
+flags via the properties rather than using this raw value.
+
+- Type
+int
+
+
+
+
+
+-
+crossposted
+Returns True
if the message is the original crossposted message.
+
+- Type
+bool
+
+
+
+
+
+-
+is_crossposted
+Returns True
if the message was crossposted from another channel.
+
+- Type
+bool
+
+
+
+
+
+-
+suppress_embeds
+Returns True
if the message’s embeds have been suppressed.
+
+- Type
+bool
+
+
+
+
+
+-
+source_message_deleted
+Returns True
if the source message for this crosspost has been deleted.
+
+- Type
+bool
+
+
+
+
+
+-
+urgent
+Returns True
if the source message is an urgent message.
+An urgent message is one sent by Discord Trust and Safety.
+
+- Type
+bool
+
+
+
+
+
+-
+has_thread
+Returns True
if the source message is associated with a thread.
+
+
+- Type
+bool
+
+
+
+
+
+-
+ephemeral
+Returns True
if the source message is ephemeral.
+
+
+- Type
+bool
+
+
+
+
+
+
+
+
+PublicUserFlags
+
+-
+class discord.PublicUserFlags
+Wraps up the Discord User Public flags.
+
+
+-
+x == y
+Checks if two PublicUserFlags are equal.
+
+
+
+-
+x != y
+Checks if two PublicUserFlags are not equal.
+
+
+
+-
+hash(x)
+Return the flag’s hash.
+
+
+
+-
+iter(x)
+Returns an iterator of (name, value)
pairs. This allows it
+to be, for example, constructed as a dict or a list of pairs.
+Note that aliases are not shown.
+
+
+
+
+
+-
+value
+The raw value. This value is a bit array field of a 53-bit integer
+representing the currently available flags. You should query
+flags via the properties rather than using this raw value.
+
+- Type
+int
+
+
+
+
+
+-
+staff
+Returns True
if the user is a Discord Employee.
+
+- Type
+bool
+
+
+
+
+
+-
+partner
+Returns True
if the user is a Discord Partner.
+
+- Type
+bool
+
+
+
+
+
+-
+hypesquad
+Returns True
if the user is a HypeSquad Events member.
+
+- Type
+bool
+
+
+
+
+
+-
+bug_hunter
+Returns True
if the user is a Bug Hunter
+
+- Type
+bool
+
+
+
+
+
+-
+hypesquad_bravery
+Returns True
if the user is a HypeSquad Bravery member.
+
+- Type
+bool
+
+
+
+
+
+-
+hypesquad_brilliance
+Returns True
if the user is a HypeSquad Brilliance member.
+
+- Type
+bool
+
+
+
+
+
+-
+hypesquad_balance
+Returns True
if the user is a HypeSquad Balance member.
+
+- Type
+bool
+
+
+
+
+
+-
+early_supporter
+Returns True
if the user is an Early Supporter.
+
+- Type
+bool
+
+
+
+
+
+-
+team_user
+Returns True
if the user is a Team User.
+
+- Type
+bool
+
+
+
+
+
+-
+system
+Returns True
if the user is a system user (i.e. represents Discord officially).
+
+- Type
+bool
+
+
+
+
+
+-
+bug_hunter_level_2
+Returns True
if the user is a Bug Hunter Level 2
+
+- Type
+bool
+
+
+
+
+
+-
+verified_bot
+Returns True
if the user is a Verified Bot.
+
+- Type
+bool
+
+
+
+
+
+-
+verified_bot_developer
+Returns True
if the user is an Early Verified Bot Developer.
+
+- Type
+bool
+
+
+
+
+
+-
+early_verified_bot_developer
+An alias for verified_bot_developer
.
+
+
+- Type
+bool
+
+
+
+
+
+-
+discord_certified_moderator
+Returns True
if the user is a Discord Certified Moderator.
+
+
+- Type
+bool
+
+
+
+
+
+-
+all()
+List[UserFlags
]: Returns all public flags the user has.
+
+
+
+
+
+
+
+Bot UI Kit
+The library has helpers to help create component-based UIs.
+
+View
+
+-
+class discord.ui.View(*, timeout=180.0)
+Represents a UI view.
+This object must be inherited to create a UI within Discord.
+
+
+- Parameters
+timeout (Optional[float
]) – Timeout in seconds from last interaction with the UI before no longer accepting input.
+If None
then there is no timeout.
+
+
+
+-
+timeout
+Timeout from last interaction with the UI before no longer accepting input.
+If None
then there is no timeout.
+
+- Type
+Optional[float
]
+
+
+
+
+
+-
+children
+The list of children attached to this view.
+
+- Type
+List[Item
]
+
+
+
+
+
+-
+classmethod from_message(message, /, *, timeout=180.0)
+Converts a message’s components into a View
.
+The Message.components
of a message are read-only
+and separate types from those in the discord.ui
namespace.
+In order to modify and edit message components they must be
+converted into a View
first.
+
+- Parameters
+-
+
+- Returns
+The converted view. This always returns a View
and not
+one of its subclasses.
+
+- Return type
+View
+
+
+
+
+
+-
+add_item(item)
+Adds an item to the view.
+
+- Parameters
+item (Item
) – The item to add to the view.
+
+- Raises
+-
+
+
+
+
+
+-
+remove_item(item)
+Removes an item from the view.
+
+- Parameters
+item (Item
) – The item to remove from the view.
+
+
+
+
+
+-
+clear_items()
+Removes all items from the view.
+
+
+
+-
+await interaction_check(interaction)
+This function is a coroutine.
+A callback that is called when an interaction happens within the view
+that checks whether the view should process item callbacks for the interaction.
+This is useful to override if, for example, you want to ensure that the
+interaction author is a given user.
+The default implementation of this returns True
.
+
+
Note
+
If an exception occurs within the body then the check
+is considered a failure and on_error()
is called.
+
+
+- Parameters
+interaction (Interaction
) – The interaction that occurred.
+
+- Returns
+Whether the view children’s callbacks should be called.
+
+- Return type
+bool
+
+
+
+
+
+-
+await on_timeout()
+This function is a coroutine.
+A callback that is called when a view’s timeout elapses without being explicitly stopped.
+
+
+
+-
+await on_error(error, item, interaction)
+This function is a coroutine.
+A callback that is called when an item’s callback or interaction_check()
+fails with an error.
+The default implementation prints the traceback to stderr.
+
+- Parameters
+
+error (Exception
) – The exception that was raised.
+item (Item
) – The item that failed the dispatch.
+interaction (Interaction
) – The interaction that led to the failure.
+
+
+
+
+
+
+-
+stop()
+Stops listening to interaction events from this view.
+This operation cannot be undone.
+
+
+
+-
+is_finished()
+bool
: Whether the view has finished interacting.
+
+
+
+-
+is_dispatching()
+bool
: Whether the view has been added for dispatching purposes.
+
+
+
+-
+is_persistent()
+bool
: Whether the view is set up as persistent.
+A persistent view has all their components with a set custom_id
and
+a timeout
set to None
.
+
+
+
+-
+await wait()
+Waits until the view has finished interacting.
+A view is considered finished when stop()
is called
+or it times out.
+
+- Returns
+If True
, then the view timed out. If False
then
+the view finished normally.
+
+- Return type
+bool
+
+
+
+
+
+
+
+
+Item
+
+-
+class discord.ui.Item
+Represents the base UI item that all UI components inherit from.
+The current UI items supported are:
+
+
+
+-
+property view
+The underlying view for this item.
+
+- Type
+Optional[View
]
+
+
+
+
+
+-
+await callback(interaction)
+This function is a coroutine.
+The callback associated with this UI item.
+This can be overriden by subclasses.
+
+- Parameters
+interaction (Interaction
) – The interaction that triggered this UI item.
+
+
+
+
+
+
+
+
+Button
+
+-
+class discord.ui.Button(*, style=<ButtonStyle.secondary: 2>, label=None, disabled=False, custom_id=None, url=None, emoji=None, row=None)
+Represents a UI button.
+
+
+- Parameters
+
+style (discord.ButtonStyle
) – The style of the button.
+custom_id (Optional[str
]) – The ID of the button that gets received during an interaction.
+If this button is for a URL, it does not have a custom ID.
+url (Optional[str
]) – The URL this button sends you to.
+disabled (bool
) – Whether the button is disabled or not.
+label (Optional[str
]) – The label of the button, if any.
+emoji (Optional[Union[PartialEmoji
, Emoji
, str
]]) – The emoji of the button, if available.
+row (Optional[int
]) – The relative row this button belongs to. A Discord component can only have 5
+rows. By default, items are arranged automatically into those 5 rows. If you’d
+like to control the relative positioning of the row then passing an index is advised.
+For example, row=1 will show up before row=2. Defaults to None
, which is automatic
+ordering. The row number must be between 0 and 4 (i.e. zero indexed).
+
+
+
+
+-
+property style
+The style of the button.
+
+- Type
+discord.ButtonStyle
+
+
+
+
+
+-
+property custom_id
+The ID of the button that gets received during an interaction.
+If this button is for a URL, it does not have a custom ID.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+property url
+The URL this button sends you to.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+property disabled
+Whether the button is disabled or not.
+
+- Type
+bool
+
+
+
+
+
+-
+property label
+The label of the button, if available.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+property emoji
+The emoji of the button, if available.
+
+- Type
+Optional[PartialEmoji
]
+
+
+
+
+
+-
+await callback(interaction)
+This function is a coroutine.
+The callback associated with this UI item.
+This can be overriden by subclasses.
+
+- Parameters
+interaction (Interaction
) – The interaction that triggered this UI item.
+
+
+
+
+
+-
+property view
+The underlying view for this item.
+
+- Type
+Optional[View
]
+
+
+
+
+
+
+
+-
+discord.ui.button(*, label=None, custom_id=None, disabled=False, style=<ButtonStyle.secondary: 2>, emoji=None, row=None)
+A decorator that attaches a button to a component.
+The function being decorated should have three parameters, self
representing
+the discord.ui.View
, the discord.ui.Button
being pressed and
+the discord.Interaction
you receive.
+
+
Note
+
Buttons with a URL cannot be created with this function.
+Consider creating a Button
manually instead.
+This is because buttons with a URL do not have a callback
+associated with them since Discord does not do any processing
+with it.
+
+
+- Parameters
+
+label (Optional[str
]) – The label of the button, if any.
+custom_id (Optional[str
]) – The ID of the button that gets received during an interaction.
+It is recommended not to set this parameter to prevent conflicts.
+style (ButtonStyle
) – The style of the button. Defaults to ButtonStyle.grey
.
+disabled (bool
) – Whether the button is disabled or not. Defaults to False
.
+emoji (Optional[Union[str
, Emoji
, PartialEmoji
]]) – The emoji of the button. This can be in string form or a PartialEmoji
+or a full Emoji
.
+row (Optional[int
]) – The relative row this button belongs to. A Discord component can only have 5
+rows. By default, items are arranged automatically into those 5 rows. If you’d
+like to control the relative positioning of the row then passing an index is advised.
+For example, row=1 will show up before row=2. Defaults to None
, which is automatic
+ordering. The row number must be between 0 and 4 (i.e. zero indexed).
+
+
+
+
+
+
+
+Select
+
+-
+class discord.ui.Select(*, custom_id=..., placeholder=None, min_values=1, max_values=1, options=..., disabled=False, row=None)
+Represents a UI select menu.
+This is usually represented as a drop down menu.
+In order to get the selected items that the user has chosen, use Select.values
.
+
+
+- Parameters
+
+custom_id (str
) – The ID of the select menu that gets received during an interaction.
+If not given then one is generated for you.
+placeholder (Optional[str
]) – The placeholder text that is shown if nothing is selected, if any.
+min_values (int
) – The minimum number of items that must be chosen for this select menu.
+Defaults to 1 and must be between 1 and 25.
+max_values (int
) – The maximum number of items that must be chosen for this select menu.
+Defaults to 1 and must be between 1 and 25.
+options (List[discord.SelectOption
]) – A list of options that can be selected in this menu.
+disabled (bool
) – Whether the select is disabled or not.
+row (Optional[int
]) – The relative row this select menu belongs to. A Discord component can only have 5
+rows. By default, items are arranged automatically into those 5 rows. If you’d
+like to control the relative positioning of the row then passing an index is advised.
+For example, row=1 will show up before row=2. Defaults to None
, which is automatic
+ordering. The row number must be between 0 and 4 (i.e. zero indexed).
+
+
+
+
+-
+property custom_id
+The ID of the select menu that gets received during an interaction.
+
+- Type
+str
+
+
+
+
+
+-
+property placeholder
+The placeholder text that is shown if nothing is selected, if any.
+
+- Type
+Optional[str
]
+
+
+
+
+
+-
+property min_values
+The minimum number of items that must be chosen for this select menu.
+
+- Type
+int
+
+
+
+
+
+-
+property max_values
+The maximum number of items that must be chosen for this select menu.
+
+- Type
+int
+
+
+
+
+
+-
+property options
+A list of options that can be selected in this menu.
+
+- Type
+List[discord.SelectOption
]
+
+
+
+
+
+-
+add_option(*, label, value=..., description=None, emoji=None, default=False)
+Adds an option to the select menu.
+To append a pre-existing discord.SelectOption
use the
+append_option()
method instead.
+
+- Parameters
+
+label (str
) – The label of the option. This is displayed to users.
+Can only be up to 100 characters.
+value (str
) – The value of the option. This is not displayed to users.
+If not given, defaults to the label. Can only be up to 100 characters.
+description (Optional[str
]) – An additional description of the option, if any.
+Can only be up to 100 characters.
+emoji (Optional[Union[str
, Emoji
, PartialEmoji
]]) – The emoji of the option, if available. This can either be a string representing
+the custom or unicode emoji or an instance of PartialEmoji
or Emoji
.
+default (bool
) – Whether this option is selected by default.
+
+
+- Raises
+ValueError – The number of options exceeds 25.
+
+
+
+
+
+-
+append_option(option)
+Appends an option to the select menu.
+
+- Parameters
+option (discord.SelectOption
) – The option to append to the select menu.
+
+- Raises
+ValueError – The number of options exceeds 25.
+
+
+
+
+
+-
+property disabled
+Whether the select is disabled or not.
+
+- Type
+bool
+
+
+
+
+
+-
+property values
+A list of values that have been selected by the user.
+
+- Type
+List[str
]
+
+
+
+
+
+-
+await callback(interaction)
+This function is a coroutine.
+The callback associated with this UI item.
+This can be overriden by subclasses.
+
+- Parameters
+interaction (Interaction
) – The interaction that triggered this UI item.
+
+
+
+
+
+-
+property view
+The underlying view for this item.
+
+- Type
+Optional[View
]
+
+
+
+
+
+
+
+-
+discord.ui.select(*, placeholder=None, custom_id=..., min_values=1, max_values=1, options=..., disabled=False, row=None)
+A decorator that attaches a select menu to a component.
+The function being decorated should have three parameters, self
representing
+the discord.ui.View
, the discord.ui.Select
being pressed and
+the discord.Interaction
you receive.
+In order to get the selected items that the user has chosen within the callback
+use Select.values
.
+
+- Parameters
+
+placeholder (Optional[str
]) – The placeholder text that is shown if nothing is selected, if any.
+custom_id (str
) – The ID of the select menu that gets received during an interaction.
+It is recommended not to set this parameter to prevent conflicts.
+row (Optional[int
]) – The relative row this select menu belongs to. A Discord component can only have 5
+rows. By default, items are arranged automatically into those 5 rows. If you’d
+like to control the relative positioning of the row then passing an index is advised.
+For example, row=1 will show up before row=2. Defaults to None
, which is automatic
+ordering. The row number must be between 0 and 4 (i.e. zero indexed).
+min_values (int
) – The minimum number of items that must be chosen for this select menu.
+Defaults to 1 and must be between 1 and 25.
+max_values (int
) – The maximum number of items that must be chosen for this select menu.
+Defaults to 1 and must be between 1 and 25.
+options (List[discord.SelectOption
]) – A list of options that can be selected in this menu.
+disabled (bool
) – Whether the select is disabled or not. Defaults to False
.
+
+
+
+
+
+
+
+
+Exceptions
+The following exceptions are thrown by the library.
+
+-
+exception discord.DiscordException
+Base exception class for discord.py
+Ideally speaking, this could be caught to handle any exceptions raised from this library.
+
+
+
+-
+exception discord.ClientException
+Exception that’s raised when an operation in the Client
fails.
+These are usually for exceptions that happened due to user input.
+
+
+
+-
+exception discord.LoginFailure
+Exception that’s raised when the Client.login()
function
+fails to log you in from improper credentials or some other misc.
+failure.
+
+
+
+-
+exception discord.NoMoreItems
+Exception that is raised when an async iteration operation has no more items.
+
+
+
+-
+exception discord.HTTPException(response, message)
+Exception that’s raised when an HTTP request operation fails.
+
+-
+response
+The response of the failed HTTP request. This is an
+instance of aiohttp.ClientResponse
. In some cases
+this could also be a requests.Response
.
+
+- Type
+aiohttp.ClientResponse
+
+
+
+
+
+-
+text
+The text of the error. Could be an empty string.
+
+- Type
+str
+
+
+
+
+
+-
+status
+The status code of the HTTP request.
+
+- Type
+int
+
+
+
+
+
+-
+code
+The Discord specific error code for the failure.
+
+- Type
+int
+
+
+
+
+
+
+
+-
+exception discord.Forbidden(response, message)
+Exception that’s raised for when status code 403 occurs.
+Subclass of HTTPException
+
+
+
+-
+exception discord.NotFound(response, message)
+Exception that’s raised for when status code 404 occurs.
+Subclass of HTTPException
+
+
+
+-
+exception discord.DiscordServerError(response, message)
+Exception that’s raised for when a 500 range status code occurs.
+Subclass of HTTPException
.
+
+
+
+
+-
+exception discord.InvalidData
+Exception that’s raised when the library encounters unknown
+or invalid data from Discord.
+
+
+
+-
+exception discord.InvalidArgument
+Exception that’s raised when an argument to a function
+is invalid some way (e.g. wrong value or wrong type).
+This could be considered the analogous of ValueError
and
+TypeError
except inherited from ClientException
and thus
+DiscordException
.
+
+
+
+-
+exception discord.GatewayNotFound
+An exception that is raised when the gateway for Discord could not be found
+
+
+
+-
+exception discord.ConnectionClosed(socket, *, shard_id, code=None)
+Exception that’s raised when the gateway connection is
+closed for reasons that could not be handled internally.
+
+-
+code
+The close code of the websocket.
+
+- Type
+int
+
+
+
+
+
+-
+reason
+The reason provided for the closure.
+
+- Type
+str
+
+
+
+
+
+-
+shard_id
+The shard ID that got closed if applicable.
+
+- Type
+Optional[int
]
+
+
+
+
+
+
+
+-
+exception discord.PrivilegedIntentsRequired(shard_id)
+Exception that’s raised when the gateway is requesting privileged intents
+but they’re not ticked in the developer page yet.
+Go to https://discord.com/developers/applications/ and enable the intents
+that are required. Currently these are as follows:
+
+
+-
+shard_id
+The shard ID that got closed if applicable.
+
+- Type
+Optional[int
]
+
+
+
+
+
+
+
+-
+exception discord.InteractionResponded(interaction)
+Exception that’s raised when sending another interaction response using
+InteractionResponse
when one has already been done before.
+An interaction can only respond once.
+
+
+-
+interaction
+The interaction that’s already been responded to.
+
+- Type
+Interaction
+
+
+
+
+
+
+
+-
+exception discord.opus.OpusError(code)
+An exception that is thrown for libopus related errors.
+
+-
+code
+The error code returned.
+
+- Type
+int
+
+
+
+
+
+
+
+-
+exception discord.opus.OpusNotLoaded
+An exception that is thrown for when libopus is not loaded.
+
+
+
+
+
+
+
+