#[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>
Available on crate feature model
only.
pub async fn create_global_command( cache_http: impl CacheHttp, builder: CreateCommand, ) -> Result<Command>
model
only.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>>
Available on crate feature model
only.
pub async fn set_global_commands( http: impl AsRef<Http>, commands: Vec<CreateCommand>, ) -> Result<Vec<Command>>
model
only.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>
Available on crate feature model
only.
pub async fn edit_global_command( cache_http: impl CacheHttp, command_id: CommandId, builder: CreateCommand, ) -> Result<Command>
model
only.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>>
Available on crate feature model
only.
pub async fn get_global_commands(http: impl AsRef<Http>) -> Result<Vec<Command>>
model
only.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>>
Available on crate feature model
only.
pub async fn get_global_commands_with_localizations( http: impl AsRef<Http>, ) -> Result<Vec<Command>>
model
only.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>
Available on crate feature model
only.
pub async fn get_global_command( http: impl AsRef<Http>, command_id: CommandId, ) -> Result<Command>
model
only.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<()>
Available on crate feature model
only.
pub async fn delete_global_command( http: impl AsRef<Http>, command_id: CommandId, ) -> Result<()>
model
only.Deletes a global command by its Id.
§Errors
If there is an error, it will be either Error::Http
or Error::Json
.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Command
impl<'de> Deserialize<'de> for Command
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Command
impl RefUnwindSafe for Command
impl Send for Command
impl Sync for Command
impl Unpin for Command
impl UnwindSafe for Command
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneDebuggableStorage for Twhere
T: DebuggableStorage + Clone,
impl<T> CloneDebuggableStorage for Twhere
T: DebuggableStorage + Clone,
fn clone_storage(&self) -> Box<dyn CloneDebuggableStorage>
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)