serenity/model/guild/
scheduled_event.rs1use crate::model::prelude::*;
2
3#[cfg_attr(feature = "typesize", derive(typesize::derive::TypeSize))]
7#[derive(Clone, Debug, Deserialize, Serialize)]
8#[non_exhaustive]
9pub struct ScheduledEvent {
10 pub id: ScheduledEventId,
12 pub guild_id: GuildId,
14 pub channel_id: Option<ChannelId>,
16 pub creator_id: Option<UserId>,
20 pub name: String,
22 pub description: Option<String>,
24 #[serde(rename = "scheduled_start_time")]
26 pub start_time: Timestamp,
27 #[serde(rename = "scheduled_end_time")]
29 pub end_time: Option<Timestamp>,
30 pub privacy_level: ScheduledEventPrivacyLevel,
32 pub status: ScheduledEventStatus,
34 pub creator: Option<User>,
38 #[serde(rename = "entity_type")]
41 pub kind: ScheduledEventType,
42 pub entity_id: Option<GenericId>,
44 #[serde(rename = "entity_metadata")]
46 pub metadata: Option<ScheduledEventMetadata>,
47 pub user_count: Option<u64>,
52 pub image: Option<ImageHash>,
54}
55
56enum_number! {
57 #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd, Deserialize, Serialize)]
59 #[cfg_attr(feature = "typesize", derive(typesize::derive::TypeSize))]
60 #[serde(from = "u8", into = "u8")]
61 #[non_exhaustive]
62 pub enum ScheduledEventStatus {
63 Scheduled = 1,
64 Active = 2,
65 Completed = 3,
66 Canceled = 4,
67 _ => Unknown(u8),
68 }
69}
70
71enum_number! {
72 #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd, Deserialize, Serialize)]
74 #[cfg_attr(feature = "typesize", derive(typesize::derive::TypeSize))]
75 #[serde(from = "u8", into = "u8")]
76 #[non_exhaustive]
77 pub enum ScheduledEventType {
78 StageInstance = 1,
79 Voice = 2,
80 External = 3,
81 _ => Unknown(u8),
82 }
83}
84
85#[cfg_attr(feature = "typesize", derive(typesize::derive::TypeSize))]
87#[derive(Clone, Debug, Deserialize, Serialize)]
88#[non_exhaustive]
89pub struct ScheduledEventMetadata {
90 #[serde(default)]
91 pub location: Option<String>,
92}
93
94#[cfg_attr(feature = "typesize", derive(typesize::derive::TypeSize))]
96#[derive(Clone, Debug, Deserialize, Serialize)]
97#[non_exhaustive]
98pub struct ScheduledEventUser {
99 #[serde(rename = "guild_scheduled_event_id")]
100 pub event_id: ScheduledEventId,
101 pub user: User,
102 pub member: Option<Member>,
103}
104
105enum_number! {
106 #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd, Deserialize, Serialize)]
110 #[cfg_attr(feature = "typesize", derive(typesize::derive::TypeSize))]
111 #[serde(from = "u8", into = "u8")]
112 #[non_exhaustive]
113 pub enum ScheduledEventPrivacyLevel {
114 GuildOnly = 2,
115 _ => Unknown(u8),
116 }
117}