use crate::models::payloads::_interactions::_application_commands::entry_point::{
APIPrimaryEntryPointCommandDMInteraction, APIPrimaryEntryPointCommandGuildInteraction,
APIPrimaryEntryPointCommandInteraction, APIPrimaryEntryPointCommandInteractionData,
};
pub use crate::models::payloads::_interactions::_application_commands::chat_input::*;
pub use crate::models::payloads::_interactions::_application_commands::context_menu::*;
#[allow(unused_imports)]
pub use crate::models::payloads::_interactions::_application_commands::entry_point::*;
pub use crate::models::payloads::_interactions::_application_commands::internals::*;
pub use crate::models::payloads::_interactions::_application_commands::permissions::*;
use crate::models::payloads::_interactions::base::APIBaseInteraction;
use crate::models::payloads::responses::InteractionType;
use serde::{Deserialize, Serialize};
use serde_repr::{Deserialize_repr, Serialize_repr};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct APIApplicationCommand {
pub id: String,
pub r#type: ApplicationCommandType,
pub application_id: String,
pub guild_id: Option<String>,
pub name: String,
pub name_localizations: Option<crate::models::payloads::LocalizationMap>,
pub name_localized: Option<String>,
pub description: String,
pub description_localizations: Option<crate::models::payloads::LocalizationMap>,
pub description_localized: Option<String>,
pub options: Option<Vec<APIApplicationCommandOption>>,
pub default_member_permissions: Option<String>,
pub dm_permission: Option<bool>,
pub default_permission: Option<bool>,
pub nsfw: Option<bool>,
pub integration_types: Option<Vec<ApplicationIntegrationType>>,
pub contexts: Option<Vec<InteractionContextType>>,
pub version: String,
pub handler: Option<EntryPointCommandHandlerType>,
}
#[repr(u8)]
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize_repr, Deserialize_repr)]
pub enum ApplicationCommandType {
ChatInput = 1,
User = 2,
Message = 3,
PrimaryEntryPoint = 4,
}
#[repr(u8)]
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize_repr, Deserialize_repr)]
pub enum ApplicationIntegrationType {
GuildInstall = 0,
UserInstall = 1,
}
#[repr(u8)]
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize_repr, Deserialize_repr)]
pub enum InteractionContextType {
Guild = 0,
BotDM = 1,
PrivateChannel = 2,
}
#[repr(u8)]
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize_repr, Deserialize_repr)]
pub enum EntryPointCommandHandlerType {
AppHandler = 1,
DiscordLaunchActivity = 2,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum APIApplicationCommandInteractionData {
APIChatInputApplicationCommandInteractionData(APIChatInputApplicationCommandInteractionData),
APIContextMenuInteractionData(APIContextMenuInteractionData),
APIPrimaryEntryPointCommandInteractionData(APIPrimaryEntryPointCommandInteractionData),
}
pub type APIApplicationCommandInteractionWrapper<Data> = APIBaseInteraction<InteractionType, Data>;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum APIApplicationCommandInteraction {
APIChatInputApplicationCommandInteraction(APIChatInputApplicationCommandInteraction),
APIContextMenuInteraction(APIContextMenuInteraction),
APIPrimaryEntryPointCommandInteraction(APIPrimaryEntryPointCommandInteraction),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum APIApplicationCommandDMInteraction {
APIChatInputApplicationCommandDMInteraction(APIChatInputApplicationCommandDMInteraction),
APIContextMenuDMInteraction(APIContextMenuDMInteraction),
APIPrimaryEntryPointCommandDMInteraction(APIPrimaryEntryPointCommandDMInteraction),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum APIApplicationCommandGuildInteraction {
APIChatInputApplicationCommandGuildInteraction(APIChatInputApplicationCommandGuildInteraction),
APIContextMenuGuildInteraction(APIContextMenuGuildInteraction),
APIPrimaryEntryPointCommandGuildInteraction(APIPrimaryEntryPointCommandGuildInteraction),
}