¿Cómo puedo hacer que el bot envíe un mensaje a un canal específico mientras usa .deferReply y .editReply ? Actualmente, recibo un error que dice que suggestionChannel.deferReply is not a function . Aquí está mi código:
const { SlashCommandBuilder } = require("@discordjs/builders"); const { MessageEmbed } = require("discord.js"); module.exports = { data: new SlashCommandBuilder() .setName("suggest") .setDescription("Send your suggestion to the specified channel") .addStringOption((option) => option .setName("suggestion") .setDescription("Your suggestion") .setRequired(true) ), async execute(interaction, client) { var suggestionChannelID = "900982140504793109"; var suggestionChannel = client.channels.cache.get(suggestionChannelID); const embed = new MessageEmbed() .setColor("#0099ff") .setTitle(`New suggestion by ${interaction.member.displayName}`) .setDescription(`${interaction.options.getString("suggestion")}`); await suggestionChannel.deferReply(); await suggestionChannel .editReply({ embeds: [embed], }) .then(function (interaction) { interaction.react(`👍`).then(interaction.react(`👎`)); }); }, };¿Cómo puedo hacer que el bot envíe un mensaje a un canal específico, mientras usa .deferReply y .editReply?
Bueno, la respuesta corta es; no puedes Pero puedes hacer esto:
Como ya dice el error, deferReply() no es un método de la clase TextBasedChannels , definida por su suggestionChannel .
En su lugar, intente enviar un mensaje al canal en lugar de responder. Las respuestas solo se pueden ejecutar en el canal de la interacción:
var suggestionChannelID = "900982140504793109"; var suggestionChannel = client.channels.cache.get(suggestionChannelID); const embed = new MessageEmbed() .setColor("#0099ff") .setTitle(`New suggestion by ${interaction.member.displayName}`) .setDescription(`${interaction.options.getString("suggestion")}`); // use this instead await suggestionChannel.send({ embeds: [embed], }); Nota al margen de PS, deferReply() inicia un temporizador de 15 minutos antes de que caduque la interacción y activa el texto 'x está pensando...' para que aparezca cuando el cliente está calculando cosas, así que intente llamarlo lo antes posible. De forma predeterminada, las interacciones caducan después de 3 segundos, por lo que si su bot no puede terminar lo que debe lograr dentro de ese período de tiempo, esa interacción fallará.