#[non_exhaustive]
pub struct Command {
Show 15 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 version: CommandVersionId,
}
Expand description

The base command model that belongs to an application.

Discord docs.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional 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.

§version: CommandVersionId

An autoincremented version identifier updated during substantial record changes.

Implementations§

source§

impl Command

source

pub async fn create_global_command( cache_http: impl CacheHttp, builder: CreateCommand ) -> Result<Command>

Available on crate feature 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.

source

pub async fn set_global_commands( http: impl AsRef<Http>, commands: Vec<CreateCommand> ) -> Result<Vec<Command>>

Available on crate feature model only.

Override all global application commands.

§Errors

Returns the same errors as Self::create_global_command.

source

pub async fn edit_global_command( cache_http: impl CacheHttp, command_id: CommandId, builder: CreateCommand ) -> Result<Command>

Available on crate feature model only.

Edit a global command, given its Id.

§Errors

See CreateCommand::execute for a list of possible errors.

source

pub async fn get_global_commands(http: impl AsRef<Http>) -> Result<Vec<Command>>

Available on crate feature model only.

Gets all global commands.

§Errors

If there is an error, it will be either Error::Http or Error::Json.

source

pub async fn get_global_commands_with_localizations( http: impl AsRef<Http> ) -> Result<Vec<Command>>

Available on crate feature model only.

Gets all global commands with localizations.

§Errors

If there is an error, it will be either Error::Http or Error::Json.

source

pub async fn get_global_command( http: impl AsRef<Http>, command_id: CommandId ) -> Result<Command>

Available on crate feature model only.

Gets a global command by its Id.

§Errors

If there is an error, it will be either Error::Http or Error::Json.

source

pub async fn delete_global_command( http: impl AsRef<Http>, command_id: CommandId ) -> Result<()>

Available on crate feature 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 Clone for Command

source§

fn clone(&self) -> Command

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Command

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for Command

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Serialize for Command

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneDebuggableStorage for T

source§

impl<T> CloneableStorage for T
where T: Any + Send + Sync + Clone,

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> DebuggableStorage for T
where T: Any + Send + Sync + Debug,

source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,