Add Guild Audit Log Entry Create

This commit is contained in:
kozabrada123 2023-05-20 13:03:44 +02:00
parent 6ceaee4f14
commit ed144e723d
2 changed files with 36 additions and 2 deletions

View File

@ -302,6 +302,28 @@ pub struct WelcomeScreenChannel {
pub emoji_name: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Default, Clone)]
/// See https://discord.com/developers/docs/resources/audit-log#audit-log-entry-object
pub struct AuditLogEntry {
pub target_id: Option<String>,
pub changes: Option<Vec<AuditLogChange>>,
pub user_id: Option<String>,
pub id: String,
// to:do implement an enum for these types
pub action_type: u8,
// to:do add better options type
pub options: Option<serde_json::Value>,
pub reason: Option<String>
}
#[derive(Serialize, Deserialize, Debug, Default, Clone)]
/// See https://discord.com/developers/docs/resources/audit-log#audit-log-change-object
pub struct AuditLogChange {
pub new_value: Option<serde_json::Value>,
pub old_value: Option<serde_json::Value>,
pub key: String
}
#[derive(Serialize, Deserialize, Debug, Default, Clone)]
/// See https://discord.com/developers/docs/topics/permissions#role-object
pub struct RoleObject {
@ -1464,6 +1486,15 @@ pub struct GuildDelete {
impl WebSocketEvent for GuildDelete {}
#[derive(Debug, Default, Deserialize, Serialize)]
/// See https://discord.com/developers/docs/topics/gateway-events#guild-audit-log-entry-create
pub struct GuildAuditLogEntryCreate {
#[serde(flatten)]
pub entry: AuditLogEntry
}
impl WebSocketEvent for GuildAuditLogEntryCreate {}
#[derive(Debug, Default, Deserialize, Serialize)]
/// See https://discord.com/developers/docs/topics/gateway-events#guild-emojis-update
pub struct GuildEmojisUpdate {

View File

@ -286,7 +286,10 @@ impl Gateway {
let new_data: GuildDelete = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap();
self.events.lock().await.guild.delete.update_data(new_data).await;
}
"GUILD_AUDIT_LOG_ENTRY_CREATE" => {}
"GUILD_AUDIT_LOG_ENTRY_CREATE" => {
let new_data: GuildAuditLogEntryCreate = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap();
self.events.lock().await.guild.audit_log_entry_create.update_data(new_data).await;
}
"GUILD_BAN_ADD" => {
let new_data: GuildBanAdd = serde_json::from_str(gateway_payload.d.unwrap().get()).unwrap();
self.events.lock().await.guild.ban_add.update_data(new_data).await;
@ -681,7 +684,7 @@ mod events {
pub create: GatewayEvent<GuildCreate>,
pub update: GatewayEvent<GuildUpdate>,
pub delete: GatewayEvent<GuildDelete>,
//pub audit_log_entry_create: GatewayEvent<ThreadCreate>,
pub audit_log_entry_create: GatewayEvent<GuildAuditLogEntryCreate>,
pub ban_add: GatewayEvent<GuildBanAdd>,
pub ban_remove: GatewayEvent<GuildBanRemove>,
pub emojis_update: GatewayEvent<GuildEmojisUpdate>,