Add a few more gateway events
This commit is contained in:
parent
11d371eee2
commit
41b75be2fb
|
@ -10,7 +10,7 @@ serde = {version = "1.0.159", features = ["derive"]}
|
|||
serde_json = "1.0.95"
|
||||
reqwest = {version = "0.11.16", features = ["multipart"]}
|
||||
url = "2.3.1"
|
||||
chrono = "0.4.24"
|
||||
chrono = {version = "0.4.24", features = ["serde"]}
|
||||
regex = "1.7.3"
|
||||
custom_error = "1.9.2"
|
||||
native-tls = "0.2.11"
|
||||
|
|
|
@ -4,6 +4,7 @@ https://discord.com/developers/docs .
|
|||
I do not feel like re-documenting all of this, as everything is already perfectly explained there.
|
||||
*/
|
||||
|
||||
use chrono::{DateTime, Utc};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::{api::limits::Limits, instance::Instance};
|
||||
|
@ -857,6 +858,43 @@ pub struct GatewayHeartbeatAck {
|
|||
|
||||
impl WebSocketEvent for GatewayHeartbeatAck {}
|
||||
|
||||
#[derive(Debug, Default, Deserialize, Serialize)]
|
||||
/// See https://discord.com/developers/docs/topics/gateway-events#channel-pins-update
|
||||
pub struct ChannelPinsUpdate {
|
||||
pub guild_id: Option<String>,
|
||||
pub channel_id: String,
|
||||
pub last_pin_timestamp: Option<DateTime<Utc>>
|
||||
}
|
||||
|
||||
impl WebSocketEvent for ChannelPinsUpdate {}
|
||||
|
||||
#[derive(Debug, Default, Deserialize, Serialize)]
|
||||
/// See https://discord.com/developers/docs/topics/gateway-events#guild-ban-add-guild-ban-add-event-fields
|
||||
pub struct GuildBanAdd {
|
||||
pub guild_id: String,
|
||||
pub user: UserObject,
|
||||
}
|
||||
|
||||
impl WebSocketEvent for GuildBanAdd {}
|
||||
|
||||
#[derive(Debug, Default, Deserialize, Serialize)]
|
||||
/// See https://discord.com/developers/docs/topics/gateway-events#guild-ban-remove
|
||||
pub struct GuildBanRemove {
|
||||
pub guild_id: String,
|
||||
pub user: UserObject,
|
||||
}
|
||||
|
||||
impl WebSocketEvent for GuildBanRemove {}
|
||||
|
||||
#[derive(Debug, Default, Deserialize, Serialize)]
|
||||
/// See https://discord.com/developers/docs/topics/gateway-events#user-update
|
||||
/// Not directly serialized, as the inner payload is the user object
|
||||
pub struct UserUpdate {
|
||||
pub user: UserObject,
|
||||
}
|
||||
|
||||
impl WebSocketEvent for UserUpdate {}
|
||||
|
||||
#[derive(Debug, Default, Deserialize, Serialize)]
|
||||
pub struct GatewayPayload {
|
||||
pub op: u8,
|
||||
|
|
|
@ -183,6 +183,7 @@ impl<'a> Gateway {
|
|||
"READY" => {
|
||||
let data: GatewayReady = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
|
||||
}
|
||||
"RESUMED" => {}
|
||||
"APPLICATION_COMMAND_PERMISSIONS_UPDATE" => {}
|
||||
"AUTO_MODERATION_RULE_CREATE" => {}
|
||||
"AUTO_MODERATION_RULE_UPDATE" => {}
|
||||
|
@ -200,10 +201,16 @@ impl<'a> Gateway {
|
|||
"THREAD_MEMBERS_UPDATE" => {}
|
||||
"GUILD_CREATE" => {}
|
||||
"GUILD_UPDATE" => {}
|
||||
"GUILD_DELETE" => {}
|
||||
"GUILD_DELETE" => {
|
||||
let new_data: UnavailableGuild = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
|
||||
}
|
||||
"GUILD_AUDIT_LOG_ENTRY_CREATE" => {}
|
||||
"GUILD_BAN_ADD" => {}
|
||||
"GUILD_BAN_REMOVE" => {}
|
||||
"GUILD_BAN_ADD" => {
|
||||
let new_data: GuildBanAdd = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
|
||||
}
|
||||
"GUILD_BAN_REMOVE" => {
|
||||
let new_data: GuildBanRemove = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
|
||||
}
|
||||
"GUILD_EMOJIS_UPDATE" => {}
|
||||
"GUILD_STICKERS_UPDATE" => {}
|
||||
"GUILD_INTEGRATIONS_UPDATE" => {}
|
||||
|
@ -270,7 +277,11 @@ impl<'a> Gateway {
|
|||
let new_data: TypingStartEvent = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
|
||||
self.events.lock().await.user.typing_start_event.update_data(new_data).await;
|
||||
}
|
||||
"USER_UPDATE" => {}
|
||||
"USER_UPDATE" => {
|
||||
let user: UserObject = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
|
||||
let new_data = UserUpdate {user};
|
||||
self.events.lock().await.user.user_update.update_data(new_data).await;
|
||||
}
|
||||
"VOICE_STATE_UPDATE" => {}
|
||||
"VOICE_SERVER_UPDATE" => {}
|
||||
"WEBHOOKS_UPDATE" => {}
|
||||
|
@ -531,6 +542,7 @@ mod events {
|
|||
|
||||
#[derive(Default, Debug)]
|
||||
pub struct User {
|
||||
pub user_update: GatewayEvent<UserUpdate>,
|
||||
pub presence_update: GatewayEvent<PresenceUpdate>,
|
||||
pub typing_start_event: GatewayEvent<TypingStartEvent>,
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue