Tengo el siguiente fragmento de código (mecanografiado) que genera una inserción en respuesta a una interacción y la envía:
const embed = await this.generateEmbed(...); await interaction.reply({embeds: [embed]}); const sentMessage: Message = <Message<boolean>> await interaction.fetchReply(); await sentMessage.react('⬅'); Sin embargo, esto falla en tiempo de ejecución porque TypeError: sentMessage.react is not a function .
Esto se explica un poco en los documentos de discord.js :
Devuelve los datos del mensaje sin procesar si se creó una instancia del webhook como WebhookClient o si el canal no está en caché; de lo contrario, se devolverá un mensaje.
Sin embargo, esto sucede incluso si guardo todo en caché:
const bot = new Client({ makeCache: Options.cacheEverything(), ... }); También tenga en cuenta que no estoy usando un WebhookClient aquí.
¿Por qué CommandInteraction.reply() devuelve un mensaje sin procesar aquí y cómo puedo hacer que devuelva un objeto de Message completo, de modo que pueda usar el método .react() ?
Hice bastantes pruebas y llegué a la conclusión de que esto sucede porque no estás solicitando la intención de GUILDS . Supongo que sin la intención de GUILDS , GuildChannel no se puede almacenar en caché, ni Message , por lo que devuelve los datos sin procesar de la API.
const { Client, Intents } = require('discord.js'); const bot = new Client({ intents: [Intents.FLAGS.GUILDS], ... })