1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
use serde_repr::{Deserialize_repr, Serialize_repr};
use crate::guild::GuildMember;
use crate::User;
pub use self::embed::*;
pub use self::emoji::*;
pub use self::webhook::Webhook;
mod embed;
mod webhook;
mod emoji;
#[derive(Deserialize, Serialize, Clone, Debug)]
pub struct Message {
pub id: String,
pub channel_id: String,
#[serde(default)]
pub guild_id: String,
pub author: User,
pub content: String,
#[serde(default)]
pub member: GuildMember,
pub timestamp: String,
pub edited_timestamp: Option<String>,
pub tts: bool,
pub mention_everyone: bool,
pub mention_roles: Vec<String>,
pub attachments: Vec<MessageAttachment>,
pub embeds: Vec<Embed>,
#[serde(default)]
pub reactions: Vec<MessageReaction>,
#[serde(default)]
pub nonce: Option<String>,
pub pinned: bool,
#[serde(default)]
pub webhook_id: String,
#[serde(rename = "type")]
pub kind: MessageType,
#[serde(default)]
pub activity: MessageActivity,
#[serde(default)]
pub application: MessageApplication,
}
#[derive(Deserialize, Serialize, Clone, Debug)]
pub struct MessageAttachment {
pub id: String,
pub filename: String,
pub size: i32,
pub url: String,
pub proxy_url: String,
pub height: Option<i32>,
pub width: Option<i32>
}
#[derive(Deserialize, Serialize, Clone, Debug, Default)]
pub struct MessageActivity {
#[serde(rename = "type")]
pub kind: MessageActivityType,
#[serde(default)]
pub party_id: String
}
#[derive(Deserialize, Serialize, Clone, Debug, Default)]
pub struct MessageApplication {
pub id: String,
pub cover_image: String,
pub description: String,
pub icon: String,
pub name: String
}
#[derive(Deserialize_repr, Debug, Clone, Serialize_repr)]
#[repr(u8)]
pub enum MessageType {
Default,
RecipientAdd,
RecipientRemove,
Call,
ChannelNameChange,
ChannelIconChange,
ChannelPinnedMessage,
GuildMemberJoin
}
impl Default for MessageType {
fn default() -> Self {
MessageType::Default
}
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub enum MessageActivityType {
Join = 1,
Spectate,
Listen = 3,
JoinRequest = 5
}
impl Default for MessageActivityType {
fn default() -> Self {
MessageActivityType::Join
}
}