Fix encoding wrong

This commit is contained in:
kozabrada123 2023-05-05 20:58:00 +02:00
parent 867da4fd31
commit 18590ff075
2 changed files with 21 additions and 21 deletions

View File

@ -853,7 +853,7 @@ impl WebSocketEvent for GatewayHeartbeatAck {}
#[derive(Debug, Default, Deserialize, Serialize)] #[derive(Debug, Default, Deserialize, Serialize)]
pub struct GatewayPayload { pub struct GatewayPayload {
pub op: u8, pub op: u8,
pub d: Option<String>, pub d: Option<serde_json::Value>,
pub s: Option<u64>, pub s: Option<u64>,
pub t: Option<String>, pub t: Option<String>,
} }

View File

@ -68,7 +68,7 @@ impl<'a> Gateway<'a> {
// See https://discord.com/developers/docs/topics/gateway-events#receive-events // See https://discord.com/developers/docs/topics/gateway-events#receive-events
match gateway_payload_t.as_str() { match gateway_payload_t.as_str() {
"READY" => { "READY" => {
let data: GatewayReady = serde_json::from_str(gateway_payload.d.unwrap().as_str()).unwrap(); let data: GatewayReady = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
} }
"APPLICATION_COMMAND_PERMISSIONS_UPDATE" => {} "APPLICATION_COMMAND_PERMISSIONS_UPDATE" => {}
"AUTO_MODERATION_RULE_CREATE" => {} "AUTO_MODERATION_RULE_CREATE" => {}
@ -113,46 +113,46 @@ impl<'a> Gateway<'a> {
"INVITE_CREATE" => {} "INVITE_CREATE" => {}
"INVITE_DELETE" => {} "INVITE_DELETE" => {}
"MESSAGE_CREATE" => { "MESSAGE_CREATE" => {
let new_data: MessageCreate = serde_json::from_str(gateway_payload.d.unwrap().as_str()).unwrap(); let new_data: MessageCreate = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
self.events.message.create.update_data(new_data); self.events.message.create.update_data(new_data);
} }
"MESSAGE_UPDATE" => { "MESSAGE_UPDATE" => {
let new_data: MessageUpdate = serde_json::from_str(gateway_payload.d.unwrap().as_str()).unwrap(); let new_data: MessageUpdate = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
self.events.message.update.update_data(new_data); self.events.message.update.update_data(new_data);
} }
"MESSAGE_DELETE" => { "MESSAGE_DELETE" => {
let new_data: MessageDelete = serde_json::from_str(gateway_payload.d.unwrap().as_str()).unwrap(); let new_data: MessageDelete = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
self.events.message.delete.update_data(new_data); self.events.message.delete.update_data(new_data);
} }
"MESSAGE_DELETE_BULK" => { "MESSAGE_DELETE_BULK" => {
let new_data: MessageDeleteBulk = serde_json::from_str(gateway_payload.d.unwrap().as_str()).unwrap(); let new_data: MessageDeleteBulk = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
self.events.message.delete_bulk.update_data(new_data); self.events.message.delete_bulk.update_data(new_data);
} }
"MESSAGE_REACTION_ADD" => { "MESSAGE_REACTION_ADD" => {
let new_data: MessageReactionAdd = serde_json::from_str(gateway_payload.d.unwrap().as_str()).unwrap(); let new_data: MessageReactionAdd = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
self.events.message.reaction_add.update_data(new_data); self.events.message.reaction_add.update_data(new_data);
} }
"MESSAGE_REACTION_REMOVE" => { "MESSAGE_REACTION_REMOVE" => {
let new_data: MessageReactionRemove = serde_json::from_str(gateway_payload.d.unwrap().as_str()).unwrap(); let new_data: MessageReactionRemove = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
self.events.message.reaction_remove.update_data(new_data); self.events.message.reaction_remove.update_data(new_data);
} }
"MESSAGE_REACTION_REMOVE_ALL" => { "MESSAGE_REACTION_REMOVE_ALL" => {
let new_data: MessageReactionRemoveAll = serde_json::from_str(gateway_payload.d.unwrap().as_str()).unwrap(); let new_data: MessageReactionRemoveAll = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
self.events.message.reaction_remove_all.update_data(new_data); self.events.message.reaction_remove_all.update_data(new_data);
} }
"MESSAGE_REACTION_REMOVE_EMOJI" => { "MESSAGE_REACTION_REMOVE_EMOJI" => {
let new_data: MessageReactionRemoveEmoji= serde_json::from_str(gateway_payload.d.unwrap().as_str()).unwrap(); let new_data: MessageReactionRemoveEmoji= serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
self.events.message.reaction_remove_emoji.update_data(new_data); self.events.message.reaction_remove_emoji.update_data(new_data);
} }
"PRESENCE_UPDATE" => { "PRESENCE_UPDATE" => {
let new_data: PresenceUpdate = serde_json::from_str(gateway_payload.d.unwrap().as_str()).unwrap(); let new_data: PresenceUpdate = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
self.events.user.presence_update.update_data(new_data); self.events.user.presence_update.update_data(new_data);
} }
"STAGE_INSTANCE_CREATE" => {} "STAGE_INSTANCE_CREATE" => {}
"STAGE_INSTANCE_UPDATE" => {} "STAGE_INSTANCE_UPDATE" => {}
"STAGE_INSTANCE_DELETE" => {} "STAGE_INSTANCE_DELETE" => {}
"TYPING_START" => { "TYPING_START" => {
let new_data: TypingStartEvent = serde_json::from_str(gateway_payload.d.unwrap().as_str()).unwrap(); let new_data: TypingStartEvent = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
self.events.user.typing_start_event.update_data(new_data); self.events.user.typing_start_event.update_data(new_data);
} }
"USER_UPDATE" => {} "USER_UPDATE" => {}
@ -172,7 +172,7 @@ impl<'a> Gateway<'a> {
// Hello // Hello
// Starts our heartbeat // Starts our heartbeat
10 => { 10 => {
let gateway_hello: HelloData = serde_json::from_str(gateway_payload.d.unwrap().as_ref()).unwrap(); let gateway_hello: HelloData = serde_json::from_value(gateway_payload.d.unwrap()).unwrap();
self.heartbeat_handler = Some(HeartbeatHandler::new(gateway_hello.heartbeat_interval, self.websocket.tx.clone())); self.heartbeat_handler = Some(HeartbeatHandler::new(gateway_hello.heartbeat_interval, self.websocket.tx.clone()));
} }
// Heartbeat ACK // Heartbeat ACK
@ -194,9 +194,9 @@ impl<'a> Gateway<'a> {
} }
/// Sends json to the gateway with an opcode /// Sends json to the gateway with an opcode
async fn send_json_event(&self, op: u8, to_send: String) { async fn send_json_event(&self, op: u8, to_send: serde_json::Value) {
let gateway_payload: GatewayPayload = GatewayPayload { op, d: Some(to_send), s: None, t: None }; let gateway_payload = GatewayPayload { op, d: Some(to_send), s: None, t: None };
let payload_json = serde_json::to_string(&gateway_payload).unwrap(); let payload_json = serde_json::to_string(&gateway_payload).unwrap();
@ -210,25 +210,25 @@ impl<'a> Gateway<'a> {
/// Sends an identify event to the gateway /// Sends an identify event to the gateway
pub async fn send_identify(&self, to_send: GatewayIdentifyPayload) { pub async fn send_identify(&self, to_send: GatewayIdentifyPayload) {
let to_send_json = serde_json::to_string(&to_send).unwrap(); let to_send_value = serde_json::to_value(&to_send).unwrap();
self.send_json_event(2, to_send_json).await; self.send_json_event(2, to_send_value).await;
} }
/// Sends a resume event to the gateway /// Sends a resume event to the gateway
pub async fn send_resume(&self, to_send: GatewayResume) { pub async fn send_resume(&self, to_send: GatewayResume) {
let to_send_json = serde_json::to_string(&to_send).unwrap(); let to_send_value = serde_json::to_value(&to_send).unwrap();
self.send_json_event(6, to_send_json).await; self.send_json_event(6, to_send_value).await;
} }
/// Sends an update presence event to the gateway /// Sends an update presence event to the gateway
pub async fn send_update_presence(&self, to_send: PresenceUpdate) { pub async fn send_update_presence(&self, to_send: PresenceUpdate) {
let to_send_json = serde_json::to_string(&to_send).unwrap(); let to_send_value = serde_json::to_value(&to_send).unwrap();
self.send_json_event(3, to_send_json).await; self.send_json_event(3, to_send_value).await;
} }
} }