agjbg??!
This commit is contained in:
parent
51097b3a41
commit
0fd7b304ad
281
src/gateway.rs
281
src/gateway.rs
|
@ -5,7 +5,6 @@ use futures_util::stream::SplitSink;
|
||||||
use futures_util::SinkExt;
|
use futures_util::SinkExt;
|
||||||
use futures_util::StreamExt;
|
use futures_util::StreamExt;
|
||||||
use native_tls::TlsConnector;
|
use native_tls::TlsConnector;
|
||||||
use tokio::task::JoinHandle;
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tokio::net::TcpStream;
|
use tokio::net::TcpStream;
|
||||||
use tokio::sync::mpsc;
|
use tokio::sync::mpsc;
|
||||||
|
@ -13,6 +12,7 @@ use tokio::sync::mpsc::error::TryRecvError;
|
||||||
use tokio::sync::mpsc::Sender;
|
use tokio::sync::mpsc::Sender;
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
use tokio::task;
|
use tokio::task;
|
||||||
|
use tokio::task::JoinHandle;
|
||||||
use tokio::time;
|
use tokio::time;
|
||||||
use tokio::time::Instant;
|
use tokio::time::Instant;
|
||||||
use tokio_tungstenite::MaybeTlsStream;
|
use tokio_tungstenite::MaybeTlsStream;
|
||||||
|
@ -24,45 +24,45 @@ const GATEWAY_DISPATCH: u8 = 0;
|
||||||
/// Opcode sent when sending a heartbeat
|
/// Opcode sent when sending a heartbeat
|
||||||
const GATEWAY_HEARTBEAT: u8 = 1;
|
const GATEWAY_HEARTBEAT: u8 = 1;
|
||||||
/// Opcode sent to initiate a session
|
/// Opcode sent to initiate a session
|
||||||
///
|
///
|
||||||
/// See [types::GatewayIdentifyPayload]
|
/// See [types::GatewayIdentifyPayload]
|
||||||
const GATEWAY_IDENTIFY: u8 = 2;
|
const GATEWAY_IDENTIFY: u8 = 2;
|
||||||
/// Opcode sent to update our presence
|
/// Opcode sent to update our presence
|
||||||
///
|
///
|
||||||
/// See [types::GatewayUpdatePresence]
|
/// See [types::GatewayUpdatePresence]
|
||||||
const GATEWAY_UPDATE_PRESENCE: u8 = 3;
|
const GATEWAY_UPDATE_PRESENCE: u8 = 3;
|
||||||
/// Opcode sent to update our state in vc
|
/// Opcode sent to update our state in vc
|
||||||
///
|
///
|
||||||
/// Like muting, deafening, leaving, joining..
|
/// Like muting, deafening, leaving, joining..
|
||||||
///
|
///
|
||||||
/// See [types::UpdateVoiceState]
|
/// See [types::UpdateVoiceState]
|
||||||
const GATEWAY_UPDATE_VOICE_STATE: u8 = 4;
|
const GATEWAY_UPDATE_VOICE_STATE: u8 = 4;
|
||||||
/// Opcode sent to resume a session
|
/// Opcode sent to resume a session
|
||||||
///
|
///
|
||||||
/// See [types::GatewayResume]
|
/// See [types::GatewayResume]
|
||||||
const GATEWAY_RESUME: u8 = 6;
|
const GATEWAY_RESUME: u8 = 6;
|
||||||
/// Opcode received to tell the client to reconnect
|
/// Opcode received to tell the client to reconnect
|
||||||
const GATEWAY_RECONNECT: u8 = 7;
|
const GATEWAY_RECONNECT: u8 = 7;
|
||||||
/// Opcode sent to request guild member data
|
/// Opcode sent to request guild member data
|
||||||
///
|
///
|
||||||
/// See [types::GatewayRequestGuildMembers]
|
/// See [types::GatewayRequestGuildMembers]
|
||||||
const GATEWAY_REQUEST_GUILD_MEMBERS: u8 = 8;
|
const GATEWAY_REQUEST_GUILD_MEMBERS: u8 = 8;
|
||||||
/// Opcode received to tell the client their token / session is invalid
|
/// Opcode received to tell the client their token / session is invalid
|
||||||
const GATEWAY_INVALID_SESSION: u8 = 9;
|
const GATEWAY_INVALID_SESSION: u8 = 9;
|
||||||
/// Opcode received when initially connecting to the gateway, starts our heartbeat
|
/// Opcode received when initially connecting to the gateway, starts our heartbeat
|
||||||
///
|
///
|
||||||
/// See [types::HelloData]
|
/// See [types::HelloData]
|
||||||
const GATEWAY_HELLO: u8 = 10;
|
const GATEWAY_HELLO: u8 = 10;
|
||||||
/// Opcode received to acknowledge a heartbeat
|
/// Opcode received to acknowledge a heartbeat
|
||||||
const GATEWAY_HEARTBEAT_ACK: u8 = 11;
|
const GATEWAY_HEARTBEAT_ACK: u8 = 11;
|
||||||
/// Opcode sent to get the voice state of users in a given DM/group channel
|
/// Opcode sent to get the voice state of users in a given DM/group channel
|
||||||
///
|
///
|
||||||
/// See [types::CallSync]
|
/// See [types::CallSync]
|
||||||
const GATEWAY_CALL_SYNC: u8 = 13;
|
const GATEWAY_CALL_SYNC: u8 = 13;
|
||||||
/// Opcode sent to get data for a server (Lazy Loading request)
|
/// Opcode sent to get data for a server (Lazy Loading request)
|
||||||
///
|
///
|
||||||
/// Sent by the official client when switching to a server
|
/// Sent by the official client when switching to a server
|
||||||
///
|
///
|
||||||
/// See [types::LazyRequest]
|
/// See [types::LazyRequest]
|
||||||
const GATEWAY_LAZY_REQUEST: u8 = 14;
|
const GATEWAY_LAZY_REQUEST: u8 = 14;
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ pub struct GatewayHandle {
|
||||||
>,
|
>,
|
||||||
>,
|
>,
|
||||||
>,
|
>,
|
||||||
pub handle: JoinHandle<()>
|
pub handle: JoinHandle<()>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl GatewayHandle {
|
impl GatewayHandle {
|
||||||
|
@ -100,7 +100,12 @@ impl GatewayHandle {
|
||||||
|
|
||||||
let message = tokio_tungstenite::tungstenite::Message::text(payload_json);
|
let message = tokio_tungstenite::tungstenite::Message::text(payload_json);
|
||||||
|
|
||||||
self.websocket_send.lock().await.send(message).await.unwrap();
|
self.websocket_send
|
||||||
|
.lock()
|
||||||
|
.await
|
||||||
|
.send(message)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sends an identify event to the gateway
|
/// Sends an identify event to the gateway
|
||||||
|
@ -127,7 +132,8 @@ impl GatewayHandle {
|
||||||
|
|
||||||
println!("GW: Sending Presence Update..");
|
println!("GW: Sending Presence Update..");
|
||||||
|
|
||||||
self.send_json_event(GATEWAY_UPDATE_PRESENCE, to_send_value).await;
|
self.send_json_event(GATEWAY_UPDATE_PRESENCE, to_send_value)
|
||||||
|
.await;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sends a request guild members to the server
|
/// Sends a request guild members to the server
|
||||||
|
@ -136,7 +142,8 @@ impl GatewayHandle {
|
||||||
|
|
||||||
println!("GW: Sending Request Guild Members..");
|
println!("GW: Sending Request Guild Members..");
|
||||||
|
|
||||||
self.send_json_event(GATEWAY_REQUEST_GUILD_MEMBERS, to_send_value).await;
|
self.send_json_event(GATEWAY_REQUEST_GUILD_MEMBERS, to_send_value)
|
||||||
|
.await;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sends an update voice state to the server
|
/// Sends an update voice state to the server
|
||||||
|
@ -145,7 +152,8 @@ impl GatewayHandle {
|
||||||
|
|
||||||
println!("GW: Sending Update Voice State..");
|
println!("GW: Sending Update Voice State..");
|
||||||
|
|
||||||
self.send_json_event(GATEWAY_UPDATE_VOICE_STATE, to_send_value).await;
|
self.send_json_event(GATEWAY_UPDATE_VOICE_STATE, to_send_value)
|
||||||
|
.await;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sends a call sync to the server
|
/// Sends a call sync to the server
|
||||||
|
@ -163,7 +171,8 @@ impl GatewayHandle {
|
||||||
|
|
||||||
println!("GW: Sending Lazy Request..");
|
println!("GW: Sending Lazy Request..");
|
||||||
|
|
||||||
self.send_json_event(GATEWAY_LAZY_REQUEST, to_send_value).await;
|
self.send_json_event(GATEWAY_LAZY_REQUEST, to_send_value)
|
||||||
|
.await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,7 +286,8 @@ impl Gateway {
|
||||||
match gateway_payload_t.as_str() {
|
match gateway_payload_t.as_str() {
|
||||||
"READY" => {
|
"READY" => {
|
||||||
let new_data: types::GatewayReady =
|
let new_data: types::GatewayReady =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -288,7 +298,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"READY_SUPPLEMENTAL" => {
|
"READY_SUPPLEMENTAL" => {
|
||||||
let new_data: types::GatewayReadySupplemental =
|
let new_data: types::GatewayReadySupplemental =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -300,7 +311,8 @@ impl Gateway {
|
||||||
"RESUMED" => {}
|
"RESUMED" => {}
|
||||||
"APPLICATION_COMMAND_PERMISSIONS_UPDATE" => {
|
"APPLICATION_COMMAND_PERMISSIONS_UPDATE" => {
|
||||||
let new_data: types::ApplicationCommandPermissionsUpdate =
|
let new_data: types::ApplicationCommandPermissionsUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -311,7 +323,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"AUTO_MODERATION_RULE_CREATE" => {
|
"AUTO_MODERATION_RULE_CREATE" => {
|
||||||
let new_data: types::AutoModerationRuleCreate =
|
let new_data: types::AutoModerationRuleCreate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -322,7 +335,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"AUTO_MODERATION_RULE_UPDATE" => {
|
"AUTO_MODERATION_RULE_UPDATE" => {
|
||||||
let new_data: types::AutoModerationRuleUpdate =
|
let new_data: types::AutoModerationRuleUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -333,7 +347,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"AUTO_MODERATION_RULE_DELETE" => {
|
"AUTO_MODERATION_RULE_DELETE" => {
|
||||||
let new_data: types::AutoModerationRuleDelete =
|
let new_data: types::AutoModerationRuleDelete =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -344,7 +359,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"AUTO_MODERATION_ACTION_EXECUTION" => {
|
"AUTO_MODERATION_ACTION_EXECUTION" => {
|
||||||
let new_data: types::AutoModerationActionExecution =
|
let new_data: types::AutoModerationActionExecution =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -355,7 +371,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"CHANNEL_CREATE" => {
|
"CHANNEL_CREATE" => {
|
||||||
let new_data: types::ChannelCreate =
|
let new_data: types::ChannelCreate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -366,7 +383,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"CHANNEL_UPDATE" => {
|
"CHANNEL_UPDATE" => {
|
||||||
let new_data: types::ChannelUpdate =
|
let new_data: types::ChannelUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -377,7 +395,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"CHANNEL_UNREAD_UPDATE" => {
|
"CHANNEL_UNREAD_UPDATE" => {
|
||||||
let new_data: types::ChannelUnreadUpdate =
|
let new_data: types::ChannelUnreadUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -388,7 +407,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"CHANNEL_DELETE" => {
|
"CHANNEL_DELETE" => {
|
||||||
let new_data: types::ChannelDelete =
|
let new_data: types::ChannelDelete =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -399,7 +419,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"CHANNEL_PINS_UPDATE" => {
|
"CHANNEL_PINS_UPDATE" => {
|
||||||
let new_data: types::ChannelPinsUpdate =
|
let new_data: types::ChannelPinsUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -410,7 +431,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"CALL_CREATE" => {
|
"CALL_CREATE" => {
|
||||||
let new_data: types::CallCreate =
|
let new_data: types::CallCreate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -421,7 +443,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"CALL_UPDATE" => {
|
"CALL_UPDATE" => {
|
||||||
let new_data: types::CallUpdate =
|
let new_data: types::CallUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -432,7 +455,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"CALL_DELETE" => {
|
"CALL_DELETE" => {
|
||||||
let new_data: types::CallDelete =
|
let new_data: types::CallDelete =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -443,7 +467,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"THREAD_CREATE" => {
|
"THREAD_CREATE" => {
|
||||||
let new_data: types::ThreadCreate =
|
let new_data: types::ThreadCreate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -454,7 +479,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"THREAD_UPDATE" => {
|
"THREAD_UPDATE" => {
|
||||||
let new_data: types::ThreadUpdate =
|
let new_data: types::ThreadUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -465,7 +491,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"THREAD_DELETE" => {
|
"THREAD_DELETE" => {
|
||||||
let new_data: types::ThreadDelete =
|
let new_data: types::ThreadDelete =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -476,7 +503,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"THREAD_LIST_SYNC" => {
|
"THREAD_LIST_SYNC" => {
|
||||||
let new_data: types::ThreadListSync =
|
let new_data: types::ThreadListSync =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -487,7 +515,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"THREAD_MEMBER_UPDATE" => {
|
"THREAD_MEMBER_UPDATE" => {
|
||||||
let new_data: types::ThreadMemberUpdate =
|
let new_data: types::ThreadMemberUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -498,7 +527,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"THREAD_MEMBERS_UPDATE" => {
|
"THREAD_MEMBERS_UPDATE" => {
|
||||||
let new_data: types::ThreadMembersUpdate =
|
let new_data: types::ThreadMembersUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -509,7 +539,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_CREATE" => {
|
"GUILD_CREATE" => {
|
||||||
let new_data: types::GuildCreate =
|
let new_data: types::GuildCreate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -520,7 +551,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_UPDATE" => {
|
"GUILD_UPDATE" => {
|
||||||
let new_data: types::GuildUpdate =
|
let new_data: types::GuildUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -531,7 +563,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_DELETE" => {
|
"GUILD_DELETE" => {
|
||||||
let new_data: types::GuildDelete =
|
let new_data: types::GuildDelete =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -542,7 +575,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_AUDIT_LOG_ENTRY_CREATE" => {
|
"GUILD_AUDIT_LOG_ENTRY_CREATE" => {
|
||||||
let new_data: types::GuildAuditLogEntryCreate =
|
let new_data: types::GuildAuditLogEntryCreate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -553,7 +587,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_BAN_ADD" => {
|
"GUILD_BAN_ADD" => {
|
||||||
let new_data: types::GuildBanAdd =
|
let new_data: types::GuildBanAdd =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -564,7 +599,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_BAN_REMOVE" => {
|
"GUILD_BAN_REMOVE" => {
|
||||||
let new_data: types::GuildBanRemove =
|
let new_data: types::GuildBanRemove =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -575,7 +611,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_EMOJIS_UPDATE" => {
|
"GUILD_EMOJIS_UPDATE" => {
|
||||||
let new_data: types::GuildEmojisUpdate =
|
let new_data: types::GuildEmojisUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -586,7 +623,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_STICKERS_UPDATE" => {
|
"GUILD_STICKERS_UPDATE" => {
|
||||||
let new_data: types::GuildStickersUpdate =
|
let new_data: types::GuildStickersUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -597,7 +635,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_INTEGRATIONS_UPDATE" => {
|
"GUILD_INTEGRATIONS_UPDATE" => {
|
||||||
let new_data: types::GuildIntegrationsUpdate =
|
let new_data: types::GuildIntegrationsUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -608,7 +647,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_MEMBER_ADD" => {
|
"GUILD_MEMBER_ADD" => {
|
||||||
let new_data: types::GuildMemberAdd =
|
let new_data: types::GuildMemberAdd =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -619,7 +659,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_MEMBER_REMOVE" => {
|
"GUILD_MEMBER_REMOVE" => {
|
||||||
let new_data: types::GuildMemberRemove =
|
let new_data: types::GuildMemberRemove =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -630,7 +671,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_MEMBER_UPDATE" => {
|
"GUILD_MEMBER_UPDATE" => {
|
||||||
let new_data: types::GuildMemberUpdate =
|
let new_data: types::GuildMemberUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -641,7 +683,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_MEMBERS_CHUNK" => {
|
"GUILD_MEMBERS_CHUNK" => {
|
||||||
let new_data: types::GuildMembersChunk =
|
let new_data: types::GuildMembersChunk =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -652,7 +695,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_ROLE_CREATE" => {
|
"GUILD_ROLE_CREATE" => {
|
||||||
let new_data: types::GuildRoleCreate =
|
let new_data: types::GuildRoleCreate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -663,7 +707,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_ROLE_UPDATE" => {
|
"GUILD_ROLE_UPDATE" => {
|
||||||
let new_data: types::GuildRoleUpdate =
|
let new_data: types::GuildRoleUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -674,7 +719,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_ROLE_DELETE" => {
|
"GUILD_ROLE_DELETE" => {
|
||||||
let new_data: types::GuildRoleDelete =
|
let new_data: types::GuildRoleDelete =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -685,7 +731,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_SCHEDULED_EVENT_CREATE" => {
|
"GUILD_SCHEDULED_EVENT_CREATE" => {
|
||||||
let new_data: types::GuildScheduledEventCreate =
|
let new_data: types::GuildScheduledEventCreate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -696,7 +743,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_SCHEDULED_EVENT_UPDATE" => {
|
"GUILD_SCHEDULED_EVENT_UPDATE" => {
|
||||||
let new_data: types::GuildScheduledEventUpdate =
|
let new_data: types::GuildScheduledEventUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -707,7 +755,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_SCHEDULED_EVENT_DELETE" => {
|
"GUILD_SCHEDULED_EVENT_DELETE" => {
|
||||||
let new_data: types::GuildScheduledEventDelete =
|
let new_data: types::GuildScheduledEventDelete =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -718,7 +767,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_SCHEDULED_EVENT_USER_ADD" => {
|
"GUILD_SCHEDULED_EVENT_USER_ADD" => {
|
||||||
let new_data: types::GuildScheduledEventUserAdd =
|
let new_data: types::GuildScheduledEventUserAdd =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -729,7 +779,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"GUILD_SCHEDULED_EVENT_USER_REMOVE" => {
|
"GUILD_SCHEDULED_EVENT_USER_REMOVE" => {
|
||||||
let new_data: types::GuildScheduledEventUserRemove =
|
let new_data: types::GuildScheduledEventUserRemove =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -740,7 +791,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"PASSIVE_UPDATE_V1" => {
|
"PASSIVE_UPDATE_V1" => {
|
||||||
let new_data: types::PassiveUpdateV1 =
|
let new_data: types::PassiveUpdateV1 =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -751,7 +803,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"INTEGRATION_CREATE" => {
|
"INTEGRATION_CREATE" => {
|
||||||
let new_data: types::IntegrationCreate =
|
let new_data: types::IntegrationCreate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -762,7 +815,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"INTEGRATION_UPDATE" => {
|
"INTEGRATION_UPDATE" => {
|
||||||
let new_data: types::IntegrationUpdate =
|
let new_data: types::IntegrationUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -773,7 +827,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"INTEGRATION_DELETE" => {
|
"INTEGRATION_DELETE" => {
|
||||||
let new_data: types::IntegrationDelete =
|
let new_data: types::IntegrationDelete =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -784,7 +839,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"INTERACTION_CREATE" => {
|
"INTERACTION_CREATE" => {
|
||||||
let new_data: types::InteractionCreate =
|
let new_data: types::InteractionCreate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -795,7 +851,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"INVITE_CREATE" => {
|
"INVITE_CREATE" => {
|
||||||
let new_data: types::InviteCreate =
|
let new_data: types::InviteCreate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -806,7 +863,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"INVITE_DELETE" => {
|
"INVITE_DELETE" => {
|
||||||
let new_data: types::InviteDelete =
|
let new_data: types::InviteDelete =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -817,7 +875,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"MESSAGE_CREATE" => {
|
"MESSAGE_CREATE" => {
|
||||||
let new_data: types::MessageCreate =
|
let new_data: types::MessageCreate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -828,7 +887,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"MESSAGE_UPDATE" => {
|
"MESSAGE_UPDATE" => {
|
||||||
let new_data: types::MessageUpdate =
|
let new_data: types::MessageUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -839,7 +899,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"MESSAGE_DELETE" => {
|
"MESSAGE_DELETE" => {
|
||||||
let new_data: types::MessageDelete =
|
let new_data: types::MessageDelete =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -850,7 +911,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"MESSAGE_DELETE_BULK" => {
|
"MESSAGE_DELETE_BULK" => {
|
||||||
let new_data: types::MessageDeleteBulk =
|
let new_data: types::MessageDeleteBulk =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -861,7 +923,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"MESSAGE_REACTION_ADD" => {
|
"MESSAGE_REACTION_ADD" => {
|
||||||
let new_data: types::MessageReactionAdd =
|
let new_data: types::MessageReactionAdd =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -872,7 +935,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"MESSAGE_REACTION_REMOVE" => {
|
"MESSAGE_REACTION_REMOVE" => {
|
||||||
let new_data: types::MessageReactionRemove =
|
let new_data: types::MessageReactionRemove =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -883,7 +947,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"MESSAGE_REACTION_REMOVE_ALL" => {
|
"MESSAGE_REACTION_REMOVE_ALL" => {
|
||||||
let new_data: types::MessageReactionRemoveAll =
|
let new_data: types::MessageReactionRemoveAll =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -894,7 +959,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"MESSAGE_REACTION_REMOVE_EMOJI" => {
|
"MESSAGE_REACTION_REMOVE_EMOJI" => {
|
||||||
let new_data: types::MessageReactionRemoveEmoji =
|
let new_data: types::MessageReactionRemoveEmoji =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -905,7 +971,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"MESSAGE_ACK" => {
|
"MESSAGE_ACK" => {
|
||||||
let new_data: types::MessageACK =
|
let new_data: types::MessageACK =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -916,7 +983,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"PRESENCE_UPDATE" => {
|
"PRESENCE_UPDATE" => {
|
||||||
let new_data: types::PresenceUpdate =
|
let new_data: types::PresenceUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -927,7 +995,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"RELATIONSHIP_ADD" => {
|
"RELATIONSHIP_ADD" => {
|
||||||
let new_data: types::RelationshipAdd =
|
let new_data: types::RelationshipAdd =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -938,7 +1007,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"RELATIONSHIP_REMOVE" => {
|
"RELATIONSHIP_REMOVE" => {
|
||||||
let new_data: types::RelationshipRemove =
|
let new_data: types::RelationshipRemove =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -949,7 +1019,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"STAGE_INSTANCE_CREATE" => {
|
"STAGE_INSTANCE_CREATE" => {
|
||||||
let new_data: types::StageInstanceCreate =
|
let new_data: types::StageInstanceCreate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -960,7 +1031,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"STAGE_INSTANCE_UPDATE" => {
|
"STAGE_INSTANCE_UPDATE" => {
|
||||||
let new_data: types::StageInstanceUpdate =
|
let new_data: types::StageInstanceUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -971,7 +1043,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"STAGE_INSTANCE_DELETE" => {
|
"STAGE_INSTANCE_DELETE" => {
|
||||||
let new_data: types::StageInstanceDelete =
|
let new_data: types::StageInstanceDelete =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -982,7 +1055,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"SESSIONS_REPLACE" => {
|
"SESSIONS_REPLACE" => {
|
||||||
let sessions: Vec<types::Session> =
|
let sessions: Vec<types::Session> =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
let new_data = types::SessionsReplace { sessions };
|
let new_data = types::SessionsReplace { sessions };
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
|
@ -994,7 +1068,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"TYPING_START" => {
|
"TYPING_START" => {
|
||||||
let new_data: types::TypingStartEvent =
|
let new_data: types::TypingStartEvent =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -1005,7 +1080,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"USER_UPDATE" => {
|
"USER_UPDATE" => {
|
||||||
let new_data: types::UserUpdate =
|
let new_data: types::UserUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -1013,14 +1089,23 @@ impl Gateway {
|
||||||
.update
|
.update
|
||||||
.update_data(new_data)
|
.update_data(new_data)
|
||||||
.await;
|
.await;
|
||||||
},
|
}
|
||||||
"USER_GUILD_SETTINGS_UPDATE" => {
|
"USER_GUILD_SETTINGS_UPDATE" => {
|
||||||
let new_data: types::UserGuildSettingsUpdate = serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
let new_data: types::UserGuildSettingsUpdate =
|
||||||
self.events.lock().await.user.guild_settings_update.update_data(new_data).await;
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
|
self.events
|
||||||
|
.lock()
|
||||||
|
.await
|
||||||
|
.user
|
||||||
|
.guild_settings_update
|
||||||
|
.update_data(new_data)
|
||||||
|
.await;
|
||||||
}
|
}
|
||||||
"VOICE_STATE_UPDATE" => {
|
"VOICE_STATE_UPDATE" => {
|
||||||
let new_data: types::VoiceStateUpdate =
|
let new_data: types::VoiceStateUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -1031,7 +1116,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"VOICE_SERVER_UPDATE" => {
|
"VOICE_SERVER_UPDATE" => {
|
||||||
let new_data: types::VoiceServerUpdate =
|
let new_data: types::VoiceServerUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -1042,7 +1128,8 @@ impl Gateway {
|
||||||
}
|
}
|
||||||
"WEBHOOKS_UPDATE" => {
|
"WEBHOOKS_UPDATE" => {
|
||||||
let new_data: types::WebhooksUpdate =
|
let new_data: types::WebhooksUpdate =
|
||||||
serde_json::from_str(gateway_payload.event_data.unwrap().get()).unwrap();
|
serde_json::from_str(gateway_payload.event_data.unwrap().get())
|
||||||
|
.unwrap();
|
||||||
self.events
|
self.events
|
||||||
.lock()
|
.lock()
|
||||||
.await
|
.await
|
||||||
|
@ -1072,7 +1159,13 @@ impl Gateway {
|
||||||
GATEWAY_HEARTBEAT_ACK => {
|
GATEWAY_HEARTBEAT_ACK => {
|
||||||
println!("GW: Received Heartbeat ACK");
|
println!("GW: Received Heartbeat ACK");
|
||||||
}
|
}
|
||||||
GATEWAY_IDENTIFY | GATEWAY_UPDATE_PRESENCE | GATEWAY_UPDATE_VOICE_STATE | GATEWAY_RESUME | GATEWAY_REQUEST_GUILD_MEMBERS | GATEWAY_CALL_SYNC | GATEWAY_LAZY_REQUEST => {
|
GATEWAY_IDENTIFY
|
||||||
|
| GATEWAY_UPDATE_PRESENCE
|
||||||
|
| GATEWAY_UPDATE_VOICE_STATE
|
||||||
|
| GATEWAY_RESUME
|
||||||
|
| GATEWAY_REQUEST_GUILD_MEMBERS
|
||||||
|
| GATEWAY_CALL_SYNC
|
||||||
|
| GATEWAY_LAZY_REQUEST => {
|
||||||
panic!(
|
panic!(
|
||||||
"Received gateway op code that's meant to be sent, not received ({})",
|
"Received gateway op code that's meant to be sent, not received ({})",
|
||||||
gateway_payload.op_code
|
gateway_payload.op_code
|
||||||
|
@ -1112,7 +1205,7 @@ struct HeartbeatHandler {
|
||||||
/// The send channel for the heartbeat thread
|
/// The send channel for the heartbeat thread
|
||||||
pub send: Sender<HeartbeatThreadCommunication>,
|
pub send: Sender<HeartbeatThreadCommunication>,
|
||||||
/// The handle of the thread
|
/// The handle of the thread
|
||||||
handle: JoinHandle<()>
|
handle: JoinHandle<()>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl HeartbeatHandler {
|
impl HeartbeatHandler {
|
||||||
|
@ -1130,7 +1223,6 @@ impl HeartbeatHandler {
|
||||||
let (send, mut receive) = mpsc::channel(32);
|
let (send, mut receive) = mpsc::channel(32);
|
||||||
|
|
||||||
let handle: JoinHandle<()> = task::spawn(async move {
|
let handle: JoinHandle<()> = task::spawn(async move {
|
||||||
|
|
||||||
let mut last_heartbeat_timestamp: Instant = time::Instant::now();
|
let mut last_heartbeat_timestamp: Instant = time::Instant::now();
|
||||||
let mut last_seq_number: Option<u64> = None;
|
let mut last_seq_number: Option<u64> = None;
|
||||||
|
|
||||||
|
@ -1142,7 +1234,8 @@ impl HeartbeatHandler {
|
||||||
last_seq_number = Some(received_communication.unwrap().sequence_number);
|
last_seq_number = Some(received_communication.unwrap().sequence_number);
|
||||||
}
|
}
|
||||||
|
|
||||||
let should_send = last_heartbeat_timestamp.elapsed().as_millis() >= heartbeat_interval;
|
let should_send =
|
||||||
|
last_heartbeat_timestamp.elapsed().as_millis() >= heartbeat_interval;
|
||||||
|
|
||||||
if should_send {
|
if should_send {
|
||||||
println!("GW: Sending Heartbeat..");
|
println!("GW: Sending Heartbeat..");
|
||||||
|
|
|
@ -2,8 +2,8 @@ use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::types::{
|
use crate::types::{
|
||||||
entities::{
|
entities::{
|
||||||
Application, Attachment, Channel, Emoji, GuildMember, RoleSubscriptionData, Sticker,
|
Application, Attachment, Channel, Emoji, GuildMember, PublicUser, RoleSubscriptionData,
|
||||||
StickerItem, User, PublicUser
|
Sticker, StickerItem, User,
|
||||||
},
|
},
|
||||||
utils::Snowflake,
|
utils::Snowflake,
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::types::entities::{Guild, UnavailableGuild, PublicUser};
|
use crate::types::entities::{Guild, PublicUser, UnavailableGuild};
|
||||||
use crate::types::events::WebSocketEvent;
|
use crate::types::events::WebSocketEvent;
|
||||||
use crate::types::{AuditLogEntry, Emoji, GuildMember, GuildScheduledEvent, RoleObject, Sticker};
|
use crate::types::{AuditLogEntry, Emoji, GuildMember, GuildScheduledEvent, RoleObject, Sticker};
|
||||||
use chrono::{DateTime, Utc};
|
use chrono::{DateTime, Utc};
|
||||||
|
|
|
@ -14,9 +14,9 @@ impl WebSocketEvent for UserUpdate {}
|
||||||
|
|
||||||
#[derive(Debug, Default, Deserialize, Serialize)]
|
#[derive(Debug, Default, Deserialize, Serialize)]
|
||||||
/// Undocumented
|
/// Undocumented
|
||||||
///
|
///
|
||||||
/// Possibly an update for muted guild / channel settings for the current user
|
/// Possibly an update for muted guild / channel settings for the current user
|
||||||
///
|
///
|
||||||
/// {"version":2,"suppress_roles":false,"suppress_everyone":false,"notify_highlights":0,"muted":false,"mute_scheduled_events":false,"mute_config":null,"mobile_push":true,"message_notifications":1,"hide_muted_channels":false,"guild_id":"848582562217590824","flags":0,"channel_overrides":[{"muted":false,"mute_config":null,"message_notifications":3,"flags":4096,"collapsed":false,"channel_id":"1042689182893604885"}]}
|
/// {"version":2,"suppress_roles":false,"suppress_everyone":false,"notify_highlights":0,"muted":false,"mute_scheduled_events":false,"mute_config":null,"mobile_push":true,"message_notifications":1,"hide_muted_channels":false,"guild_id":"848582562217590824","flags":0,"channel_overrides":[{"muted":false,"mute_config":null,"message_notifications":3,"flags":4096,"collapsed":false,"channel_id":"1042689182893604885"}]}
|
||||||
pub struct UserGuildSettingsUpdate {
|
pub struct UserGuildSettingsUpdate {
|
||||||
pub version: u8,
|
pub version: u8,
|
||||||
|
@ -32,16 +32,16 @@ pub struct UserGuildSettingsUpdate {
|
||||||
pub hide_muted_channels: bool,
|
pub hide_muted_channels: bool,
|
||||||
pub guild_id: Snowflake,
|
pub guild_id: Snowflake,
|
||||||
pub flags: i32,
|
pub flags: i32,
|
||||||
pub channel_overrides: Vec<UserGuildSettingsChannelOverride>
|
pub channel_overrides: Vec<UserGuildSettingsChannelOverride>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl WebSocketEvent for UserGuildSettingsUpdate {}
|
impl WebSocketEvent for UserGuildSettingsUpdate {}
|
||||||
|
|
||||||
#[derive(Debug, Default, Deserialize, Serialize)]
|
#[derive(Debug, Default, Deserialize, Serialize)]
|
||||||
/// Undocumented
|
/// Undocumented
|
||||||
///
|
///
|
||||||
/// Received in [UserGuildSettingsUpdate]
|
/// Received in [UserGuildSettingsUpdate]
|
||||||
///
|
///
|
||||||
/// {"muted":false,"mute_config":null,"message_notifications":3,"flags":4096,"collapsed":false,"channel_id":"1042689182893604885"}
|
/// {"muted":false,"mute_config":null,"message_notifications":3,"flags":4096,"collapsed":false,"channel_id":"1042689182893604885"}
|
||||||
pub struct UserGuildSettingsChannelOverride {
|
pub struct UserGuildSettingsChannelOverride {
|
||||||
pub muted: bool,
|
pub muted: bool,
|
||||||
|
@ -51,4 +51,4 @@ pub struct UserGuildSettingsChannelOverride {
|
||||||
pub flags: i32,
|
pub flags: i32,
|
||||||
pub collapsed: bool,
|
pub collapsed: bool,
|
||||||
pub channel_id: Snowflake,
|
pub channel_id: Snowflake,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue