titanium_model/builder/
guild.rs1use crate::TitanString;
2
3#[derive(Debug, Clone, serde::Serialize, Default)]
5pub struct ModifyGuild<'a> {
6 #[serde(skip_serializing_if = "Option::is_none")]
7 pub name: Option<TitanString<'a>>,
8 #[serde(skip_serializing_if = "Option::is_none")]
9 pub region: Option<TitanString<'a>>,
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub verification_level: Option<u8>,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub default_message_notifications: Option<u8>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub explicit_content_filter: Option<u8>,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub afk_channel_id: Option<crate::Snowflake>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub afk_timeout: Option<u32>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub icon: Option<TitanString<'a>>,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub owner_id: Option<crate::Snowflake>,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub splash: Option<TitanString<'a>>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub discovery_splash: Option<TitanString<'a>>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub banner: Option<TitanString<'a>>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub system_channel_id: Option<crate::Snowflake>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub system_channel_flags: Option<u64>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub rules_channel_id: Option<crate::Snowflake>,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub public_updates_channel_id: Option<crate::Snowflake>,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub preferred_locale: Option<TitanString<'a>>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub features: Option<Vec<TitanString<'a>>>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub description: Option<TitanString<'a>>,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub premium_progress_bar_enabled: Option<bool>,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub safety_alerts_channel_id: Option<crate::Snowflake>,
48}
49
50#[derive(Debug, Clone, Default)]
52#[must_use]
53pub struct ModifyGuildBuilder<'a> {
54 params: ModifyGuild<'a>,
55}
56
57impl<'a> ModifyGuildBuilder<'a> {
58 pub fn new() -> Self {
60 Self::default()
61 }
62
63 pub fn name(mut self, name: impl Into<TitanString<'a>>) -> Self {
65 self.params.name = Some(name.into());
66 self
67 }
68
69 pub fn region(mut self, region: impl Into<TitanString<'a>>) -> Self {
71 self.params.region = Some(region.into());
72 self
73 }
74
75 pub fn verification_level(mut self, level: u8) -> Self {
77 self.params.verification_level = Some(level);
78 self
79 }
80
81 pub fn default_message_notifications(mut self, level: u8) -> Self {
83 self.params.default_message_notifications = Some(level);
84 self
85 }
86
87 pub fn explicit_content_filter(mut self, level: u8) -> Self {
89 self.params.explicit_content_filter = Some(level);
90 self
91 }
92
93 pub fn afk_channel_id(mut self, id: impl Into<crate::Snowflake>) -> Self {
95 self.params.afk_channel_id = Some(id.into());
96 self
97 }
98
99 pub fn afk_timeout(mut self, timeout: u32) -> Self {
101 self.params.afk_timeout = Some(timeout);
102 self
103 }
104
105 pub fn icon(mut self, icon: impl Into<TitanString<'a>>) -> Self {
107 self.params.icon = Some(icon.into());
108 self
109 }
110
111 pub fn system_channel_id(mut self, id: impl Into<crate::Snowflake>) -> Self {
113 self.params.system_channel_id = Some(id.into());
114 self
115 }
116
117 #[must_use]
119 pub fn build(self) -> ModifyGuild<'a> {
120 self.params
121 }
122}
123
124#[derive(Debug, Clone, serde::Serialize, Default)]
126pub struct CreateGuild {
127 pub name: String,
128 #[serde(skip_serializing_if = "Option::is_none")]
129 pub icon: Option<String>,
130 #[serde(skip_serializing_if = "Option::is_none")]
131 pub verification_level: Option<u8>,
132 #[serde(skip_serializing_if = "Option::is_none")]
133 pub default_message_notifications: Option<u8>,
134 #[serde(skip_serializing_if = "Option::is_none")]
135 pub explicit_content_filter: Option<u8>,
136 #[serde(skip_serializing_if = "Vec::is_empty")]
137 pub roles: Vec<crate::json::Value>,
138 #[serde(skip_serializing_if = "Vec::is_empty")]
139 pub channels: Vec<crate::json::Value>,
140 #[serde(skip_serializing_if = "Option::is_none")]
141 pub afk_channel_id: Option<crate::Snowflake>,
142 #[serde(skip_serializing_if = "Option::is_none")]
143 pub afk_timeout: Option<u32>,
144 #[serde(skip_serializing_if = "Option::is_none")]
145 pub system_channel_id: Option<crate::Snowflake>,
146 #[serde(skip_serializing_if = "Option::is_none")]
147 pub system_channel_flags: Option<u64>,
148}
149
150#[derive(Debug, Clone)]
152pub struct CreateGuildBuilder {
153 params: CreateGuild,
154}
155
156impl CreateGuildBuilder {
157 pub fn new(name: impl Into<String>) -> Self {
158 Self {
159 params: CreateGuild {
160 name: name.into(),
161 ..Default::default()
162 },
163 }
164 }
165
166 #[inline]
167 pub fn icon(mut self, icon: impl Into<String>) -> Self {
168 self.params.icon = Some(icon.into());
169 self
170 }
171
172 #[must_use]
173 pub fn verification_level(mut self, level: u8) -> Self {
174 self.params.verification_level = Some(level);
175 self
176 }
177
178 #[must_use]
179 pub fn build(self) -> CreateGuild {
180 self.params
181 }
182}