use serde::{Deserialize, Serialize};
use serde_repr::{Deserialize_repr, Serialize_repr};
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct GuildOnboardingApiType {
pub guild_id: String,
pub prompts: Vec<OnboardingPromptApiType>,
pub default_channel_ids: Vec<String>,
pub enabled: bool,
pub mode: OnboardingMode,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct OnboardingPromptApiType {
pub id: String,
#[serde(rename = "type")]
pub type_: PromptType,
pub options: Vec<PromptOptionApiType>,
pub title: String,
pub single_select: bool,
pub required: bool,
pub in_onboarding: bool,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct PromptOptionApiType {
pub id: String,
pub channel_ids: Vec<String>,
pub role_ids: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub emoji: Option<PromptEmojiApiType>,
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct PromptEmojiApiType {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub animated: Option<bool>,
}
#[derive(Serialize_repr, Deserialize_repr, Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
#[allow(non_camel_case_types)]
pub enum OnboardingMode {
ONBOARDING_DEFAULT = 0,
ONBOARDING_ADVANCED = 1,
}
#[derive(Serialize_repr, Deserialize_repr, Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
#[allow(non_camel_case_types)]
pub enum PromptType {
MULTIPLE_CHOICE = 0,
DROPDOWN = 1,
}