View Source Nostrum.Struct.ApplicationCommand (Nostrum v0.10.4)
Typespecs for creating Application Commands
Official reference: https://discord.com/developers/docs/interactions/application-commands
Summary
Types
When editing an existing application command, only the following fields may be updated, missing fields will remain unchanged.
This defines the map for creating an application command.
1forROLE2forUSER3forCHANNEL4forPRIMARY_ENTRY_POINT
You can use one of the Nostrum.Constants.ApplicationCommandPermissionType methods.
For editing the permissions for an application command
If you specify choices for a command those become the only valid options for the user to select from.
The description of the command, subcommand, or command_option.
For CHAT_INPUT commands, it must be between 1 and 100 characters in length.
For USER and MESSAGE commands it must be an empty string.
The name of the command, subcommand, or command_option.
It must be between 1 and 32 characters in length and match the following regex: ^[w-]{1,32}$.
Only USER and MESSAGE commands may include uppercase letters and spaces.
This defines a command's parameters. Only valid for CHAT_INPUT commands.
Indicates what type of argument the command expects.
The type of application command you wish to create
Types
@type application_command_edit_map() :: %{ optional(:name) => command_name(), optional(:description) => command_description(), optional(:options) => [command_option()], optional(:default_permission) => boolean() }
When editing an existing application command, only the following fields may be updated, missing fields will remain unchanged.
@type application_command_map() :: %{ :name => command_name(), :description => command_description(), optional(:type) => command_type(), optional(:default_permission) => boolean(), optional(:options) => [command_option()] }
This defines the map for creating an application command.
:default_permission is for if the command is enabled for all users by default
For more information see the official documentation
@type application_command_permission_type() :: 1..4
1forROLE2forUSER3forCHANNEL4forPRIMARY_ENTRY_POINT
You can use one of the Nostrum.Constants.ApplicationCommandPermissionType methods.
@type application_command_permissions() :: %{ id: Nostrum.Snowflake.t(), type: application_command_permission_type(), permission: boolean() }
For editing the permissions for an application command
:idis the id of the role or user:typeis the type of the id, eitherroleoruser:allowis whether the role or user should be allowed to use the command
If you specify choices for a command those become the only valid options for the user to select from.
@type command_description() :: String.t()
The description of the command, subcommand, or command_option.
For CHAT_INPUT commands, it must be between 1 and 100 characters in length.
For USER and MESSAGE commands it must be an empty string.
@type command_name() :: String.t()
The name of the command, subcommand, or command_option.
It must be between 1 and 32 characters in length and match the following regex: ^[w-]{1,32}$.
Only USER and MESSAGE commands may include uppercase letters and spaces.
@type command_option() :: %{ :name => command_name(), :description => command_description(), :type => command_option_type(), optional(:required) => boolean(), optional(:choices) => [command_choice()], optional(:options) => [command_option()], optional(:channel_types) => [pos_integer()], optional(:autocomplete) => boolean() }
This defines a command's parameters. Only valid for CHAT_INPUT commands.
Notes
- required parameters on a command must precede optional ones
- for subcommands and subcommand groups,
:optionsare its parameters :optionsand:choicesare mutually exclusive:autocompletemust not be set to true if:choicesis present- if
:typeis 7 then:channel_typescan be a list of allowed channel types
@type command_option_type() :: 1..11
Indicates what type of argument the command expects.
1forSUB_COMMAND2forSUB_COMMAND_GROUP3forSTRING4forINTEGERNote: due to API limitations they can only be between -2^53 and 2^535forBOOLEAN6forUSER7forCHANNEL8forROLE9forMENTIONABLENote: Includes users and roles10forNUMBERNote: This has the same limitations asINTEGER11forATTACHMENT
You may use one of the Nostrum.Constants.ApplicationCommandOptionType methods.
@type command_type() :: pos_integer()
The type of application command you wish to create
1forCHAT_INPUT, regular slash commands (default)2forUSER, right-click menu commands on a specific user3forMESSAGE, right-click menu commands on a specific message
You may use one of the Nostrum.Constants.ApplicationCommandType methods.