From 310979808eb3a517ccf0f16d66a08c5cbf25ae0d Mon Sep 17 00:00:00 2001 From: Souji Date: Sun, 17 Sep 2023 11:47:46 +0200 Subject: [PATCH] feat(GuildAuditLogsEntry): expose extra integrationType in relevant log types (#9796) * feat(GuildAuditLogsEntry): expose ingrationType * fix: not optional, if extra is present on these types not necessary, as it is conditionally assigned * fix: remove non-extra approach * fix(types): string is not guaranteed to be the known enum * fix: adapt type tests to new extra properties * fix: include null in type, since extra is not always populated --------- Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> --- .../discord.js/src/structures/GuildAuditLogsEntry.js | 10 ++++++++++ packages/discord.js/typings/index.d.ts | 2 ++ packages/discord.js/typings/index.test-d.ts | 7 ++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/discord.js/src/structures/GuildAuditLogsEntry.js b/packages/discord.js/src/structures/GuildAuditLogsEntry.js index febbd12929b8..4498c9384119 100644 --- a/packages/discord.js/src/structures/GuildAuditLogsEntry.js +++ b/packages/discord.js/src/structures/GuildAuditLogsEntry.js @@ -242,6 +242,16 @@ class GuildAuditLogsEntry { }; break; + case AuditLogEvent.MemberKick: + case AuditLogEvent.MemberRoleUpdate: { + if (data.integration_type) { + this.extra = { + integrationType: data.integration_type, + }; + } + break; + } + default: break; } diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 7fedde4b989e..929addb005b8 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -5414,6 +5414,8 @@ interface GuildAuditLogsTypes { export type GuildAuditLogsActionType = GuildAuditLogsTypes[keyof GuildAuditLogsTypes][1] | 'All'; export interface GuildAuditLogsEntryExtraField { + [AuditLogEvent.MemberKick]: { integrationType: string } | null; + [AuditLogEvent.MemberRoleUpdate]: { integrationType: string } | null; [AuditLogEvent.MemberPrune]: { removed: number; days: number }; [AuditLogEvent.MemberMove]: { channel: VoiceBasedChannel | { id: Snowflake }; count: number }; [AuditLogEvent.MessageDelete]: { channel: GuildTextBasedChannel | { id: Snowflake }; count: number }; diff --git a/packages/discord.js/typings/index.test-d.ts b/packages/discord.js/typings/index.test-d.ts index 026e2f80794a..8dcf7f31c103 100644 --- a/packages/discord.js/typings/index.test-d.ts +++ b/packages/discord.js/typings/index.test-d.ts @@ -2074,9 +2074,14 @@ expectType al.entries.first()), ); -expectType>( +expectType>( guild.fetchAuditLogs({ type: AuditLogEvent.MemberKick }).then(al => al.entries.first()?.extra), ); + +expectType>( + guild.fetchAuditLogs({ type: AuditLogEvent.MemberRoleUpdate }).then(al => al.entries.first()?.extra), +); + expectType>( guild.fetchAuditLogs({ type: AuditLogEvent.StageInstanceCreate }).then(al => al.entries.first()?.extra), );