Add Types

This commit is contained in:
bitfl0wer 2023-08-20 22:46:44 +02:00
parent 4e56181486
commit 8b09d52ac8
No known key found for this signature in database
GPG Key ID: 0ACD574FCF5226CF
1 changed files with 99 additions and 6 deletions

View File

@ -14,6 +14,7 @@ use crate::types::{
utils::Snowflake, utils::Snowflake,
Composite, Composite,
}; };
use bitflags::bitflags;
/// See <https://discord.com/developers/docs/resources/guild> /// See <https://discord.com/developers/docs/resources/guild>
#[derive(Serialize, Deserialize, Debug, Default, Clone, Updateable, Composite)] #[derive(Serialize, Deserialize, Debug, Default, Clone, Updateable, Composite)]
@ -33,7 +34,7 @@ pub struct Guild {
#[cfg_attr(feature = "sqlx", sqlx(skip))] #[cfg_attr(feature = "sqlx", sqlx(skip))]
#[observe_option_vec] #[observe_option_vec]
pub channels: Option<Vec<Arc<RwLock<Channel>>>>, pub channels: Option<Vec<Arc<RwLock<Channel>>>>,
pub default_message_notifications: Option<i32>, pub default_message_notifications: Option<MessageNotificationLevel>,
pub description: Option<String>, pub description: Option<String>,
pub discovery_splash: Option<String>, pub discovery_splash: Option<String>,
#[cfg_attr(feature = "sqlx", sqlx(skip))] #[cfg_attr(feature = "sqlx", sqlx(skip))]
@ -57,9 +58,9 @@ pub struct Guild {
#[cfg_attr(feature = "sqlx", sqlx(skip))] #[cfg_attr(feature = "sqlx", sqlx(skip))]
pub max_stage_video_channel_users: Option<i32>, pub max_stage_video_channel_users: Option<i32>,
pub max_video_channel_users: Option<i32>, pub max_video_channel_users: Option<i32>,
pub mfa_level: Option<i32>, pub mfa_level: Option<MFALevel>,
pub name: Option<String>, pub name: Option<String>,
pub nsfw_level: Option<i32>, pub nsfw_level: Option<NSFWLevel>,
#[cfg_attr(feature = "sqlx", sqlx(skip))] #[cfg_attr(feature = "sqlx", sqlx(skip))]
pub owner: Option<bool>, pub owner: Option<bool>,
// True if requesting user is owner // True if requesting user is owner
@ -69,7 +70,7 @@ pub struct Guild {
pub preferred_locale: Option<String>, pub preferred_locale: Option<String>,
pub premium_progress_bar_enabled: Option<bool>, pub premium_progress_bar_enabled: Option<bool>,
pub premium_subscription_count: Option<i32>, pub premium_subscription_count: Option<i32>,
pub premium_tier: Option<i32>, pub premium_tier: Option<PremiumTier>,
pub primary_category_id: Option<Snowflake>, pub primary_category_id: Option<Snowflake>,
pub public_updates_channel_id: Option<Snowflake>, pub public_updates_channel_id: Option<Snowflake>,
pub region: Option<String>, pub region: Option<String>,
@ -82,11 +83,11 @@ pub struct Guild {
pub splash: Option<String>, pub splash: Option<String>,
#[cfg_attr(feature = "sqlx", sqlx(skip))] #[cfg_attr(feature = "sqlx", sqlx(skip))]
pub stickers: Option<Vec<Sticker>>, pub stickers: Option<Vec<Sticker>>,
pub system_channel_flags: Option<i32>, pub system_channel_flags: Option<SystemChannelFlags>,
pub system_channel_id: Option<Snowflake>, pub system_channel_id: Option<Snowflake>,
#[cfg_attr(feature = "sqlx", sqlx(skip))] #[cfg_attr(feature = "sqlx", sqlx(skip))]
pub vanity_url_code: Option<String>, pub vanity_url_code: Option<String>,
pub verification_level: Option<i32>, pub verification_level: Option<VerificationLevel>,
#[cfg_attr(feature = "sqlx", sqlx(skip))] #[cfg_attr(feature = "sqlx", sqlx(skip))]
#[observe_option_vec] #[observe_option_vec]
pub voice_states: Option<Vec<Arc<RwLock<VoiceState>>>>, pub voice_states: Option<Vec<Arc<RwLock<VoiceState>>>>,
@ -199,3 +200,95 @@ pub enum GuildScheduledEventEntityType {
pub struct GuildScheduledEventEntityMetadata { pub struct GuildScheduledEventEntityMetadata {
pub location: Option<String>, pub location: Option<String>,
} }
#[derive(Serialize, Deserialize, Debug, Default, Clone, Eq, PartialEq)]
pub struct VoiceRegion {
id: String,
name: String,
optimal: bool,
deprecated: bool,
custom: bool,
}
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq)]
#[repr(u8)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
/// See <https://discord-userdoccers.vercel.app/resources/guild#message-notification-level>
pub enum MessageNotificationLevel {
#[default]
AllMessages = 0,
OnlyMentions = 1,
}
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq)]
#[repr(u8)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
/// See <https://discord-userdoccers.vercel.app/resources/guild#explicit-content-filter-level>
pub enum ExplicitContentFilterLevel {
#[default]
Disabled = 0,
MembersWithoutRoles = 1,
AllMembers = 2,
}
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq)]
#[repr(u8)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
/// See <https://discord-userdoccers.vercel.app/resources/guild#verification-level>
pub enum VerificationLevel {
#[default]
None = 0,
Low = 1,
Medium = 2,
High = 3,
VeryHigh = 4,
}
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq)]
#[repr(u8)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
/// See <https://discord-userdoccers.vercel.app/resources/guild#verification-level>
pub enum MFALevel {
#[default]
None = 0,
Elevated = 1,
}
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq)]
#[repr(u8)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
/// See <https://discord-userdoccers.vercel.app/resources/guild#verification-level>
pub enum NSFWLevel {
#[default]
Default = 0,
Explicit = 1,
Safe = 2,
AgeRestricted = 3,
}
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, Eq, PartialEq)]
#[repr(u8)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
/// See <https://discord-userdoccers.vercel.app/resources/guild#verification-level>
pub enum PremiumTier {
#[default]
None = 0,
Tier1 = 1,
Tier2 = 2,
Tier3 = 3,
}
bitflags! {
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Hash)]
/// # Reference
/// See <https://discord-userdoccers.vercel.app/resources/guild#system-channel-flags>
pub struct SystemChannelFlags: u64 {
/// Indicates if an app uses the Auto Moderation API
const SUPPRESS_JOIN_NOTIFICATIONS = 1 << 0;
const SUPPRESS_PREMIUM_SUBSCRIPTIONS = 1 << 1;
const SUPPRESS_GUILD_REMINDER_NOTIFICATIONS = 1 << 2;
const SUPPRESS_JOIN_NOTIFICATION_REPLIES = 1 << 3;
const SUPPRESS_ROLE_SUBSCRIPTION_PURCHASE_NOTIFICATIONS = 1 << 4;
const SUPPRESS_ROLE_SUBSCRIPTION_PURCHASE_NOTIFICATIONS_REPLIES = 1 << 5;
}
}