View Source Nostrum.Struct.ApplicationCommand (Nostrum v0.10.0)
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.
1
forROLE
2
forUSER
3
forCHANNEL
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..3
1
forROLE
2
forUSER
3
forCHANNEL
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
:id
is the id of the role or user:type
is the type of the id, eitherrole
oruser
:allow
is 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,
:options
are its parameters :options
and:choices
are mutually exclusive:autocomplete
must not be set to true if:choices
is present- if
:type
is 7 then:channel_types
can be a list of allowed channel types
@type command_option_type() :: 1..10
Indicates what type of argument the command expects.
1
forSUB_COMMAND
2
forSUB_COMMAND_GROUP
3
forSTRING
4
forINTEGER
Note: due to API limitations they can only be between -2^53 and 2^535
forBOOLEAN
6
forUSER
7
forCHANNEL
8
forROLE
9
forMENTIONABLE
Note: Includes users and roles10
forNUMBER
Note: This has the same limitations asINTEGER
You may use one of the Nostrum.Constants.ApplicationCommandOptionType
methods.
@type command_type() :: pos_integer()
The type of application command you wish to create
1
forCHAT_INPUT
, regular slash commands (default)2
forUSER
, right-click menu commands on a specific user3
forMESSAGE
, right-click menu commands on a specific message
You may use one of the Nostrum.Constants.ApplicationCommandType
methods.