some_random_api/structs/
welcome_image.rs1use serde::Serialize;
2use serde_repr::Serialize_repr;
3
4#[derive(Debug, Serialize)]
5pub struct WelcomeImage {
6 #[serde(skip_serializing)]
7 pub template: WelcomeImageTemplate,
8
9 #[serde(skip_serializing)]
10 pub background: WelcomeImageBackground,
11
12 #[serde(rename = "bg")]
13 pub background_url: String,
14
15 #[serde(rename = "type")]
16 pub card_type: String,
17
18 pub username: String,
19 pub discriminator: String,
20
21 #[serde(rename = "avatar")]
22 pub avatar_url: String,
23
24 #[serde(rename = "guildName")]
25 pub guild_name: String,
26
27 #[serde(rename = "memberCount")]
28 pub member_count: u64,
29
30 #[serde(rename = "textcolor")]
31 pub text_color: WelcomeImageTextColor,
32
33 pub font: u8,
34}
35
36#[derive(Debug, Serialize_repr)]
37#[repr(u8)]
38pub enum WelcomeImageTemplate {
39 A = 1,
40 B,
41 C,
42 D,
43 E,
44 F,
45 G,
46}
47
48#[derive(Debug)]
49pub enum WelcomeImageBackground {
50 Stars,
51 Stars2,
52 RainbowGradient,
53 Rainbow,
54 Sunset,
55 Night,
56 BlobDay,
57 BlobNight,
58 Space,
59 Gaming1,
60 Gaming3,
61 Gaming2,
62 Gaming4,
63}
64
65#[derive(Debug, Serialize)]
66#[serde(rename_all = "lowercase")]
67pub enum WelcomeImageTextColor {
68 Red,
69 Orange,
70 Yellow,
71 Green,
72 Blue,
73 Indigo,
74 Purple,
75 Pink,
76 Black,
77 White,
78}
79
80impl WelcomeImage {
81 pub fn new<T: ToString, U: ToString, V: ToString, W: ToString>(
100 username: T,
101 discriminator: U,
102 avatar_url: V,
103 guild_name: W,
104 member_count: u64,
105 ) -> Self {
106 Self {
107 template: WelcomeImageTemplate::A,
108 background: WelcomeImageBackground::Stars,
109 background_url: "".into(),
110 card_type: "join".into(),
111 username: username.to_string(),
112 discriminator: discriminator.to_string(),
113 avatar_url: avatar_url.to_string(),
114 guild_name: guild_name.to_string(),
115 member_count,
116 text_color: WelcomeImageTextColor::White,
117 font: 1,
118 }
119 }
120
121 pub fn set_template(mut self, template: WelcomeImageTemplate) -> Self {
123 self.template = template;
124 self
125 }
126
127 pub fn set_background(mut self, background: WelcomeImageBackground) -> Self {
129 self.background = background;
130 self
131 }
132
133 pub fn set_background_url<T: ToString>(mut self, background_url: T) -> Self {
135 self.background_url = background_url.to_string();
136 self
137 }
138
139 pub fn set_font(mut self, font: u8) -> Self {
141 self.font = font.max(1).min(7);
142 self
143 }
144
145 pub fn set_text_color(mut self, text_color: WelcomeImageTextColor) -> Self {
147 self.text_color = text_color;
148 self
149 }
150
151 pub fn set_leave(mut self, leave: bool) -> Self {
153 if leave {
154 self.card_type = "leave".into();
155 }
156
157 self
158 }
159}