spectacles_model/guild/
member.rs1use chrono::{DateTime, FixedOffset};
2
3use crate::{
4 Snowflake,
5 user::User,
6};
7
8#[derive(Clone, Debug, Deserialize, Serialize, Default)]
10pub struct GuildMember {
11 #[serde(default)]
13 pub guild_id: Option<Snowflake>,
14 pub user: Option<User>,
16 #[serde(default, rename = "nick")]
18 pub nickname: Option<String>,
19 pub joined_at: Option<DateTime<FixedOffset>>,
21 #[serde(default)]
23 pub mute: bool,
24 #[serde(default)]
26 pub deaf: bool,
27 pub roles: Vec<String>,
29}
30
31#[derive(Clone, Debug, Deserialize, Serialize, Default)]
33pub struct AddMemberOptions {
34 #[serde(skip_serializing_if = "Option::is_none")]
35 access_token: Option<String>,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 nick: Option<String>,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 roles: Option<Vec<Snowflake>>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 mute: Option<bool>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 deaf: Option<bool>,
44}
45
46impl AddMemberOptions {
47 pub fn access_token(mut self, token: String) -> Self {
49 self.access_token = Some(token);
50 self
51 }
52
53 pub fn nickname(mut self, name: &str) -> Self {
55 self.nick = Some(name.to_string());
56 self
57 }
58
59 pub fn roles(mut self, rls: Vec<Snowflake>) -> Self {
61 self.roles = Some(rls);
62 self
63 }
64
65 pub fn muted(mut self, mute: bool) -> Self {
67 self.mute = Some(mute);
68 self
69 }
70
71 pub fn deaf(mut self, opt: bool) -> Self {
73 self.deaf = Some(opt);
74 self
75 }
76}
77
78#[derive(Clone, Debug, Deserialize, Serialize, Default)]
80pub struct ModifyMemberOptions {
81 #[serde(skip_serializing_if = "Option::is_none")]
82 nick: Option<String>,
83 #[serde(skip_serializing_if = "Option::is_none")]
84 roles: Option<Vec<Snowflake>>,
85 #[serde(skip_serializing_if = "Option::is_none")]
86 mute: Option<bool>,
87 #[serde(skip_serializing_if = "Option::is_none")]
88 deaf: Option<bool>,
89 #[serde(skip_serializing_if = "Option::is_none")]
90 channel_id: Option<Snowflake>,
91}
92
93impl ModifyMemberOptions {
94 pub fn nick(mut self, name: &str) -> Self {
96 self.nick = Some(name.to_string());
97 self
98 }
99
100 pub fn roles(mut self, rls: Vec<Snowflake>) -> Self {
102 self.roles = Some(rls);
103 self
104 }
105
106 pub fn muted(mut self, opt: bool) -> Self {
108 self.mute = Some(opt);
109 self
110 }
111
112 pub fn deaf(mut self, opt: bool) -> Self {
114 self.deaf = Some(opt);
115 self
116 }
117
118 pub fn channel_id(mut self, id: Snowflake) -> Self {
120 self.channel_id = Some(id);
121 self
122 }
123}
124
125#[derive(Clone, Debug, Deserialize, Serialize, Default)]
127pub struct ListMembersOptions {
128 #[serde(skip_serializing_if = "Option::is_none")]
129 limit: Option<i32>,
130 #[serde(skip_serializing_if = "Option::is_none")]
131 after: Option<Snowflake>,
132}
133
134impl ListMembersOptions {
135 pub fn limit(mut self, num: i32) -> Self {
137 self.limit = Some(num);
138 self
139 }
140
141 pub fn after(mut self, id: Snowflake) -> Self {
143 self.after = Some(id);
144 self
145 }
146}
147
148#[derive(Clone, Debug, Deserialize, Serialize, Default)]
150pub struct GuildMemberRemove {
151 pub guild_id: Snowflake,
153 pub user: User,
155}
156
157#[derive(Clone, Debug, Deserialize, Serialize, Default)]
159pub struct GuildMembersChunk {
160 pub guild_id: Snowflake,
162 pub members: Vec<GuildMember>
164}