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.
- class discord.Object(id)[source]#
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.
- Parameters:
id (
Union
[SupportsInt
,str
,bytes
,bytearray
]) –
- property created_at#
Returns the snowflake’s creation time in UTC.
- property worker_id#
Returns the worker id that made the snowflake.
- property process_id#
Returns the process id that made the snowflake.
- property increment_id#
Returns the increment id that made the snowflake.
- class discord.SelectOption(*, label, value=..., description=None, emoji=None, default=False)[source]#
Represents a
discord.SelectMenu
’s option.These can be created by users.
New in version 2.0.
- label#
The label of the option. This is displayed to users. Can only be up to 100 characters.
- Type:
- 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:
- description#
An additional description of the option, if any. Can only be up to 100 characters.
- Type:
Optional[
str
]
- Parameters:
- property emoji#
The emoji of the option, if available.
- auto_moderation_configuration
- auto_moderation_execution
- bans
- dm_messages
- dm_polls
- dm_reactions
- dm_typing
- emojis
- emojis_and_stickers
- guild_messages
- guild_polls
- guild_reactions
- guild_typing
- guilds
- integrations
- invites
- members
- message_content
- messages
- moderation
- polls
- presences
- reactions
- scheduled_events
- typing
- value
- voice_states
- webhooks
- clsIntents.all
- clsIntents.default
- clsIntents.none
- class discord.Intents(**kwargs)[source]#
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 ofClient
.New in version 1.5.
- x == y
Checks if two flags are equal.
- x != y
Checks if two flags are not equal.
- x + y
Adds two flags together. Equivalent to
x | y
.
- x - y
Subtracts two flags from each other.
- x | y
Returns the union of two flags. Equivalent to
x + y
.
- x & y
Returns the intersection of two flags.
- ~x
Returns the inverse of a flag.
- 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:
- Parameters:
kwargs (
bool
) –
- classmethod default()[source]#
A factory method that creates a
Intents
with everything enabled exceptpresences
,members
, andmessage_content
.
- guilds[source]#
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:
Guild
and all its attributes.
It is highly advisable to leave this intent enabled for your bot to function.
- Type:
- members[source]#
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
This intent is privileged, meaning that bots in over 100 guilds that require this intent would need to request this intent on the Developer Portal.
- Type:
- bans[source]#
Alias of
moderation
.Changed in version 2.5: Changed to an alias.
- Type:
- moderation[source]#
Whether guild moderation 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:
- emojis[source]#
Alias of
emojis_and_stickers
.Changed in version 2.0: Changed to an alias.
- Type:
- emojis_and_stickers[source]#
Whether guild emoji and sticker related events are enabled.
New in version 2.0.
This corresponds to the following events:
This also corresponds to the following attributes and classes in terms of cache:
- Type:
- integrations[source]#
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:
- webhooks[source]#
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:
- invites[source]#
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:
- voice_states[source]#
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:
- presences[source]#
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
This intent is privileged, meaning that bots in over 100 guilds that require this intent would need to request this intent on the Developer Portal.
- Type:
- messages[source]#
Whether guild and direct message related events are enabled.
This is a shortcut to set or get both
guild_messages
anddm_messages
.This corresponds to the following events:
on_message()
(both guilds and DMs)on_message_edit()
(both guilds and DMs)on_message_delete()
(both guilds and DMs)on_raw_message_delete()
(both guilds and DMs)on_raw_message_edit()
(both guilds and DMs)
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:
on_reaction_add()
(both guilds and DMs)on_reaction_remove()
(both guilds and DMs)on_reaction_clear()
(both guilds and DMs)
Note
message_content
is required to receive the actual content of guild messages.- Type:
- guild_messages[source]#
Whether guild message related events are enabled.
See also
dm_messages
for DMs ormessages
for both.This corresponds to the following events:
on_message()
(only for guilds)on_message_edit()
(only for guilds)on_message_delete()
(only for guilds)on_raw_message_delete()
(only for guilds)on_raw_message_edit()
(only for guilds)
This also corresponds to the following attributes and classes in terms of cache:
Client.cached_messages
(only for guilds)Client.get_message()
(only for guilds)Client.polls
(only for guilds)Client.get_poll()
(only for guilds)
Note that due to an implicit relationship this also corresponds to the following events:
on_reaction_add()
(only for guilds)on_reaction_remove()
(only for guilds)on_reaction_clear()
(only for guilds)
Without the
message_content
intent enabled, the following fields are either an empty string or empty array:For more information go to the message content intent documentation.
- Type:
- dm_messages[source]#
Whether direct message related events are enabled.
See also
guild_messages
for guilds ormessages
for both.This corresponds to the following events:
on_message()
(only for DMs)on_message_edit()
(only for DMs)on_message_delete()
(only for DMs)on_raw_message_delete()
(only for DMs)on_raw_message_edit()
(only for DMs)
This also corresponds to the following attributes and classes in terms of cache:
Client.cached_messages
(only for DMs)Client.get_message()
(only for DMs)Client.polls
(only for DMs)Client.get_poll()
(only for DMs)
Note that due to an implicit relationship this also corresponds to the following events:
on_reaction_add()
(only for DMs)on_reaction_remove()
(only for DMs)on_reaction_clear()
(only for DMs)
- Type:
- reactions[source]#
Whether guild and direct message reaction related events are enabled.
This is a shortcut to set or get both
guild_reactions
anddm_reactions
.This corresponds to the following events:
on_reaction_add()
(both guilds and DMs)on_reaction_remove()
(both guilds and DMs)on_reaction_clear()
(both guilds and DMs)on_raw_reaction_add()
(both guilds and DMs)on_raw_reaction_remove()
(both guilds and DMs)on_raw_reaction_clear()
(both guilds and DMs)
This also corresponds to the following attributes and classes in terms of cache:
Message.reactions
(both guild and DM messages)
- Type:
- guild_reactions[source]#
Whether guild message reaction related events are enabled.
See also
dm_reactions
for DMs orreactions
for both.This corresponds to the following events:
on_reaction_add()
(only for guilds)on_reaction_remove()
(only for guilds)on_reaction_clear()
(only for guilds)on_raw_reaction_add()
(only for guilds)on_raw_reaction_remove()
(only for guilds)on_raw_reaction_clear()
(only for guilds)
This also corresponds to the following attributes and classes in terms of cache:
Message.reactions
(only for guild messages)
- Type:
- dm_reactions[source]#
Whether direct message reaction related events are enabled.
See also
guild_reactions
for guilds orreactions
for both.This corresponds to the following events:
on_reaction_add()
(only for DMs)on_reaction_remove()
(only for DMs)on_reaction_clear()
(only for DMs)on_raw_reaction_add()
(only for DMs)on_raw_reaction_remove()
(only for DMs)on_raw_reaction_clear()
(only for DMs)
This also corresponds to the following attributes and classes in terms of cache:
Message.reactions
(only for DM messages)
- Type:
- typing[source]#
Whether guild and direct message typing related events are enabled.
This is a shortcut to set or get both
guild_typing
anddm_typing
.This corresponds to the following events:
on_typing()
(both guilds and DMs)
This does not correspond to any attributes or classes in the library in terms of cache.
- Type:
- guild_typing[source]#
Whether guild and direct message typing related events are enabled.
See also
dm_typing
for DMs ortyping
for both.This corresponds to the following events:
on_typing()
(only for guilds)
This does not correspond to any attributes or classes in the library in terms of cache.
- Type:
- dm_typing[source]#
Whether guild and direct message typing related events are enabled.
See also
guild_typing
for guilds ortyping
for both.This corresponds to the following events:
on_typing()
(only for DMs)
This does not correspond to any attributes or classes in the library in terms of cache.
- Type:
- message_content[source]#
Whether the bot will receive message content in guild messages.
This corresponds to the following attributes:
These attributes will still be available for messages received from interactions, the bot’s own messages, messages the bot was mentioned in, and DMs.
New in version 2.0.
Note
As of September 2022 using this intent requires opting in explicitly via the Developer Portal to receive the actual content of the guild messages. This intent is privileged, meaning that bots in over 100 guilds that require this intent would need to request this intent on the Developer Portal. See https://support-dev.discord.com/hc/en-us/articles/4404772028055 for more information.
- Type:
- scheduled_events[source]#
Whether “scheduled event” related events are enabled.
This corresponds to the following events:
This also corresponds to the following attributes and classes in terms of cache:
- Type:
- auto_moderation_configuration[source]#
Whether guild auto moderation configuration events are enabled.
This corresponds to the following events:
- Type:
- auto_moderation_execution[source]#
Whether guild auto moderation execution events are enabled.
This corresponds to the following events:
- Type:
- guild_polls[source]#
Whether poll-related events in guilds are enabled.
See also
dm_polls
for DMs orpolls
for both.This corresponds to the following events:
on_poll_vote_add()
(only for guilds)on_poll_vote_remove()
(only for guilds)on_raw_poll_vote_add()
(only for guilds)on_raw_poll_vote_remove()
(only for guilds)
This also corresponds to the following attributes and classes in terms of cache:
PollAnswer.count
(only for guild polls)PollResults.answer_counts
(only for guild polls)
- Type:
- dm_polls[source]#
Whether poll-related events in direct messages are enabled.
See also
guild_polls
for guilds orpolls
for both.This corresponds to the following events:
on_poll_vote_add()
(only for DMs)on_poll_vote_remove()
(only for DMs)on_raw_poll_vote_add()
(only for DMs)on_raw_poll_vote_remove()
(only for DMs)
This also corresponds to the following attributes and classes in terms of cache:
PollAnswer.count
(only for DM polls)PollResults.answer_counts
(only for DM polls)
- Type:
- polls[source]#
Whether poll-related events in guilds and direct messages are enabled.
This is a shortcut to set or get both
guild_polls
anddm_polls
.This corresponds to the following events:
on_poll_vote_add()
(both guilds and DMs)on_poll_vote_remove()
(both guilds and DMs)on_raw_poll_vote_add()
(both guilds and DMs)on_raw_poll_vote_remove()
(both guilds and DMs)
This also corresponds to the following attributes and classes in terms of cache:
PollAnswer.count
(both guild and DM polls)PollResults.answer_counts
(both guild and DM polls)
- Type:
- asyncconnect
- asyncdisconnect
- defis_closed
- defis_ws_ratelimited
- asyncreconnect
- class discord.ShardInfo(parent, shard_count)[source]#
A class that gives information and control over a specific shard.
You can retrieve this object via
AutoShardedClient.get_shard()
orAutoShardedClient.shards
.New in version 1.4.
- shard_count#
The shard count for this cluster. If this is
None
then the bot has not started yet.- Type:
Optional[
int
]
- Parameters:
parent (Shard) –
shard_count (int | None) –
- await disconnect()[source]#
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.
- Return type:
- await reconnect()[source]#
This function is a coroutine.
Disconnects and then connects the shard again.
- Return type:
- await connect()[source]#
This function is a coroutine.
Connects a shard. If the shard is already connected this does nothing.
- Return type:
- property latency#
Measures latency between a HEARTBEAT and a HEARTBEAT_ACK in seconds for this shard.
Message#
- class discord.AllowedMentions(*, everyone=True, users=True, roles=True, replied_user=True)[source]#
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 viaabc.Messageable.send()
for more fine-grained control.- users#
Controls the users being mentioned. If
True
(the default) then users are mentioned based on the message content. IfFalse
then users are not mentioned at all. If a list ofabc.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. IfFalse
then roles are not mentioned at all. If a list ofabc.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
.New in version 1.6.
- Type:
- classmethod all()[source]#
A factory method that returns a
AllowedMentions
with all fields explicitly set toTrue
New in version 1.5.
- classmethod none()[source]#
A factory method that returns a
AllowedMentions
with all fields set toFalse
New in version 1.5.
- class discord.MessageReference(*, message_id, channel_id, guild_id=None, fail_if_not_exists=True)[source]#
Represents a reference to a
Message
.New in version 1.5.
Changed in version 1.6: This class can now be constructed by users.
- 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.New in version 1.7.
- Type:
- 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 typeDeletedReferencedMessage
.Currently, this is mainly the replied to message when a user replies to a message.
New in version 1.6.
- Type:
Optional[Union[
Message
,DeletedReferencedMessage
]]
- Parameters:
- classmethod from_message(message, *, fail_if_not_exists=True)[source]#
Creates a
MessageReference
from an existingMessage
.New in version 1.6.
- 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.New in version 1.7.
- Returns:
A reference to the message.
- Return type:
- property cached_message#
The cached message, if found in the internal message cache.
- property jump_url#
Returns a URL that allows the client to jump to the referenced message.
New in version 1.7.
- class discord.MessageCall(state, data)[source]#
Represents information about a call in a private channel.
New in version 2.6.
- Parameters:
state (
ConnectionState
) –data (
MessageCall
) –
- property participants#
A list of
User
that participated in this call.If a user is not found in the client’s cache, then it will be returned as an
Object
.
- property ended_at#
An aware timestamp of when the call ended.
- asyncadd_reaction
- asyncclear_reaction
- asyncclear_reactions
- asyncdelete
- asyncedit
- asyncend_poll
- asyncfetch
- asyncpin
- asyncpublish
- asyncremove_reaction
- asyncreply
- defto_reference
- asyncunpin
- class discord.PartialMessage(*, channel, id)[source]#
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.
New in version 1.6.
- 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.
- channel#
The channel associated with this partial message.
- Type:
Union[
TextChannel
,Thread
,DMChannel
,VoiceChannel
,StageChannel
,PartialMessageable
]
- Parameters:
channel (
Union
[TextChannel
,VoiceChannel
,StageChannel
,Thread
,DMChannel
,PartialMessageable
]) –id (
int
) –
- property jump_url#
Returns a URL that allows the client to jump to this message.
- await delete(*, delay=None, reason=None)#
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.- Parameters:
- Raises:
Forbidden – You do not have proper permissions to delete the message.
NotFound – The message was deleted already
HTTPException – Deleting the message failed.
- Return type:
None
- 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:
Forbidden – You do not have the proper permissions to publish this message.
HTTPException – Publishing the message failed.
- Return type:
- 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.
New in version 1.4.
- 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.
- Return type:
None
- 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.
New in version 1.4.
- 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.
- Return type:
None
- 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, theadd_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.
- Return type:
- 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 themanage_messages
permission is needed.The
member
parameter must represent a member and meet theabc.Snowflake
abc.- Parameters:
emoji (Union[
Emoji
,Reaction
,PartialEmoji
,str
]) – The emoji to remove.member (
abc.Snowflake
) – The member for 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 member or emoji you specified was not found.
InvalidArgument – The emoji parameter is invalid.
- Return type:
None
- 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.New in version 1.3.
- 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.
- Return type:
None
- 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:
HTTPException – Removing the reactions failed.
Forbidden – You do not have the proper permissions to remove all the reactions.
- Return type:
- await reply(content=None, **kwargs)#
This function is a coroutine.
A shortcut method to
abc.Messageable.send()
to reply to theMessage
.New in version 1.6.
- Returns:
The message that was sent.
- Return type:
- 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 bothfile
andfiles
.
- Parameters:
content (str | None) –
- to_reference(*, fail_if_not_exists=True)#
Creates a
MessageReference
from the current message.New in version 1.6.
- 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.New in version 1.7.
- Returns:
The reference to this message.
- Return type:
- property created_at#
The partial message’s creation time in UTC.
- guild#
The guild that the partial message belongs to, if applicable.
- await fetch()[source]#
This function is a coroutine.
Fetches the partial message to a full
Message
.- Returns:
The full message.
- Return type:
- Raises:
NotFound – The message was not found.
Forbidden – You do not have the permissions required to get a message.
HTTPException – Retrieving the message failed.
- await edit(**fields)[source]#
This function is a coroutine.
Edits the message.
Changed in version 1.7:
discord.Message
is returned instead ofNone
if an edit took place.- Parameters:
content (Optional[
str
]) – The new content to replace the message with. Could beNone
to remove the content.embed (Optional[
Embed
]) – The new embed to replace the original with. Could beNone
to remove the embed.embeds (Optional[List[
Embed
]]) –A list of embeds to upload. Must be a maximum of 10.
New in version 2.0.
suppress (
bool
) – Whether to suppress embeds for the message. This removes all the embeds if set toTrue
. If set toFalse
this brings the embeds back if they were suppressed. Using this parameter requiresmanage_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 withallowed_mentions
. The merging behaviour only overrides attributes that have been explicitly passed to the object, otherwise it uses the attributes set inallowed_mentions
. If no object is passed at all then the defaults given byallowed_mentions
are used instead.view (Optional[
View
]) –The updated view to update this message with. If
None
is passed then the view is removed.New in version 2.0.
fields (Any) –
- Returns:
The message that was edited.
- Return type:
Optional[
Message
]- 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.
- await end_poll()[source]#
This function is a coroutine.
Immediately ends the poll associated with this message. Only doable by the poll’s owner.
New in version 2.6.
- Returns:
The updated message.
- Return type:
- Raises:
Forbidden – You do not have permissions to end this poll.
HTTPException – Ending this poll failed.
- class discord.File(fp, filename=None, *, description=None, spoiler=False)[source]#
A parameter object used for
abc.Messageable.send()
for sending file objects.Note
File objects are single use and are not meant to be reused in multiple
abc.Messageable.send()
s.- 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 iffp
is a string then thefilename
will default to the string given.- Type:
Optional[
str
]
- description#
The description of a file, used by Discord to display alternative text on images.
- Type:
Optional[
str
]
- Parameters:
fp (str | bytes | os.PathLike | io.BufferedIOBase) –
filename (str | None) –
description (str | None) –
spoiler (bool) –
Embed#
- clsEmbed.from_dict
- defadd_field
- defappend_field
- defclear_fields
- defcopy
- definsert_field_at
- defremove_author
- defremove_field
- defremove_footer
- defremove_image
- defremove_thumbnail
- defset_author
- defset_field_at
- defset_footer
- defset_image
- defset_thumbnail
- defto_dict
- class discord.Embed(*, colour=None, color=None, title=None, type='rich', url=None, description=None, timestamp=None, fields=None, author=None, footer=None, image=None, thumbnail=None)[source]#
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.
New in version 2.0.
For ease of use, all parameters that expect a
str
are implicitly cast tostr
for you.- title#
The title of the embed. This can be set during initialisation. Must be 256 characters or fewer.
- Type:
- 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:
- description#
The description of the embed. This can be set during initialisation. Must be 4096 characters or fewer.
- Type:
- 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:
- colour#
The colour code of the embed. Aliased to
color
as well. This can be set during initialisation.
- Parameters:
title (Any | None) –
type (EmbedType) –
url (Any | None) –
description (Any | None) –
timestamp (datetime.datetime | None) –
fields (list[EmbedField] | None) –
author (EmbedAuthor | None) –
footer (EmbedFooter | None) –
image (str | EmbedMedia | None) –
thumbnail (str | EmbedMedia | None) –
- classmethod from_dict(data)[source]#
Converts a
dict
to aEmbed
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.
Returns an
EmbedFooter
denoting the footer contents.See
set_footer()
for possible values you can access.If the footer is not set then None is returned.
Sets the footer for the embed content.
This function returns the class instance to allow for fluent-style chaining.
Clears embed’s footer information.
This function returns the class instance to allow for fluent-style chaining.
New in version 2.0.
- property image#
Returns an
EmbedMedia
denoting the image contents.Attributes you can access are:
url
proxy_url
width
height
If the image is not set then None is returned.
- set_image(*, url)[source]#
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 None removes the image.
- Parameters:
url (
str
) – The source URL for the image. Only HTTP(S) is supported.self (E) –
- Return type:
E
- remove_image()[source]#
Removes the embed’s image.
This function returns the class instance to allow for fluent-style chaining.
New in version 2.0.
- property thumbnail#
Returns an
EmbedMedia
denoting the thumbnail contents.Attributes you can access are:
url
proxy_url
width
height
If the thumbnail is not set then None is returned.
- set_thumbnail(*, url)[source]#
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 None removes the thumbnail.
- Parameters:
url (
str
) – The source URL for the thumbnail. Only HTTP(S) is supported.self (E) –
- Return type:
E
- remove_thumbnail()[source]#
Removes the embed’s thumbnail.
This function returns the class instance to allow for fluent-style chaining.
New in version 2.0.
- property video#
Returns an
EmbedMedia
denoting the video contents.Attributes include:
url
for the video URL.height
for the video height.width
for the video width.
If the video is not set then None is returned.
- property provider#
Returns an
EmbedProvider
denoting the provider contents.The only attributes that might be accessed are
name
andurl
.If the provider is not set then None is returned.
- property author#
Returns an
EmbedAuthor
denoting the author contents.See
set_author()
for possible values you can access.If the author is not set then None is returned.
- set_author(*, name, url=None, icon_url=None)[source]#
Sets the author for the embed content.
This function returns the class instance to allow for fluent-style chaining.
- remove_author()[source]#
Clears embed’s author information.
This function returns the class instance to allow for fluent-style chaining.
New in version 1.4.
- property fields#
Returns a
list
ofEmbedField
objects denoting the field contents.See
add_field()
for possible values you can access.If the attribute has no value then
None
is returned.
- append_field(field)[source]#
Appends an
EmbedField
object to the embed.New in version 2.0.
- Parameters:
field (
EmbedField
) – The field to add.- Return type:
- add_field(*, name, value, inline=True)[source]#
Adds a field to the embed object.
This function returns the class instance to allow for fluent-style chaining. There must be 25 fields or fewer.
- insert_field_at(index, *, name, value, inline=True)[source]#
Inserts a field before a specified index to the embed.
This function returns the class instance to allow for fluent-style chaining. There must be 25 fields or fewer.
New in version 1.2.
- Parameters:
- Return type:
TypeVar
(E
, bound= Embed)
- remove_field(index)[source]#
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.
- set_field_at(index, *, name, value, inline=True)[source]#
Modifies a field to the embed object.
The index must point to a valid pre-existing field. There must be 25 fields or fewer.
This function returns the class instance to allow for fluent-style chaining.
- Parameters:
- Raises:
IndexError – An invalid index was provided.
- Return type:
TypeVar
(E
, bound= Embed)
- clsEmbedField.from_dict
- defto_dict
- class discord.EmbedField(name, value, inline=False)[source]#
Represents a field on the
Embed
object.New in version 2.0.
- classmethod from_dict(data)[source]#
Converts a
dict
to aEmbedField
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 EmbedField object.- Return type:
- class discord.EmbedAuthor(name, url=None, icon_url=None)[source]#
Represents the author on the
Embed
object.New in version 2.5.
- proxy_icon_url#
The proxied URL of the author icon image. This can’t be set directly, it is set by Discord.
- Type:
Represents the footer on the
Embed
object.New in version 2.5.
The text inside the footer.
- Type:
The URL of the footer icon image.
- Type:
The proxied URL of the footer icon image. This can’t be set directly, it is set by Discord.
- Type:
Poll#
- defadd_answer
- asyncend
- defget_answer
- defhas_ended
- deftotal_votes
- class discord.Poll(question, *, answers=None, duration=24, allow_multiselect=False, layout_type=<PollLayoutType.default: 1>)[source]#
Represents a Poll. Polls are sent in regular messages, and you must have
send_polls
to send them.New in version 2.6.
- question#
The poll’s question media, or a
str
representing the question text. Question text can be up to 300 characters.
- answers#
A list of the poll’s answers. A maximum of 10 answers can be set.
- Type:
Optional[List[
PollAnswer
]]
- duration#
The number of hours until this poll expires. Users must specify this when creating a poll, but existing polls return
expiry
instead. Defaults to 24.- Type:
- layout_type#
The poll’s layout type. Only one exists at the moment.
- Type:
- results#
The results of this poll recieved from Discord. If
None
, this should be considered “unknown” rather than “no” results.- Type:
Optional[
PollResults
]
- Parameters:
answers (list[PollAnswer] | None) –
duration (int | None) –
allow_multiselect (bool | None) –
layout_type (PollLayoutType | None) –
- expiry#
An aware datetime object that specifies the date and time in UTC when the poll will end.
- has_ended()[source]#
Checks if this poll has completely ended. Shortcut for
PollResults.is_finalized
, if available.
- total_votes()[source]#
Shortcut for
PollResults.total_votes()
This may not be precise ifis_finalized
isFalse
.
- get_answer(id)[source]#
Get a poll answer by ID.
- Parameters:
id (
int
) – The ID to search for.- Returns:
The returned answer or
None
if not found.- Return type:
Optional[
PollAnswer
]
- add_answer(text, *, emoji=None)[source]#
Add an answer to this poll.
This function returns the class instance to allow for fluent-style chaining.
- Parameters:
text (
str
) – The answer text. Maximum 55 characters.emoji (Optional[Union[
Emoji
,PartialEmoji
,str
]]) – The answer’s emoji.
- Raises:
ValueError – The poll already has 10 answers or
text
exceeds the character length.RuntimeError – You cannot add an answer to an existing poll.
- Return type:
Examples
Regular usage
poll = Poll( question=PollMedia("What's your favorite color?"), answers=[PollAnswer("Red", "❤")] duration=24, allow_multiselect=False ) poll.add_answer(text="Green", emoji="💚") poll.add_answer(text="Blue", emoji="💙")
Chaining style
poll = Poll("What's your favorite color?").add_answer("Red", emoji="❤").add_answer("Green").add_answer("Blue")
- await end()[source]#
Immediately ends this poll, if attached to a message. Only doable by the poll’s owner. Shortcut to
Message.end_poll()
- Returns:
The updated message.
- Return type:
- Raises:
Forbidden – You do not have permissions to end this poll.
HTTPException – Ending this poll failed.
RuntimeError – This poll wasn’t recieved from a message.
- class discord.PollMedia(text, emoji=None)[source]#
Represents a poll media object that supports both questions and answers.
New in version 2.6.
- text#
The question/answer text. May have up to 300 characters for questions and 55 characters for answers.
- Type:
- emoji#
The answer’s emoji.
- Type:
Optional[Union[
Emoji
,PartialEmoji
,str
]]
- Parameters:
text (str) –
emoji (Emoji | PartialEmoji | str | None) –
- class discord.PollAnswer(text, emoji=None)[source]#
Represents a poll answer object.
New in version 2.6.
- id#
The answer’s ID. It currently starts at
1
for the first answer, then goes up sequentially. It may not be reliable to depend on this.- Type:
- Parameters:
text (str) –
emoji (Emoji | PartialEmoji | str | None) –
- property text#
The answer’s text. Shortcut for
PollMedia.text
.
- property emoji#
The answer’s emoji. Shortcut for
PollMedia.emoji
.
- property count#
This answer’s vote count, if recieved from Discord.
- voters(*, limit=None, after=None)[source]#
Returns an
AsyncIterator
representing the users that have voted with this answer. Only works if this poll was recieved from Discord.The
after
parameter must represent a member and meet theabc.Snowflake
abc.- Parameters:
limit (Optional[
int
]) – The maximum number of results to return. If not provided, returns all the users who voted with this answer.after (Optional[
abc.Snowflake
]) – For pagination, answers are sorted by member.
- Yields:
Union[
User
,Member
] – The member (if retrievable) or the user that has voted with this answer. The case where it can be aMember
is in a guild message context. Sometimes it can be aUser
if the member has left the guild.- Raises:
HTTPException – Getting the voters for the answer failed.
RuntimeError – This poll wasn’t recieved from a message.
- Return type:
VoteIterator
Examples
Usage
async for user in answer.users(): print(f'{user} voted **{answer.text}**!')
Flattening into a list:
users = await answer.users().flatten() # users is now a list of User... winner = random.choice(users) await channel.send(f'{winner} has won the raffle.')
- class discord.PollAnswerCount(data)[source]#
Represents a poll answer count object.
New in version 2.6.
- id#
The answer’s ID. It currently starts at
1
for the first answer, then goes up sequentially. It may not be reliable to depend on this.- Type:
- Parameters:
data (
PollAnswerCount
) –
- deftotal_votes
- class discord.PollResults(data)[source]#
Represents a poll results object.
New in version 2.6.
- is_finalized#
Whether the poll has ended and all answer counts have been precisely tallied.
- Type:
- answer_counts#
A list of counts for each answer. If an answer isn’t included, it has no votes.
- Type:
List[
PollAnswerCount
]
- Parameters:
data (
PollResults
) –
- total_votes()[source]#
Get the total number of votes across all answers. This may not be accurate if
is_finalized
isFalse
.- Returns:
The total number of votes on this poll.
- Return type:
Flags#
- class discord.MemberCacheFlags(**kwargs)[source]#
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 inClient
.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 clean up 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.
New in version 1.5.
- x == y
Checks if two flags are equal.
- x != y
Checks if two flags are not equal.
- x + y
Adds two flags together. Equivalent to
x | y
.
- x - y
Subtracts two flags from each other.
- x | y
Returns the union of two flags. Equivalent to
x + y
.
- x & y
Returns the intersection of two flags.
- ~x
Returns the inverse of a flag.
- 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:
- Parameters:
kwargs (
bool
) –
- classmethod all()[source]#
A factory method that creates a
MemberCacheFlags
with everything enabled.
- classmethod none()[source]#
A factory method that creates a
MemberCacheFlags
with everything disabled.
- voice[source]#
Whether to cache members that are in voice.
This requires
Intents.voice_states
.Members that leave voice are no longer cached.
- Type:
- joined[source]#
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:
- interaction[source]#
Whether to cache members obtained through interactions.
This includes members received through
discord.Interaction
anddiscord.Option
.- Type:
- classmethod from_intents(intents)[source]#
A factory method that creates a
MemberCacheFlags
based on the currently selectedIntents
.- Parameters:
intents (
Intents
) – The intents to select from.- Returns:
The resulting member cache flags.
- Return type:
- active
- app_commands_badge
- application_auto_moderation_rule_create_badge
- embedded
- gateway_guild_members
- gateway_guild_members_limited
- gateway_message_content
- gateway_message_content_limited
- gateway_presence
- gateway_presence_limited
- group_dm_create
- managed_emoji
- rpc_has_connected
- value
- verification_pending_guild_limit
- class discord.ApplicationFlags(**kwargs)[source]#
Wraps up the Discord Application flags.
- x == y
Checks if two ApplicationFlags are equal.
- x != y
Checks if two ApplicationFlags are not equal.
- x + y
Adds two flags together. Equivalent to
x | y
.
- x - y
Subtracts two flags from each other.
- x | y
Returns the union of two flags. Equivalent to
x + y
.
- x & y
Returns the intersection of two flags.
- ~x
Returns the inverse of a flag.
- 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.
New in version 2.0.
- value#
The raw value. You should query flags via the properties rather than using this raw value.
- Type:
- Parameters:
kwargs (
bool
) –
- application_auto_moderation_rule_create_badge[source]#
Returns
True
if the application uses the Auto Moderation API.New in version 2.5.
- Type:
- gateway_presence[source]#
Returns
True
if the application is verified and is allowed to receive presence information over the gateway.- Type:
- gateway_presence_limited[source]#
Returns
True
if the application is allowed to receive limited presence information over the gateway.- Type:
- gateway_guild_members[source]#
Returns
True
if the application is verified and is allowed to receive guild members information over the gateway.- Type:
- gateway_guild_members_limited[source]#
Returns
True
if the application is allowed to receive limited guild members information over the gateway.- Type:
- verification_pending_guild_limit[source]#
Returns
True
if the application is currently pending verification and has hit the guild limit.- Type:
- gateway_message_content[source]#
Returns
True
if the application is allowed to read message contents in guilds.- Type:
- gateway_message_content_limited[source]#
Returns
True
if the application is currently pending verification and has hit the guild limit.- Type:
- class discord.SystemChannelFlags(**kwargs)[source]#
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.
- x + y
Adds two flags together. Equivalent to
x | y
.
- x - y
Subtracts two flags from each other.
- x | y
Returns the union of two flags. Equivalent to
x + y
.
- x & y
Returns the intersection of two flags.
- ~x
Returns the inverse of a flag.
- 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:
- Parameters:
kwargs (
bool
) –
- join_notifications[source]#
Returns
True
if the system channel is used for member join notifications.- Type:
Returns
True
if the system channel is used for “Nitro boosting” notifications.- Type:
- class discord.MessageFlags(**kwargs)[source]#
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.
- x + y
Adds two flags together. Equivalent to
x | y
.
- x - y
Subtracts two flags from each other.
- x | y
Returns the union of two flags. Equivalent to
x + y
.
- x & y
Returns the intersection of two flags.
- ~x
Returns the inverse of a flag.
- 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.
New in version 1.3.
- 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:
- Parameters:
kwargs (
bool
) –
- source_message_deleted[source]#
Returns
True
if the source message for this crosspost has been deleted.- Type:
- urgent[source]#
Returns
True
if the source message is an urgent message.An urgent message is one sent by Discord Trust and Safety.
- Type:
- has_thread[source]#
Returns
True
if the source message is associated with a thread.New in version 2.0.
- Type:
- loading[source]#
Returns
True
if the source message is deferred.The user sees a ‘thinking’ state.
New in version 2.0.
- Type:
- failed_to_mention_some_roles_in_thread[source]#
Returns
True
if some roles are failed to mention in a thread.New in version 2.0.
- Type:
- class discord.AttachmentFlags(**kwargs)[source]#
Wraps up the Discord Attachment flags.
- x == y
Checks if two flags are equal.
- x != y
Checks if two flags are not equal.
- x + y
Adds two flags together. Equivalent to
x | y
.
- x - y
Subtracts two flags from each other.
- x | y
Returns the union of two flags. Equivalent to
x + y
.
- x & y
Returns the intersection of two flags.
- ~x
Returns the inverse of a flag.
- 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.
New in version 2.5.
- value#
The raw value. You should query flags via the properties rather than using this raw value.
- Type:
- Parameters:
kwargs (
bool
) –
- active_developer
- bot_http_interactions
- bug_hunter
- bug_hunter_level_2
- discord_certified_moderator
- early_supporter
- early_verified_bot_developer
- hypesquad
- hypesquad_balance
- hypesquad_bravery
- hypesquad_brilliance
- partner
- premium_promo_dismissed
- staff
- system
- team_user
- value
- verified_bot
- verified_bot_developer
- defall
- class discord.PublicUserFlags(**kwargs)[source]#
Wraps up the Discord User Public flags.
- x == y
Checks if two PublicUserFlags are equal.
- x != y
Checks if two PublicUserFlags are not equal.
- x + y
Adds two flags together. Equivalent to
x | y
.
- x - y
Subtracts two flags from each other.
- x | y
Returns the union of two flags. Equivalent to
x + y
.
- x & y
Returns the intersection of two flags.
- ~x
Returns the inverse of a flag.
- 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.
New in version 1.4.
- 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:
- Parameters:
kwargs (
bool
) –
Returns
True
if the user is marked as dismissed Nitro promotion- Type:
- system[source]#
Returns
True
if the user is a system user (i.e. represents Discord officially).- Type:
- early_verified_bot_developer[source]#
An alias for
verified_bot_developer
.New in version 1.5.
- Type:
- discord_certified_moderator[source]#
Returns
True
if the user is a Discord Certified Moderator.New in version 2.0.
- Type:
- bot_http_interactions[source]#
Returns
True
if the bot has set an interactions endpoint url.New in version 2.0.
- Type:
- class discord.ChannelFlags(**kwargs)[source]#
Wraps up the Discord Channel flags.
- x == y
Checks if two ChannelFlags are equal.
- x != y
Checks if two ChannelFlags are not equal.
- x + y
Adds two flags together. Equivalent to
x | y
.
- x - y
Subtracts two flags from each other.
- x | y
Returns the union of two flags. Equivalent to
x + y
.
- x & y
Returns the intersection of two flags.
- ~x
Returns the inverse of a flag.
- 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.
New in version 2.0.
- value#
The raw value. You should query flags via the properties rather than using this raw value.
- Type:
- Parameters:
kwargs (
bool
) –
- require_tag[source]#
Returns
True
if a tag is required to be specified when creating a thread in aForumChannel
.New in version 2.2.
- Type:
- class discord.SKUFlags(**kwargs)[source]#
Wraps up the Discord SKU flags.
- x == y
Checks if two SKUFlags are equal.
- x != y
Checks if two SKUFlags are not equal.
- x + y
Adds two flags together. Equivalent to
x | y
.
- x - y
Subtracts two flags from each other.
- x | y
Returns the union of two flags. Equivalent to
x + y
.
- x & y
Returns the intersection of two flags.
- ~x
Returns the inverse of a flag.
- 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.
New in version 2.5.
- value#
The raw value. You should query flags via the properties rather than using this raw value.
- Type:
- Parameters:
kwargs (
bool
) –
- class discord.MemberFlags(**kwargs)[source]#
Wraps up the Discord Member flags.
- x == y
Checks if two MemberFlags are equal.
- x != y
Checks if two MemberFlags are not equal.
- x + y
Adds two flags together. Equivalent to
x | y
.
- x - y
Subtracts two flags from each other.
- x | y
Returns the union of two flags. Equivalent to
x + y
.
- x & y
Returns the intersection of two flags.
- ~x
Returns the inverse of a flag.
- 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.
New in version 2.6.
- value#
The raw value. You should query flags via the properties rather than using this raw value.
- Type:
- Parameters:
kwargs (
bool
) –
- class discord.RoleFlags(**kwargs)[source]#
Wraps up the Discord Role flags.
- x == y
Checks if two RoleFlags are equal.
- x != y
Checks if two RoleFlags are not equal.
- x + y
Adds two flags together. Equivalent to
x | y
.
- x - y
Subtracts two flags from each other.
- x | y
Returns the union of two flags. Equivalent to
x + y
.
- x & y
Returns the intersection of two flags.
- ~x
Returns the inverse of a flag.
- 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.
New in version 2.6.
- 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:
- Parameters:
kwargs (
bool
) –
- in_prompt[source]#
Returns
True
if the role is selectable in one of the guild’sOnboardingPrompt
.- Type:
Colour#
- clsColour.blue
- clsColour.blurple
- clsColour.brand_green
- clsColour.brand_red
- clsColour.dark_blue
- clsColour.dark_gold
- clsColour.dark_gray
- clsColour.dark_green
- clsColour.dark_grey
- clsColour.dark_magenta
- clsColour.dark_orange
- clsColour.dark_purple
- clsColour.dark_red
- clsColour.dark_teal
- clsColour.dark_theme
- clsColour.darker_gray
- clsColour.darker_grey
- clsColour.default
- clsColour.embed_background
- clsColour.from_hsv
- clsColour.from_rgb
- clsColour.fuchsia
- clsColour.gold
- clsColour.green
- clsColour.greyple
- clsColour.light_gray
- clsColour.light_grey
- clsColour.lighter_gray
- clsColour.lighter_grey
- clsColour.magenta
- clsColour.nitro_pink
- clsColour.og_blurple
- clsColour.orange
- clsColour.purple
- clsColour.random
- clsColour.red
- clsColour.teal
- clsColour.yellow
- defto_rgb
- class discord.Colour(value)[source]#
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.
- Parameters:
value (
int
) –
- property r#
Returns the red component of the colour.
- property g#
Returns the green component of the colour.
- property b#
Returns the blue component of the colour.
- classmethod random(*, seed=None)[source]#
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.
New in version 1.6.
- classmethod brand_green()[source]#
A factory method that returns a
Colour
with a value of0x57F287
.New in version 2.0.
- classmethod dark_magenta()[source]#
A factory method that returns a
Colour
with a value of0xad1457
.
- classmethod brand_red()[source]#
A factory method that returns a
Colour
with a value of0xED4245
.New in version 2.0.
- classmethod lighter_grey()[source]#
A factory method that returns a
Colour
with a value of0x95a5a6
.
- classmethod dark_theme()[source]#
A factory method that returns a
Colour
with a value of0x36393F
. This will appear transparent on Discord’s dark theme.New in version 1.5.
- classmethod fuchsia()[source]#
A factory method that returns a
Colour
with a value of0xEB459E
.New in version 2.0.
- classmethod yellow()[source]#
A factory method that returns a
Colour
with a value of0xFEE75C
.New in version 2.0.
- classmethod nitro_pink()[source]#
A factory method that returns a
Colour
with a value of0xf47fff
.New in version 2.0.
- classmethod embed_background(theme='dark')[source]#
A factory method that returns a
Colour
corresponding to the embed colours on discord clients, with a value of:0x2B2D31
(dark)0xEEEFF1
(light)0x000000
(amoled).
New in version 2.0.
- Parameters:
theme (
str
) – The theme colour to apply, must be one of “dark”, “light”, or “amoled”.
Activity#
- class discord.Activity(**kwargs)[source]#
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:
- type#
The type of activity currently being done.
- Type:
- timestamps#
A dictionary of timestamps. It contains the following optional keys:
start
: Corresponds to when the user started doing the activity in milliseconds since Unix epoch.end
: Corresponds to when the user will finish doing the activity in milliseconds since Unix epoch.
- 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.
- 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).
- buttons#
A list of dictionaries representing custom buttons shown in a rich presence. Each dictionary contains the following keys:
label
: A string representing the text shown on the button.url
: A string representing the URL opened upon clicking the button.
Note
Bots cannot access a user’s activity button URLs. Therefore, the type of this attribute will be List[
str
] when received through the gateway.New in version 2.0.
- emoji#
The emoji that belongs to this activity.
- Type:
Optional[
PartialEmoji
]
- property start#
When the user started doing this activity in UTC, if applicable.
- property end#
When the user will stop doing this activity in UTC, if applicable.
- property large_image_url#
Returns a URL pointing to the large image asset of this activity if applicable.
- property small_image_url#
Returns a URL pointing to the small image asset of this activity if applicable.
- property large_image_text#
Returns the large image asset hover text of this activity if applicable.
- property small_image_text#
Returns the small image asset hover text of this activity if applicable.
- class discord.BaseActivity(**kwargs)[source]#
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.
New in version 1.3.
- property created_at#
When the user started doing this activity in UTC.
New in version 1.3.
- class discord.Game(name, **extra)[source]#
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.
- property type#
Returns the game’s type. This is for compatibility with
Activity
.It always returns
ActivityType.playing
.
- property start#
When the user started playing this game in UTC, if applicable.
- property end#
When the user will stop playing this game in UTC, if applicable.
- class discord.Streaming(*, name, url, **extra)[source]#
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).
New in version 1.3.
- Type:
Optional[
str
]
- assets#
A dictionary comprised of similar keys than those in
Activity.assets
.
- property type#
Returns the game’s type. This is for compatibility with
Activity
.It always returns
ActivityType.streaming
.
- property twitch_name#
If provided, the twitch name of the user streaming.
This corresponds to the
large_image
key of theStreaming.assets
dictionary if it starts withtwitch:
. Typically this is set by the Discord client.
- class discord.CustomActivity(name, *, emoji=None, **extra)[source]#
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.
New in version 1.3.
- emoji#
The emoji to pass to the activity, if any.
- Type:
Optional[
PartialEmoji
]
- Parameters:
name (str | None) –
emoji (PartialEmoji | None) –
extra (Any) –
- property type#
Returns the activity’s type. This is for compatibility with
Activity
.It always returns
ActivityType.custom
.
Permissions#
- add_reactions
- administrator
- attach_files
- ban_members
- change_nickname
- connect
- create_instant_invite
- create_private_threads
- create_public_threads
- deafen_members
- embed_links
- external_emojis
- external_stickers
- kick_members
- manage_channels
- manage_emojis
- manage_emojis_and_stickers
- manage_events
- manage_guild
- manage_messages
- manage_nicknames
- manage_permissions
- manage_roles
- manage_threads
- manage_webhooks
- mention_everyone
- moderate_members
- move_members
- mute_members
- priority_speaker
- read_message_history
- read_messages
- request_to_speak
- send_messages
- send_messages_in_threads
- send_polls
- send_tts_messages
- send_voice_messages
- set_voice_channel_status
- speak
- start_embedded_activities
- stream
- use_application_commands
- use_external_apps
- use_external_emojis
- use_external_stickers
- use_slash_commands
- use_voice_activation
- value
- view_audit_log
- view_channel
- view_guild_insights
- clsPermissions.advanced
- clsPermissions.all
- clsPermissions.all_channel
- clsPermissions.general
- clsPermissions.membership
- clsPermissions.none
- clsPermissions.stage
- clsPermissions.stage_moderator
- clsPermissions.text
- clsPermissions.voice
- defis_strict_subset
- defis_strict_superset
- defis_subset
- defis_superset
- defupdate
- class discord.Permissions(permissions=0, **kwargs)[source]#
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 toupdate()
.- 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
- x + y
Adds two permissions together. Equivalent to
x | y
.
- x - y
Subtracts two permissions from each other.
- x | y
Returns the union of two permissions. Equivalent to
x + y
.
- x & y
Returns the intersection of two permissions.
- ~x
Returns the inverse of a permission.
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:
- is_subset(other)[source]#
Returns
True
if self has the same or fewer permissions as other.- Parameters:
other (
Permissions
) –- Return type:
- is_superset(other)[source]#
Returns
True
if self has the same or more permissions as other.- Parameters:
other (
Permissions
) –- Return type:
- is_strict_subset(other)[source]#
Returns
True
if the permissions on other are a strict subset of those on self.- Parameters:
other (
Permissions
) –- Return type:
- is_strict_superset(other)[source]#
Returns
True
if the permissions on other are a strict superset of those on self.- Parameters:
other (
Permissions
) –- Return type:
- classmethod none()[source]#
A factory method that creates a
Permissions
with all permissions set toFalse
.
- classmethod all()[source]#
A factory method that creates a
Permissions
with all permissions set toTrue
.
- classmethod all_channel()[source]#
A
Permissions
with all channel-specific permissions set toTrue
and the guild-specific ones set toFalse
. The guild-specific permissions are currently:Changed in version 1.7: Added
stream
,priority_speaker
anduse_slash_commands
permissions.Changed in version 2.0: Added
create_public_threads
,create_private_threads
,manage_threads
,use_external_stickers
,send_messages_in_threads
andrequest_to_speak
permissions.
- classmethod general()[source]#
A factory method that creates a
Permissions
with all “General” permissions from the official Discord UI set toTrue
.Changed in version 1.7: Permission
read_messages
is now included in the general permissions, but permissionsadministrator
,create_instant_invite
,kick_members
,ban_members
,change_nickname
andmanage_nicknames
are no longer part of the general permissions.
- classmethod membership()[source]#
A factory method that creates a
Permissions
with all “Membership” permissions from the official Discord UI set toTrue
.New in version 1.7.
- classmethod text()[source]#
A factory method that creates a
Permissions
with all “Text” permissions from the official Discord UI set toTrue
.Changed in version 1.7: Permission
read_messages
is no longer part of the text permissions. Addeduse_slash_commands
permission.Changed in version 2.0: Added
create_public_threads
,create_private_threads
,manage_threads
,send_messages_in_threads
anduse_external_stickers
permissions.
- classmethod voice()[source]#
A factory method that creates a
Permissions
with all “Voice” permissions from the official Discord UI set toTrue
.
- classmethod stage()[source]#
A factory method that creates a
Permissions
with all “Stage Channel” permissions from the official Discord UI set toTrue
.New in version 1.7.
- classmethod stage_moderator()[source]#
A factory method that creates a
Permissions
with all “Stage Moderator” permissions from the official Discord UI set toTrue
.New in version 1.7.
- classmethod advanced()[source]#
A factory method that creates a
Permissions
with all “Advanced” permissions from the official Discord UI set toTrue
.New in version 1.7.
- update(**kwargs)[source]#
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.
- administrator#
Returns
True
if a user is an administrator. This role overrides all other permissions.This also bypasses all channel-specific overrides.
- Type:
- 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:
- read_messages[source]#
An alias for
view_channel
.New in version 1.3.
- Type:
- send_messages#
Returns
True
if a user can send messages from all or specific text channels.- Type:
- send_tts_messages#
Returns
True
if a user can send TTS messages from all or specific text channels.- Type:
- 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:
- embed_links#
Returns
True
if a user’s messages will automatically be embedded by Discord.- Type:
- read_message_history#
Returns
True
if a user can read a text channel’s previous messages.- Type:
- mention_everyone#
Returns
True
if a user’s @everyone or @here will mention everyone in the text channel.- Type:
- use_external_emojis[source]#
An alias for
external_emojis
.New in version 1.3.
- Type:
- view_guild_insights#
Returns
True
if a user can view the guild’s insights.New in version 1.3.
- Type:
- 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:
- manage_permissions[source]#
An alias for
manage_roles
.New in version 1.3.
- Type:
- manage_emojis_and_stickers[source]#
An alias for
manage_emojis
.New in version 2.0.
- Type:
- use_application_commands[source]#
An alias for
use_slash_commands
.New in version 2.0.
- Type:
- request_to_speak#
Returns
True
if a user can request to speak in a stage channel.New in version 1.7.
- Type:
- create_public_threads#
Returns
True
if a user can create public threads.New in version 2.0.
- Type:
- create_private_threads#
Returns
True
if a user can create private threads.New in version 2.0.
- Type:
- external_stickers#
Returns
True
if a user can use stickers from other guilds.New in version 2.0.
- Type:
- use_external_stickers[source]#
An alias for
external_stickers
.New in version 2.0.
- Type:
- send_messages_in_threads#
Returns
True
if a user can send messages in threads.New in version 2.0.
- Type:
- start_embedded_activities#
Returns
True
if a user can launch an activity flagged ‘EMBEDDED’ in a voice channel.New in version 2.0.
- Type:
- moderate_members#
Returns
True
if a user can moderate members (timeout).New in version 2.0.
- Type:
- send_voice_messages#
Returns
True
if a member can send voice messages.New in version 2.5.
- Type:
- set_voice_channel_status#
Returns
True
if a member can set voice channel status.New in version 2.5.
- Type:
- clsPermissionOverwrite.from_pair
- defis_empty
- defpair
- defupdate
- class discord.PermissionOverwrite(**kwargs)[source]#
A type that is used to represent a channel specific permission.
Unlike a regular
Permissions
, the default value of a permission is equivalent toNone
and notFalse
. Setting a value toFalse
is explicitly denying that permission, while setting a value toTrue
is explicitly allowing that permission.The values supported by this are the same as
Permissions
with the added possibility of it being set toNone
.- 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 (bool | None) – Set the value of permissions by their name.
- classmethod from_pair(allow, deny)[source]#
Creates an overwrite from an allow/deny pair of
Permissions
.
- is_empty()[source]#
Checks if the permission overwrite is currently empty.
An empty permission overwrite is one that has no overwrites set to
True
orFalse
.- Returns:
Indicates if the overwrite is empty.
- Return type:
Application Role Connections#
- class discord.ApplicationRoleConnectionMetadata(*, type, key, name, description, name_localizations=..., description_localizations=...)[source]#
Represents role connection metadata for a Discord application.
New in version 2.4.
- Parameters:
type (
ApplicationRoleConnectionMetadataType
) – The type of metadata value.key (
str
) – The key for this metadata field. May only be thea-z
,0-9
, or_
characters, with a maximum of 50 characters.name (
str
) – The name for this metadata field. Maximum 100 characters.description (
str
) – The description for this metadata field. Maximum 200 characters.name_localizations (Optional[Dict[
str
,str
]]) – The name localizations for this metadata field. The values of this should be"locale": "name"
. See here for a list of valid locales.description_localizations (Optional[Dict[
str
,str
]]) –The description localizations for this metadata field. The values of this should be
"locale": "name"
. See here for a list of valid locales.