diff --git a/packages/discord.js/src/structures/Interaction.js b/packages/discord.js/src/structures/Interaction.js index 2c7739d9f2ee..de1f829ee80d 100644 --- a/packages/discord.js/src/structures/Interaction.js +++ b/packages/discord.js/src/structures/Interaction.js @@ -74,6 +74,18 @@ class Interaction extends Base { * @type {?Readonly} */ this.memberPermissions = data.member?.permissions ? new Permissions(data.member.permissions).freeze() : null; + + /** + * The locale of the user who invoked this interaction + * @type {string} + */ + this.locale = data.locale; + + /** + * The preferred locale from the guild this interaction was sent in + * @type {?string} + */ + this.guildLocale = data.guild_locale ?? null; } /** diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 9681022c7432..663800ecb59a 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -1316,6 +1316,8 @@ export class Interaction extends Base { public user: User; public version: number; public memberPermissions: CacheTypeReducer>; + public locale: string; + public guildLocale: CacheTypeReducer; public inGuild(): this is Interaction<'raw' | 'cached'>; public inCachedGuild(): this is Interaction<'cached'>; public inRawGuild(): this is Interaction<'raw'>; diff --git a/packages/discord.js/typings/index.test-d.ts b/packages/discord.js/typings/index.test-d.ts index f99106651fb6..62ac52cf2c04 100644 --- a/packages/discord.js/typings/index.test-d.ts +++ b/packages/discord.js/typings/index.test-d.ts @@ -955,12 +955,17 @@ client.on('interactionCreate', async interaction => { expectAssignable(interaction.member); expectNotType>(interaction); expectAssignable(interaction); + expectType(interaction.guildLocale); } else if (interaction.inRawGuild()) { expectAssignable(interaction.member); expectNotAssignable>(interaction); + expectType(interaction.guildLocale); + } else if (interaction.inGuild()) { + expectType(interaction.guildLocale); } else { expectType(interaction.member); expectNotAssignable>(interaction); + expectType(interaction.guildId); } if (interaction.isContextMenuCommand()) {