Application Commands
Application commands are a special type of command that makes use of Discord's interaction system. Depending on the type, these commands are displayed in the Discord client in one of these ways:
Slash Commands: Above the chat input box when a user types a slash (
/
) character.Message Commands: In a menu named "Apps" displayed when a user right-clicks or taps-and-holds on a message.
User Commands: In a menu named "Apps" displayed when a user right-clicks or taps-and-holds on a username or avatar.
Before diving into working with these command types, it's important to understand what Discord interactions are and how they work.
Application Command Objects
When you register an application command, the builder function will return an object that extends the ApplicationCommand
type. This type extends the Command
type, providing access to basic data and functionality specific to application commands.
The intended public API is described below. However, it's possible to extend this type (and the other command types) if you want to implement your own customized command types.
The ApplicationCommand
type takes a generic type parameter based on the InteractionCreateEvent
type, which is provided by the classes that extend ApplicationCommand
. This generic type parameter will be referred to as E
below.
The following API definitions do not include the APIs provided by any extended supertypes. For more information on the command API, see Command Objects.
Builders
Name | Receiver | Description |
---|---|---|
|
| Register a check that must pass for the command's |
Functions
Name | Arguments | Description |
---|---|---|
|
| Specify a specific guild to register this application command to. Guild-specific commands are only available in a single guild, and will not work in DMs with the bot. Provide |
|
| Specify one or more permissions that a user must have before they may execute this command by default. Note: This setting is simply a default value that may be configured in the "Integrations" tab, within the guild's settings in the Discord client. It is not enforced by the command framework — use a check for that. |
Properties
Name | Type | Description | |
---|---|---|---|
Required Properties | |||
|
| Required: Key object representing the command's name, which is used to invoke the command and is displayed on Discord. Your command's name must follow Discord's naming requirements. | |
Optional Properties | |||
|
| Whether to allow all members of a guild to execute this command by default. When set, this property will overwrite any permissions provided by the | |
|
| Whether to allow this command to be used in a DM with the bot. Always returns |
Application Command Context Objects
When an application command is executed, the provided action
block is run. This block is a receiver function against a subtype of the ApplicationCommandContext
type, which itself is a subtype of the CommandContext
type. This type provides an API that allows you to work with the command's execution data and respond to the user.
Application command context objects always extend one of the interaction context types, unless you're using a command from the unsafe module.
The following API definitions do not include the APIs provided by any extended supertypes. For more information on the command API, see Context Objects.
Properties
Name | Type | Description |
---|---|---|
|
| The permissions applicable to your bot in the current command execution context, as defined by the bot's roles and current channel permissions. Will be |
|
| Generic command object, representing the command this context belongs to. A more specific reference will be provided in this type's subtypes. |
|
| Generic event object, representing the Discord event that triggered the current command execution. A more specific reference will be provided in this type's subtypes. |