Add Application Command Permissions & Update event
This commit is contained in:
parent
15ffdcecaa
commit
be73bf19eb
|
@ -232,7 +232,10 @@ impl Gateway {
|
|||
self.events.lock().await.session.ready_supplimental.update_data(new_data).await;
|
||||
}
|
||||
"RESUMED" => {}
|
||||
"APPLICATION_COMMAND_PERMISSIONS_UPDATE" => {}
|
||||
"APPLICATION_COMMAND_PERMISSIONS_UPDATE" => {
|
||||
let new_data: types::ApplicationCommandPermissionsUpdate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap();
|
||||
self.events.lock().await.application.command_permissions_update.update_data(new_data).await;
|
||||
}
|
||||
"AUTO_MODERATION_RULE_CREATE" => {
|
||||
let new_data: types::AutoModerationRuleCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap();
|
||||
self.events.lock().await.auto_moderation.rule_create.update_data(new_data).await;
|
||||
|
@ -716,6 +719,7 @@ mod events {
|
|||
use super::*;
|
||||
#[derive(Default, Debug)]
|
||||
pub struct Events {
|
||||
pub application: Application,
|
||||
pub auto_moderation: AutoModeration,
|
||||
pub session: Session,
|
||||
pub message: Message,
|
||||
|
@ -735,6 +739,11 @@ mod events {
|
|||
pub gateway_resume: GatewayEvent<types::GatewayResume>,
|
||||
}
|
||||
|
||||
#[derive(Default, Debug)]
|
||||
pub struct Application {
|
||||
pub command_permissions_update: GatewayEvent<types::ApplicationCommandPermissionsUpdate>,
|
||||
}
|
||||
|
||||
#[derive(Default, Debug)]
|
||||
pub struct AutoModeration {
|
||||
pub rule_create: GatewayEvent<types::AutoModerationRuleCreate>,
|
||||
|
|
|
@ -2,6 +2,7 @@ use crate::types::utils::Snowflake;
|
|||
use bitflags::{bitflags, Flags};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::Value;
|
||||
use serde_repr::{Serialize_repr, Deserialize_repr};
|
||||
#[cfg(feature = "sqlx")]
|
||||
use sqlx::FromRow;
|
||||
|
||||
|
@ -136,3 +137,33 @@ pub struct ApplicationCommandInteractionDataOption {
|
|||
pub value: Value,
|
||||
pub options: Vec<ApplicationCommandInteractionDataOption>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
|
||||
/// See https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-guild-application-command-permissions-structure
|
||||
pub struct GuildApplicationCommandPermissions {
|
||||
pub id: Snowflake,
|
||||
pub application_id: Snowflake,
|
||||
pub guild_id: Snowflake,
|
||||
pub permissions: Vec<ApplicationCommandPermission>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Clone, PartialEq, Serialize, Deserialize)]
|
||||
/// See https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-application-command-permissions-structure
|
||||
pub struct ApplicationCommandPermission {
|
||||
pub id: Snowflake,
|
||||
#[serde(rename = "type")]
|
||||
pub permission_type: ApplicationCommandPermissionType,
|
||||
/// true to allow, false, to disallow
|
||||
pub permission: bool,
|
||||
}
|
||||
|
||||
#[derive(Serialize_repr, Deserialize_repr, Debug, Default, Clone, PartialEq)]
|
||||
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
|
||||
#[repr(u8)]
|
||||
/// See https://discord.com/developers/docs/interactions/application-commands#application-command-permissions-object-application-command-permission-type
|
||||
pub enum ApplicationCommandPermissionType {
|
||||
#[default]
|
||||
Role = 1,
|
||||
User = 2,
|
||||
Channel = 3
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::types::{WebSocketEvent, GuildApplicationCommandPermissions};
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, Default)]
|
||||
/// See https://discord.com/developers/docs/topics/gateway-events#application-command-permissions-update
|
||||
pub struct ApplicationCommandPermissionsUpdate {
|
||||
#[serde(flatten)]
|
||||
pub permissions: GuildApplicationCommandPermissions,
|
||||
}
|
||||
|
||||
impl WebSocketEvent for ApplicationCommandPermissionsUpdate {}
|
|
@ -24,6 +24,7 @@ mod relationship;
|
|||
mod auto_moderation;
|
||||
mod stage_instance;
|
||||
mod interaction;
|
||||
mod application;
|
||||
|
||||
pub use channel::*;
|
||||
pub use guild::*;
|
||||
|
@ -49,6 +50,7 @@ pub use relationship::*;
|
|||
pub use auto_moderation::*;
|
||||
pub use stage_instance::*;
|
||||
pub use interaction::*;
|
||||
pub use application::*;
|
||||
|
||||
pub trait WebSocketEvent {}
|
||||
|
||||
|
|
Loading…
Reference in New Issue