polyphony_types/events/
message.rs1use 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)>, }
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)>, }
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 {}