.. currentmodule:: discord Interactions API Reference ============================ The following section outlines the API of interactions, as implemented by the library. For documentation about the rest of the library, check :doc:`/api`. Models -------- Similar to :ref:`discord_api_models`, these are not meant to be constructed by the user. Interaction ~~~~~~~~~~~~ .. attributetable:: Interaction .. autoclass:: Interaction() :members: InteractionResponse ~~~~~~~~~~~~~~~~~~~~ .. attributetable:: InteractionResponse .. autoclass:: InteractionResponse() :members: InteractionCallbackResponse ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. attributetable:: InteractionCallbackResponse .. autoclass:: InteractionCallbackResponse() :members: InteractionCallbackActivityInstance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. attributetable:: InteractionCallbackActivityInstance .. autoclass:: InteractionCallbackActivityInstance() :members: InteractionMessage ~~~~~~~~~~~~~~~~~~~ .. attributetable:: InteractionMessage .. autoclass:: InteractionMessage() :members: :inherited-members: MessageInteraction ~~~~~~~~~~~~~~~~~~~ .. attributetable:: MessageInteraction .. autoclass:: MessageInteraction() :members: MessageInteractionMetadata ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. attributetable:: MessageInteractionMetadata .. autoclass:: MessageInteractionMetadata() :members: Component ~~~~~~~~~~ .. attributetable:: Component .. autoclass:: Component() :members: ActionRow ~~~~~~~~~~ .. attributetable:: ActionRow .. autoclass:: ActionRow() :members: Button ~~~~~~~ .. attributetable:: Button .. autoclass:: Button() :members: :inherited-members: SelectMenu ~~~~~~~~~~~ .. attributetable:: SelectMenu .. autoclass:: SelectMenu() :members: :inherited-members: TextInput ~~~~~~~~~~ .. attributetable:: TextInput .. autoclass:: TextInput() :members: :inherited-members: AppCommand ~~~~~~~~~~~ .. attributetable:: discord.app_commands.AppCommand .. autoclass:: discord.app_commands.AppCommand() :members: AppCommandGroup ~~~~~~~~~~~~~~~~ .. attributetable:: discord.app_commands.AppCommandGroup .. autoclass:: discord.app_commands.AppCommandGroup() :members: AppCommandChannel ~~~~~~~~~~~~~~~~~~ .. attributetable:: discord.app_commands.AppCommandChannel .. autoclass:: discord.app_commands.AppCommandChannel() :members: AppCommandThread ~~~~~~~~~~~~~~~~~ .. attributetable:: discord.app_commands.AppCommandThread .. autoclass:: discord.app_commands.AppCommandThread() :members: AppCommandPermissions ~~~~~~~~~~~~~~~~~~~~~~ .. attributetable:: discord.app_commands.AppCommandPermissions .. autoclass:: discord.app_commands.AppCommandPermissions() :members: AppCommandContext ~~~~~~~~~~~~~~~~~ .. attributetable:: discord.app_commands.AppCommandContext .. autoclass:: discord.app_commands.AppCommandContext :members: AppInstallationType ~~~~~~~~~~~~~~~~~~~~ .. attributetable:: discord.app_commands.AppInstallationType .. autoclass:: discord.app_commands.AppInstallationType :members: GuildAppCommandPermissions ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. attributetable:: discord.app_commands.GuildAppCommandPermissions .. autoclass:: discord.app_commands.GuildAppCommandPermissions() :members: Argument ~~~~~~~~~~ .. attributetable:: discord.app_commands.Argument .. autoclass:: discord.app_commands.Argument() :members: AllChannels ~~~~~~~~~~~~ .. attributetable:: discord.app_commands.AllChannels .. autoclass:: discord.app_commands.AllChannels() :members: Data Classes -------------- Similar to :ref:`discord_api_data`, these can be received and constructed by users. SelectOption ~~~~~~~~~~~~~ .. attributetable:: SelectOption .. autoclass:: SelectOption :members: SelectDefaultValue ~~~~~~~~~~~~~~~~~~~ .. attributetable:: SelectDefaultValue .. autoclass:: SelectDefaultValue :members: Choice ~~~~~~~ .. attributetable:: discord.app_commands.Choice .. autoclass:: discord.app_commands.Choice :members: Enumerations ------------- .. class:: InteractionType Specifies the type of :class:`Interaction`. .. versionadded:: 2.0 .. attribute:: ping Represents Discord pinging to see if the interaction response server is alive. .. attribute:: application_command Represents a slash command interaction. .. attribute:: component Represents a component based interaction, i.e. using the Discord Bot UI Kit. .. attribute:: autocomplete Represents an auto complete interaction. .. attribute:: modal_submit Represents submission of a modal interaction. .. class:: InteractionResponseType Specifies the response type for the interaction. .. versionadded:: 2.0 .. attribute:: pong Pongs the interaction when given a ping. See also :meth:`InteractionResponse.pong` .. attribute:: channel_message Respond to the interaction with a message. See also :meth:`InteractionResponse.send_message` .. attribute:: deferred_channel_message Responds to the interaction with a message at a later time. See also :meth:`InteractionResponse.defer` .. attribute:: 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 :meth:`InteractionResponse.defer` .. attribute:: message_update Responds to the interaction by editing the message. See also :meth:`InteractionResponse.edit_message` .. attribute:: autocomplete_result Responds to the autocomplete interaction with suggested choices. See also :meth:`InteractionResponse.autocomplete` .. attribute:: modal Responds to the interaction with a modal. See also :meth:`InteractionResponse.send_modal` .. class:: ComponentType Represents the component type of a component. .. versionadded:: 2.0 .. attribute:: action_row Represents the group component which holds different components in a row. .. attribute:: button Represents a button component. .. attribute:: text_input Represents a text box component. .. attribute:: select Represents a select component. .. attribute:: string_select An alias to :attr:`select`. Represents a default select component. .. attribute:: user_select Represents a user select component. .. attribute:: role_select Represents a role select component. .. attribute:: mentionable_select Represents a select in which both users and roles can be selected. .. class:: ButtonStyle Represents the style of the button component. .. versionadded:: 2.0 .. attribute:: primary Represents a blurple button for the primary action. .. attribute:: secondary Represents a grey button for the secondary action. .. attribute:: success Represents a green button for a successful action. .. attribute:: danger Represents a red button for a dangerous action. .. attribute:: link Represents a link button. .. attribute:: premium Represents a button denoting that buying a SKU is required to perform this action. .. versionadded:: 2.4 .. attribute:: blurple An alias for :attr:`primary`. .. attribute:: grey An alias for :attr:`secondary`. .. attribute:: gray An alias for :attr:`secondary`. .. attribute:: green An alias for :attr:`success`. .. attribute:: red An alias for :attr:`danger`. .. attribute:: url An alias for :attr:`link`. .. class:: TextStyle Represents the style of the text box component. .. versionadded:: 2.0 .. attribute:: short Represents a short text box. .. attribute:: paragraph Represents a long form text box. .. attribute:: long An alias for :attr:`paragraph`. .. class:: AppCommandOptionType The application command's option type. This is usually the type of parameter an application command takes. .. versionadded:: 2.0 .. attribute:: subcommand A subcommand. .. attribute:: subcommand_group A subcommand group. .. attribute:: string A string parameter. .. attribute:: integer A integer parameter. .. attribute:: boolean A boolean parameter. .. attribute:: user A user parameter. .. attribute:: channel A channel parameter. .. attribute:: role A role parameter. .. attribute:: mentionable A mentionable parameter. .. attribute:: number A number parameter. .. attribute:: attachment An attachment parameter. .. class:: AppCommandType The type of application command. .. versionadded:: 2.0 .. attribute:: chat_input A slash command. .. attribute:: user A user context menu command. .. attribute:: message A message context menu command. .. class:: AppCommandPermissionType The application command's permission type. .. versionadded:: 2.0 .. attribute:: role The permission is for a role. .. attribute:: channel The permission is for one or all channels. .. attribute:: user The permission is for a user. .. _discord_ui_kit: Bot UI Kit ------------- The library has helpers to aid in creating component-based UIs. These are all in the ``discord.ui`` package. View ~~~~~~~ .. attributetable:: discord.ui.View .. autoclass:: discord.ui.View :members: Modal ~~~~~~ .. attributetable:: discord.ui.Modal .. autoclass:: discord.ui.Modal :members: :inherited-members: Item ~~~~~~~ .. attributetable:: discord.ui.Item .. autoclass:: discord.ui.Item :members: DynamicItem ~~~~~~~~~~~~ .. attributetable:: discord.ui.DynamicItem .. autoclass:: discord.ui.DynamicItem :members: :inherited-members: Button ~~~~~~~ .. attributetable:: discord.ui.Button .. autoclass:: discord.ui.Button :members: :inherited-members: .. autofunction:: discord.ui.button :decorator: Select Menus ~~~~~~~~~~~~~ The library provides classes to help create the different types of select menus. Select +++++++ .. attributetable:: discord.ui.Select .. autoclass:: discord.ui.Select :members: :inherited-members: ChannelSelect ++++++++++++++ .. attributetable:: discord.ui.ChannelSelect .. autoclass:: discord.ui.ChannelSelect :members: :inherited-members: RoleSelect ++++++++++ .. attributetable:: discord.ui.RoleSelect .. autoclass:: discord.ui.RoleSelect :members: :inherited-members: MentionableSelect ++++++++++++++++++ .. attributetable:: discord.ui.MentionableSelect .. autoclass:: discord.ui.MentionableSelect :members: :inherited-members: UserSelect +++++++++++ .. attributetable:: discord.ui.UserSelect .. autoclass:: discord.ui.UserSelect :members: :inherited-members: select +++++++ .. autofunction:: discord.ui.select :decorator: TextInput ~~~~~~~~~~~ .. attributetable:: discord.ui.TextInput .. autoclass:: discord.ui.TextInput :members: :inherited-members: .. _discord_app_commands: Application Commands ---------------------- The library has helpers to aid in creation of application commands. These are all in the ``discord.app_commands`` package. CommandTree ~~~~~~~~~~~~ .. attributetable:: discord.app_commands.CommandTree .. autoclass:: discord.app_commands.CommandTree :members: :exclude-members: error, command, context_menu .. automethod:: CommandTree.command(*, name=..., description=..., nsfw=False, guild=..., guilds=..., auto_locale_strings=True, extras=...) :decorator: .. automethod:: CommandTree.context_menu(*, name=..., nsfw=False, guild=..., guilds=..., auto_locale_strings=True, extras=...) :decorator: .. automethod:: CommandTree.error(coro) :decorator: Commands ~~~~~~~~~ Command ++++++++ .. attributetable:: discord.app_commands.Command .. autoclass:: discord.app_commands.Command :members: :exclude-members: error, autocomplete .. automethod:: Command.autocomplete(name) :decorator: .. automethod:: Command.error(coro) :decorator: Parameter ++++++++++ .. attributetable:: discord.app_commands.Parameter .. autoclass:: discord.app_commands.Parameter() :members: ContextMenu ++++++++++++ .. attributetable:: discord.app_commands.ContextMenu .. autoclass:: discord.app_commands.ContextMenu :members: :exclude-members: error .. automethod:: ContextMenu.error(coro) :decorator: Group ++++++ .. attributetable:: discord.app_commands.Group .. autoclass:: discord.app_commands.Group :members: :exclude-members: error, command .. automethod:: Group.command(*, name=..., description=..., nsfw=False, auto_locale_strings=True, extras=...) :decorator: .. automethod:: Group.error(coro) :decorator: Decorators ~~~~~~~~~~~ .. autofunction:: discord.app_commands.command :decorator: .. autofunction:: discord.app_commands.context_menu :decorator: .. autofunction:: discord.app_commands.describe :decorator: .. autofunction:: discord.app_commands.rename :decorator: .. autofunction:: discord.app_commands.choices :decorator: .. autofunction:: discord.app_commands.autocomplete :decorator: .. autofunction:: discord.app_commands.guilds :decorator: .. autofunction:: discord.app_commands.guild_only :decorator: .. autofunction:: discord.app_commands.dm_only :decorator: .. autofunction:: discord.app_commands.private_channel_only :decorator: .. autofunction:: discord.app_commands.allowed_contexts :decorator: .. autofunction:: discord.app_commands.user_install :decorator: .. autofunction:: discord.app_commands.guild_install :decorator: .. autofunction:: discord.app_commands.allowed_installs :decorator: .. autofunction:: discord.app_commands.default_permissions :decorator: Checks ~~~~~~~ .. autofunction:: discord.app_commands.check :decorator: .. autofunction:: discord.app_commands.checks.has_role :decorator: .. autofunction:: discord.app_commands.checks.has_any_role :decorator: .. autofunction:: discord.app_commands.checks.has_permissions :decorator: .. autofunction:: discord.app_commands.checks.bot_has_permissions :decorator: .. autofunction:: discord.app_commands.checks.cooldown :decorator: .. autofunction:: discord.app_commands.checks.dynamic_cooldown :decorator: Cooldown ~~~~~~~~~ .. attributetable:: discord.app_commands.Cooldown .. autoclass:: discord.app_commands.Cooldown :members: Namespace ~~~~~~~~~~ .. attributetable:: discord.app_commands.Namespace .. autoclass:: discord.app_commands.Namespace() :members: Transformers ~~~~~~~~~~~~~ Transformer ++++++++++++ .. attributetable:: discord.app_commands.Transformer .. autoclass:: discord.app_commands.Transformer :members: Transform ++++++++++ .. attributetable:: discord.app_commands.Transform .. autoclass:: discord.app_commands.Transform :members: Range ++++++ .. attributetable:: discord.app_commands.Range .. autoclass:: discord.app_commands.Range :members: Translations ~~~~~~~~~~~~~ Translator +++++++++++ .. attributetable:: discord.app_commands.Translator .. autoclass:: discord.app_commands.Translator :members: locale_str +++++++++++ .. attributetable:: discord.app_commands.locale_str .. autoclass:: discord.app_commands.locale_str :members: TranslationContext +++++++++++++++++++ .. attributetable:: discord.app_commands.TranslationContext .. autoclass:: discord.app_commands.TranslationContext :members: TranslationContextLocation +++++++++++++++++++++++++++ .. class:: TranslationContextLocation :module: discord.app_commands An enum representing the location context that the translation occurs in when requested for translation. .. versionadded:: 2.0 .. attribute:: command_name The translation involved a command name. .. attribute:: command_description The translation involved a command description. .. attribute:: group_name The translation involved a group name. .. attribute:: group_description The translation involved a group description. .. attribute:: parameter_name The translation involved a parameter name. .. attribute:: parameter_description The translation involved a parameter description. .. attribute:: choice_name The translation involved a choice name. .. attribute:: other The translation involved something else entirely. This is useful for running :meth:`Translator.translate` for custom usage. Exceptions ~~~~~~~~~~~ .. autoexception:: discord.app_commands.AppCommandError :members: .. autoexception:: discord.app_commands.CommandInvokeError :members: .. autoexception:: discord.app_commands.TransformerError :members: .. autoexception:: discord.app_commands.TranslationError :members: .. autoexception:: discord.app_commands.CheckFailure :members: .. autoexception:: discord.app_commands.NoPrivateMessage :members: .. autoexception:: discord.app_commands.MissingRole :members: .. autoexception:: discord.app_commands.MissingAnyRole :members: .. autoexception:: discord.app_commands.MissingPermissions :members: .. autoexception:: discord.app_commands.BotMissingPermissions :members: .. autoexception:: discord.app_commands.CommandOnCooldown :members: .. autoexception:: discord.app_commands.CommandLimitReached :members: .. autoexception:: discord.app_commands.CommandAlreadyRegistered :members: .. autoexception:: discord.app_commands.CommandSignatureMismatch :members: .. autoexception:: discord.app_commands.CommandNotFound :members: .. autoexception:: discord.app_commands.CommandSyncFailure :members: Exception Hierarchy ++++++++++++++++++++ .. exception_hierarchy:: - :exc:`~discord.DiscordException` - :exc:`~discord.app_commands.AppCommandError` - :exc:`~discord.app_commands.CommandInvokeError` - :exc:`~discord.app_commands.TransformerError` - :exc:`~discord.app_commands.TranslationError` - :exc:`~discord.app_commands.CheckFailure` - :exc:`~discord.app_commands.NoPrivateMessage` - :exc:`~discord.app_commands.MissingRole` - :exc:`~discord.app_commands.MissingAnyRole` - :exc:`~discord.app_commands.MissingPermissions` - :exc:`~discord.app_commands.BotMissingPermissions` - :exc:`~discord.app_commands.CommandOnCooldown` - :exc:`~discord.app_commands.CommandLimitReached` - :exc:`~discord.app_commands.CommandAlreadyRegistered` - :exc:`~discord.app_commands.CommandSignatureMismatch` - :exc:`~discord.app_commands.CommandNotFound` - :exc:`~discord.MissingApplicationID` - :exc:`~discord.app_commands.CommandSyncFailure` - :exc:`~discord.HTTPException` - :exc:`~discord.app_commands.CommandSyncFailure`