Add InteractionCreate
This commit is contained in:
parent
5b04370d46
commit
15ffdcecaa
|
@ -405,7 +405,10 @@ impl Gateway {
|
||||||
let new_data: types::IntegrationDelete = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap();
|
let new_data: types::IntegrationDelete = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap();
|
||||||
self.events.lock().await.integration.delete.update_data(new_data).await;
|
self.events.lock().await.integration.delete.update_data(new_data).await;
|
||||||
}
|
}
|
||||||
"INTERACTION_CREATE" => {}
|
"INTERACTION_CREATE" => {
|
||||||
|
let new_data: types::InteractionCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap();
|
||||||
|
self.events.lock().await.interaction.create.update_data(new_data).await;
|
||||||
|
}
|
||||||
"INVITE_CREATE" => {
|
"INVITE_CREATE" => {
|
||||||
let new_data: types::InviteCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap();
|
let new_data: types::InviteCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap();
|
||||||
self.events.lock().await.invite.create.update_data(new_data).await;
|
self.events.lock().await.invite.create.update_data(new_data).await;
|
||||||
|
@ -723,6 +726,7 @@ mod events {
|
||||||
pub guild: Guild,
|
pub guild: Guild,
|
||||||
pub invite: Invite,
|
pub invite: Invite,
|
||||||
pub integration: Integration,
|
pub integration: Integration,
|
||||||
|
pub interaction: Interaction,
|
||||||
pub stage_instance: StageInstance,
|
pub stage_instance: StageInstance,
|
||||||
pub call: Call,
|
pub call: Call,
|
||||||
pub voice: Voice,
|
pub voice: Voice,
|
||||||
|
@ -837,6 +841,11 @@ mod events {
|
||||||
pub delete: GatewayEvent<types::IntegrationDelete>
|
pub delete: GatewayEvent<types::IntegrationDelete>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Default, Debug)]
|
||||||
|
pub struct Interaction {
|
||||||
|
pub create: GatewayEvent<types::InteractionCreate>,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Default, Debug)]
|
#[derive(Default, Debug)]
|
||||||
pub struct Call {
|
pub struct Call {
|
||||||
pub create: GatewayEvent<types::CallCreate>,
|
pub create: GatewayEvent<types::CallCreate>,
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
use crate::types::{Interaction, WebSocketEvent};
|
||||||
|
|
||||||
|
#[derive(Debug, Default, Deserialize, Serialize)]
|
||||||
|
/// See https://discord.com/developers/docs/topics/gateway-events#interaction-create
|
||||||
|
pub struct InteractionCreate {
|
||||||
|
#[serde(flatten)]
|
||||||
|
pub interaction: Interaction,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl WebSocketEvent for InteractionCreate {}
|
|
@ -23,6 +23,7 @@ mod lazy_request;
|
||||||
mod relationship;
|
mod relationship;
|
||||||
mod auto_moderation;
|
mod auto_moderation;
|
||||||
mod stage_instance;
|
mod stage_instance;
|
||||||
|
mod interaction;
|
||||||
|
|
||||||
pub use channel::*;
|
pub use channel::*;
|
||||||
pub use guild::*;
|
pub use guild::*;
|
||||||
|
@ -47,6 +48,7 @@ pub use lazy_request::*;
|
||||||
pub use relationship::*;
|
pub use relationship::*;
|
||||||
pub use auto_moderation::*;
|
pub use auto_moderation::*;
|
||||||
pub use stage_instance::*;
|
pub use stage_instance::*;
|
||||||
|
pub use interaction::*;
|
||||||
|
|
||||||
pub trait WebSocketEvent {}
|
pub trait WebSocketEvent {}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ use crate::types::utils::Snowflake;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_json::Value;
|
use serde_json::Value;
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
|
||||||
pub struct Interaction {
|
pub struct Interaction {
|
||||||
pub id: Snowflake,
|
pub id: Snowflake,
|
||||||
pub r#type: InteractionType,
|
pub r#type: InteractionType,
|
||||||
|
@ -15,8 +15,9 @@ pub struct Interaction {
|
||||||
pub version: i32,
|
pub version: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
|
||||||
pub enum InteractionType {
|
pub enum InteractionType {
|
||||||
|
#[default]
|
||||||
SelfCommand = 0,
|
SelfCommand = 0,
|
||||||
Ping = 1,
|
Ping = 1,
|
||||||
ApplicationCommand = 2,
|
ApplicationCommand = 2,
|
||||||
|
|
Loading…
Reference in New Issue