spectacles_model/message/
emoji.rs1use crate::{Snowflake, User};
2
3#[derive(Serialize, Deserialize, Debug, Clone, Default)]
5pub struct Emoji {
6 pub id: Option<Snowflake>,
8 pub name: String,
10 #[serde(default)]
12 pub roles: Vec<Snowflake>,
13 #[serde(default)]
15 pub user: Option<User>,
16 #[serde(default)]
18 pub require_colons: Option<bool>,
19 #[serde(default)]
21 pub managed: Option<bool>,
22 #[serde(default)]
24 pub animated: Option<bool>
25}
26
27#[derive(Serialize, Deserialize, Debug, Clone, Default)]
29pub struct MessageReaction {
30 pub count: i32,
32 pub me: bool,
34 pub emoji: Emoji
36}
37
38#[derive(Serialize, Deserialize, Debug, Clone, Default)]
40pub struct GetReactionsOptions {
41 #[serde(skip_serializing_if = "Option::is_none")]
42 before: Option<Snowflake>,
43 #[serde(skip_serializing_if = "Option::is_none")]
44 after: Option<Snowflake>,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 limit: Option<i32>,
47}
48
49impl GetReactionsOptions {
50 pub fn before(mut self, id: Snowflake) -> Self {
52 self.before = Some(id);
53 self
54 }
55
56 pub fn after(mut self, id: Snowflake) -> Self {
58 self.after = Some(id);
59 self
60 }
61
62 pub fn limit(mut self, num: i32) -> Self {
64 self.limit = Some(num);
65 self
66 }
67}
68
69#[derive(Serialize, Deserialize, Debug, Clone, Default)]
70pub struct CreateEmojiOptions {
71 name: String,
72 image: String,
73 roles: Vec<Snowflake>,
74}
75
76impl CreateEmojiOptions {
77 pub fn name(mut self, text: &str) -> Self {
79 self.name = text.to_string();
80 self
81 }
82
83 pub fn image(mut self, text: &str) -> Self {
86 self.image = text.to_string();
87 self
88 }
89
90 pub fn roles(mut self, rls: Vec<Snowflake>) -> Self {
92 self.roles = rls;
93 self
94 }
95}
96
97#[derive(Serialize, Deserialize, Debug, Clone, Default)]
98pub struct ModifyEmojiOptions {
99 #[serde(skip_serializing_if = "Option::is_none")]
100 name: Option<String>,
101 #[serde(skip_serializing_if = "Option::is_none")]
102 roles: Option<Vec<Snowflake>>,
103}
104
105impl ModifyEmojiOptions {
106 pub fn name(mut self, name: &str) -> Self {
108 self.name = Some(name.to_string());
109 self
110 }
111
112 pub fn roles(mut self, rls: Vec<Snowflake>) -> Self {
114 self.roles = Some(rls);
115 self
116 }
117}
118
119#[derive(Serialize, Deserialize, Debug, Clone, Default)]
121pub struct GuildEmojisUpdate {
122 pub guild_id: Snowflake,
124 pub emojis: Vec<Emoji>
126}