polyphony_types/events/
message.rs

1use serde::{Deserialize, Serialize};
2
3use crate::{
4    entities::{Emoji, GuildMember, Message, User},
5    utils::Snowflake,
6};
7
8use super::WebSocketEvent;
9
10#[derive(Debug, Deserialize, Serialize, Default)]
11pub struct TypingStartEvent {
12    pub channel_id: String,
13    pub guild_id: Option<String>,
14    pub user_id: String,
15    pub timestamp: i64,
16    pub member: Option<GuildMember>,
17}
18
19impl WebSocketEvent for TypingStartEvent {}
20
21#[derive(Debug, Serialize, Deserialize, Default)]
22pub struct MessageCreate {
23    #[serde(flatten)]
24    message: Message,
25    guild_id: Option<Snowflake>,
26    member: Option<GuildMember>,
27    mentions: Vec<(User, GuildMember)>, // Not sure if this is correct: https://discord.com/developers/docs/topics/gateway-events#message-create
28}
29
30impl WebSocketEvent for MessageCreate {}
31
32#[derive(Debug, Serialize, Deserialize, Default)]
33pub struct MessageUpdate {
34    #[serde(flatten)]
35    message: Message,
36    guild_id: Option<String>,
37    member: Option<GuildMember>,
38    mentions: Vec<(User, GuildMember)>, // Not sure if this is correct: https://discord.com/developers/docs/topics/gateway-events#message-create
39}
40
41impl WebSocketEvent for MessageUpdate {}
42
43#[derive(Debug, Serialize, Deserialize, Default)]
44pub struct MessageDelete {
45    id: String,
46    channel_id: String,
47    guild_id: Option<String>,
48}
49
50impl WebSocketEvent for MessageDelete {}
51
52#[derive(Debug, Serialize, Deserialize, Default)]
53pub struct MessageDeleteBulk {
54    ids: Vec<String>,
55    channel_id: String,
56    guild_id: Option<String>,
57}
58
59impl WebSocketEvent for MessageDeleteBulk {}
60
61#[derive(Debug, Serialize, Deserialize, Default)]
62pub struct MessageReactionAdd {
63    user_id: String,
64    channel_id: String,
65    message_id: String,
66    guild_id: Option<String>,
67    member: Option<GuildMember>,
68    emoji: Emoji,
69}
70
71impl WebSocketEvent for MessageReactionAdd {}
72
73#[derive(Debug, Serialize, Deserialize, Default)]
74pub struct MessageReactionRemove {
75    user_id: String,
76    channel_id: String,
77    message_id: String,
78    guild_id: Option<String>,
79    emoji: Emoji,
80}
81
82impl WebSocketEvent for MessageReactionRemove {}
83
84#[derive(Debug, Serialize, Deserialize, Default)]
85pub struct MessageReactionRemoveAll {
86    channel_id: String,
87    message_id: String,
88    guild_id: Option<String>,
89}
90
91impl WebSocketEvent for MessageReactionRemoveAll {}
92
93#[derive(Debug, Serialize, Deserialize, Default)]
94pub struct MessageReactionRemoveEmoji {
95    channel_id: String,
96    message_id: String,
97    guild_id: Option<String>,
98    emoji: Emoji,
99}
100
101impl WebSocketEvent for MessageReactionRemoveEmoji {}