#[non_exhaustive]pub struct Command {Show 18 fields
pub id: CommandId,
pub kind: CommandType,
pub application_id: ApplicationId,
pub guild_id: Option<GuildId>,
pub name: String,
pub name_localized: Option<String>,
pub name_localizations: Option<HashMap<String, String>>,
pub description: String,
pub description_localized: Option<String>,
pub description_localizations: Option<HashMap<String, String>>,
pub options: Vec<CommandOption>,
pub default_member_permissions: Option<Permissions>,
pub dm_permission: Option<bool>,
pub nsfw: bool,
pub integration_types: Vec<InstallationContext>,
pub contexts: Option<Vec<InteractionContext>>,
pub version: CommandVersionId,
pub handler: Option<EntryPointHandlerType>,
}
Expand description
The base command model that belongs to an application.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.id: CommandId
The command Id.
kind: CommandType
The application command kind.
application_id: ApplicationId
The parent application Id.
guild_id: Option<GuildId>
The command guild Id, if it is a guild command.
Note: It may only be present if it is received through the gateway.
name: String
The command name.
name_localized: Option<String>
The localized command name of the selected locale.
If the name is localized, either this field or Self::name_localizations
is set,
depending on which endpoint this data was retrieved from
(source).
name_localizations: Option<HashMap<String, String>>
All localized command names.
If the name is localized, either this field or Self::name_localized
is set, depending
on which endpoint this data was retrieved from
(source).
description: String
The command description.
description_localized: Option<String>
The localized command description of the selected locale.
If the description is localized, either this field or Self::description_localizations
is set, depending on which endpoint this data was retrieved from
(source).
description_localizations: Option<HashMap<String, String>>
All localized command descriptions.
If the description is localized, either this field or Self::description_localized
is
set, depending on which endpoint this data was retrieved from
(source).
options: Vec<CommandOption>
The parameters for the command.
default_member_permissions: Option<Permissions>
The default permissions required to execute the command.
dm_permission: Option<bool>
Indicates whether the command is available in DMs with the app, only for globally-scoped commands. By default, commands are visible.
nsfw: bool
Indicates whether the command is age-restricted, defaults to false.
integration_types: Vec<InstallationContext>
Installation context(s) where the command is available, only for globally-scoped commands.
Defaults to InstallationContext::Guild
and InstallationContext::User
.
contexts: Option<Vec<InteractionContext>>
Interaction context(s) where the command can be used, only for globally-scoped commands.
By default, all interaction context types are included.
version: CommandVersionId
An autoincremented version identifier updated during substantial record changes.
handler: Option<EntryPointHandlerType>
Only present for commands of type PrimaryEntryPoint
.
Implementations§
Source§impl Command
impl Command
Sourcepub async fn create_global_command(
cache_http: impl CacheHttp,
builder: CreateCommand,
) -> Result<Command>
pub async fn create_global_command( cache_http: impl CacheHttp, builder: CreateCommand, ) -> Result<Command>
Create a global Command
, overriding an existing one with the same name if it exists.
When a created Command
is used, the InteractionCreate
event will be emitted.
Note: Global commands may take up to an hour to be updated in the user slash commands list. If an outdated command data is sent by a user, discord will consider it as an error and then will instantly update that command.
As such, it is recommended that guild application commands be used for testing purposes.
§Examples
Create a simple ping command:
use serenity::builder::CreateCommand;
use serenity::model::application::Command;
use serenity::model::id::ApplicationId;
let builder = CreateCommand::new("ping").description("A simple ping command");
let _ = Command::create_global_command(&http, builder).await;
Create a command that echoes what is inserted:
use serenity::builder::{CreateCommand, CreateCommandOption as CreateOption};
use serenity::model::application::{Command, CommandOptionType};
use serenity::model::id::ApplicationId;
let builder =
CreateCommand::new("echo").description("Makes the bot send a message").add_option(
CreateOption::new(CommandOptionType::String, "message", "The message to send")
.required(true),
);
let _ = Command::create_global_command(&http, builder).await;
§Errors
See CreateCommand::execute
for a list of possible errors.
Sourcepub async fn set_global_commands(
http: impl AsRef<Http>,
commands: Vec<CreateCommand>,
) -> Result<Vec<Command>>
pub async fn set_global_commands( http: impl AsRef<Http>, commands: Vec<CreateCommand>, ) -> Result<Vec<Command>>
Override all global application commands.
§Errors
Returns the same errors as Self::create_global_command
.
Sourcepub async fn edit_global_command(
cache_http: impl CacheHttp,
command_id: CommandId,
builder: CreateCommand,
) -> Result<Command>
pub async fn edit_global_command( cache_http: impl CacheHttp, command_id: CommandId, builder: CreateCommand, ) -> Result<Command>
Edit a global command, given its Id.
§Errors
See CreateCommand::execute
for a list of possible errors.
Sourcepub async fn get_global_commands(http: impl AsRef<Http>) -> Result<Vec<Command>>
pub async fn get_global_commands(http: impl AsRef<Http>) -> Result<Vec<Command>>
Gets all global commands.
§Errors
If there is an error, it will be either Error::Http
or Error::Json
.
Sourcepub async fn get_global_commands_with_localizations(
http: impl AsRef<Http>,
) -> Result<Vec<Command>>
pub async fn get_global_commands_with_localizations( http: impl AsRef<Http>, ) -> Result<Vec<Command>>
Gets all global commands with localizations.
§Errors
If there is an error, it will be either Error::Http
or Error::Json
.
Sourcepub async fn get_global_command(
http: impl AsRef<Http>,
command_id: CommandId,
) -> Result<Command>
pub async fn get_global_command( http: impl AsRef<Http>, command_id: CommandId, ) -> Result<Command>
Gets a global command by its Id.
§Errors
If there is an error, it will be either Error::Http
or Error::Json
.
Sourcepub async fn delete_global_command(
http: impl AsRef<Http>,
command_id: CommandId,
) -> Result<()>
pub async fn delete_global_command( http: impl AsRef<Http>, command_id: CommandId, ) -> Result<()>
Deletes a global command by its Id.
§Errors
If there is an error, it will be either Error::Http
or Error::Json
.