From b2754d4a0ec250ae84057d0f07c078376f54829c Mon Sep 17 00:00:00 2001 From: Danial Raza Date: Wed, 18 Dec 2024 16:02:35 +0100 Subject: [PATCH] fix(InteractionResponses): properly resolve message flags (#10661) --- packages/discord.js/src/structures/MessagePayload.js | 9 +++------ .../src/structures/interfaces/InteractionResponses.js | 11 +++++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/discord.js/src/structures/MessagePayload.js b/packages/discord.js/src/structures/MessagePayload.js index 48519d0a5682..ea3672a86802 100644 --- a/packages/discord.js/src/structures/MessagePayload.js +++ b/packages/discord.js/src/structures/MessagePayload.js @@ -165,15 +165,12 @@ class MessagePayload { let flags; if ( - this.options.flags !== undefined || + // eslint-disable-next-line eqeqeq + this.options.flags != null || (this.isMessage && this.options.reply === undefined) || this.isMessageManager ) { - flags = - // eslint-disable-next-line eqeqeq - this.options.flags != null - ? new MessageFlagsBitField(this.options.flags).bitfield - : this.target.flags?.bitfield; + flags = new MessageFlagsBitField(this.options.flags).bitfield; } if (isInteraction && this.options.ephemeral) { diff --git a/packages/discord.js/src/structures/interfaces/InteractionResponses.js b/packages/discord.js/src/structures/interfaces/InteractionResponses.js index f65dcc625c87..c0af53ec8d2b 100644 --- a/packages/discord.js/src/structures/interfaces/InteractionResponses.js +++ b/packages/discord.js/src/structures/interfaces/InteractionResponses.js @@ -5,6 +5,7 @@ const { deprecate } = require('node:util'); const { isJSONEncodable } = require('@discordjs/util'); const { InteractionResponseType, MessageFlags, Routes, InteractionType } = require('discord-api-types/v10'); const { DiscordjsError, ErrorCodes } = require('../../errors'); +const MessageFlagsBitField = require('../../util/MessageFlagsBitField'); const InteractionCollector = require('../InteractionCollector'); const InteractionResponse = require('../InteractionResponse'); const MessagePayload = require('../MessagePayload'); @@ -85,24 +86,25 @@ class InteractionResponses { } } - let { flags } = options; + const flags = new MessageFlagsBitField(options.flags); if (options.ephemeral) { - flags |= MessageFlags.Ephemeral; + flags.add(MessageFlags.Ephemeral); } await this.client.rest.post(Routes.interactionCallback(this.id, this.token), { body: { type: InteractionResponseType.DeferredChannelMessageWithSource, data: { - flags, + flags: flags.bitfield, }, }, auth: false, }); this.deferred = true; - this.ephemeral = Boolean(flags & MessageFlags.Ephemeral); + this.ephemeral = flags.has(MessageFlags.Ephemeral); + return options.fetchReply ? this.fetchReply() : new InteractionResponse(this); } @@ -154,6 +156,7 @@ class InteractionResponses { this.ephemeral = Boolean(data.flags & MessageFlags.Ephemeral); this.replied = true; + return options.fetchReply ? this.fetchReply() : new InteractionResponse(this); }