diff --git a/bot.ts b/bot.ts index b7be6f2f8..a4a884388 100644 --- a/bot.ts +++ b/bot.ts @@ -230,6 +230,7 @@ export function createEventHandlers( return { debug: events.debug ?? ignore, + auditLogEntryCreate: events.auditLogEntryCreate ?? ignore, automodRuleCreate: events.automodRuleCreate ?? ignore, automodRuleUpdate: events.automodRuleUpdate ?? ignore, automodRuleDelete: events.automodRuleDelete ?? ignore, @@ -550,6 +551,7 @@ export function createTransformers(options: Partial) { export interface EventHandlers { debug: (text: string, ...args: any[]) => unknown; + auditLogEntryCreate: (bot: Bot, log: AuditLogEntry, guildId: bigint) => unknown; automodRuleCreate: (bot: Bot, rule: AutoModerationRule) => unknown; automodRuleUpdate: (bot: Bot, rule: AutoModerationRule) => unknown; automodRuleDelete: (bot: Bot, rule: AutoModerationRule) => unknown; @@ -800,6 +802,7 @@ export interface BotGatewayHandlerOptions { STAGE_INSTANCE_CREATE: typeof handlers.handleStageInstanceCreate; STAGE_INSTANCE_UPDATE: typeof handlers.handleStageInstanceUpdate; STAGE_INSTANCE_DELETE: typeof handlers.handleStageInstanceDelete; + GUILD_AUDIT_LOG_ENTRY_CREATE: typeof handlers.handleGuildAuditLogEntryCreate; GUILD_BAN_ADD: typeof handlers.handleGuildBanAdd; GUILD_BAN_REMOVE: typeof handlers.handleGuildBanRemove; GUILD_CREATE: typeof handlers.handleGuildCreate; @@ -869,6 +872,7 @@ export function createBotGatewayHandlers( handlers.handleStageInstanceDelete, // guilds + GUILD_AUDIT_LOG_ENTRY_CREATE: options.GUILD_AUDIT_LOG_ENTRY_CREATE ?? handlers.handleGuildAuditLogEntryCreate, GUILD_BAN_ADD: options.GUILD_BAN_ADD ?? handlers.handleGuildBanAdd, GUILD_BAN_REMOVE: options.GUILD_BAN_REMOVE ?? handlers.handleGuildBanRemove, GUILD_CREATE: options.GUILD_CREATE ?? handlers.handleGuildCreate, diff --git a/handlers/guilds/GUILD_AUDIT_LOG_ENTRY_CREATE.ts b/handlers/guilds/GUILD_AUDIT_LOG_ENTRY_CREATE.ts new file mode 100644 index 000000000..685def91d --- /dev/null +++ b/handlers/guilds/GUILD_AUDIT_LOG_ENTRY_CREATE.ts @@ -0,0 +1,8 @@ +import type { Bot } from "../../bot.ts"; +import { DiscordGatewayPayload, DiscordAuditLogEntry } from "../../types/discord.ts"; + +export async function handleGuildAuditLogEntryCreate(bot: Bot, data: DiscordGatewayPayload) { + // TODO: better type here + const payload = data.d as DiscordAuditLogEntry & { guild_id: string }; + bot.events.auditLogEntryCreate(bot, bot.transformers.auditLogEntry(bot, payload), bot.transformers.snowflake(payload.guild_id)); +} diff --git a/handlers/guilds/mod.ts b/handlers/guilds/mod.ts index 354f21794..a96a507a6 100644 --- a/handlers/guilds/mod.ts +++ b/handlers/guilds/mod.ts @@ -1,5 +1,6 @@ export * from "./scheduledEvents/mod.ts"; +export * from "./GUILD_AUDIT_LOG_ENTRY_CREATE.ts"; export * from "./GUILD_BAN_ADD.ts"; export * from "./GUILD_BAN_REMOVE.ts"; export * from "./GUILD_CREATE.ts";