polyphony_types/events/
guild.rs

1use serde::{Deserialize, Serialize};
2use crate::entities::{Guild, UnavailableGuild, User};
3use crate::events::WebSocketEvent;
4
5#[derive(Debug, Deserialize, Serialize, Default)]
6/// See https://discord.com/developers/docs/topics/gateway-events#guild-create
7/// This one is particularly painful, it can be a Guild object with extra field or an unavailbile guild object
8pub struct GuildCreate {
9    pub d: GuildCreateDataOption,
10}
11
12#[derive(Debug, Deserialize, Serialize)]
13pub enum GuildCreateDataOption {
14    UnavailableGuild(UnavailableGuild),
15    Guild(Guild),
16}
17
18impl Default for GuildCreateDataOption {
19    fn default() -> Self {
20        GuildCreateDataOption::UnavailableGuild(UnavailableGuild::default())
21    }
22}
23impl WebSocketEvent for GuildCreate {}
24
25#[derive(Debug, Default, Deserialize, Serialize)]
26/// See https://discord.com/developers/docs/topics/gateway-events#guild-ban-add-guild-ban-add-event-fields
27pub struct GuildBanAdd {
28    pub guild_id: String,
29    pub user: User,
30}
31
32impl WebSocketEvent for GuildBanAdd {}
33
34#[derive(Debug, Default, Deserialize, Serialize)]
35/// See https://discord.com/developers/docs/topics/gateway-events#guild-ban-remove
36pub struct GuildBanRemove {
37    pub guild_id: String,
38    pub user: User,
39}
40
41impl WebSocketEvent for GuildBanRemove {}