pub mod permissions;
mod command_type;
mod option;
pub use self::{
command_type::CommandType,
option::{
BaseCommandOptionData, ChannelCommandOptionData, ChoiceCommandOptionData, CommandOption,
CommandOptionChoice, CommandOptionType, CommandOptionValue, NumberCommandOptionData,
OptionsCommandOptionData,
},
};
use crate::{
guild::Permissions,
id::{
marker::{ApplicationMarker, CommandMarker, CommandVersionMarker, GuildMarker},
Id,
},
};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
pub struct Command {
#[serde(skip_serializing_if = "Option::is_none")]
pub application_id: Option<Id<ApplicationMarker>>,
pub default_member_permissions: Option<Permissions>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dm_permission: Option<bool>,
pub description: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description_localizations: Option<HashMap<String, String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub guild_id: Option<Id<GuildMarker>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<Id<CommandMarker>>,
#[serde(rename = "type")]
pub kind: CommandType,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub name_localizations: Option<HashMap<String, String>>,
#[serde(default)]
pub options: Vec<CommandOption>,
pub version: Id<CommandVersionMarker>,
}