diff --git a/src/api/types.rs b/src/api/types.rs index 09d3ceb..1abc237 100644 --- a/src/api/types.rs +++ b/src/api/types.rs @@ -1272,8 +1272,8 @@ impl WebSocketEvent for GuildEmojisUpdate {} /// {"t":"CALL_CREATE","s":2,"op":0,"d":{"voice_states":[],"ringing":[],"region":"milan","message_id":"1107187514906775613","embedded_activities":[],"channel_id":"837609115475771392"}} pub struct CallCreate { pub voice_states: Vec, - /// What is this? - pub ringing: Vec, + /// Seems like a vec of channel ids + pub ringing: Vec, pub region: String, // milan pub message_id: String, /// What is this? @@ -1282,6 +1282,27 @@ pub struct CallCreate { } impl WebSocketEvent for CallCreate {} +#[derive(Debug, Deserialize, Serialize, Default)] +/// Undocumented +/// {"t":"CALL_UPDATE","s":5,"op":0,"d":{"ringing":["837606544539254834"],"region":"milan","message_id":"1107191540234846308","guild_id":null,"channel_id":"837609115475771392"}} +pub struct CallUpdate { + /// Seems like a vec of channel ids + pub ringing: Vec, + pub region: String, // milan + pub message_id: String, + pub guild_id: Option, + pub channel_id: String, +} +impl WebSocketEvent for CallUpdate {} + +#[derive(Debug, Deserialize, Serialize, Default)] +/// Undocumented +/// {"t":"CALL_DELETE","s":8,"op":0,"d":{"channel_id":"837609115475771392"}} +pub struct CallDelete { + pub channel_id: String, +} +impl WebSocketEvent for CallDelete {} + #[derive(Debug, Default, Deserialize, Serialize)] pub struct GatewayPayload { pub op: u8, diff --git a/src/gateway.rs b/src/gateway.rs index 4d12ceb..27c3c80 100644 --- a/src/gateway.rs +++ b/src/gateway.rs @@ -216,6 +216,14 @@ impl Gateway { "CALL_CREATE" => { let new_data: CallCreate = serde_json::from_value(gateway_payload.d.unwrap()).unwrap(); self.events.lock().await.call.create.update_data(new_data).await; + }, + "CALL_UPDATE" => { + let new_data: CallUpdate = serde_json::from_value(gateway_payload.d.unwrap()).unwrap(); + self.events.lock().await.call.update.update_data(new_data).await; + } + "CALL_DELETE" => { + let new_data: CallDelete = serde_json::from_value(gateway_payload.d.unwrap()).unwrap(); + self.events.lock().await.call.delete.update_data(new_data).await; } "THREAD_CREATE" => { let thread: Channel = serde_json::from_value(gateway_payload.d.unwrap()).unwrap(); @@ -604,7 +612,9 @@ mod events { #[derive(Default, Debug)] pub struct Call { - pub create: GatewayEvent + pub create: GatewayEvent, + pub update: GatewayEvent, + pub delete: GatewayEvent } }