Hola estoy programando un bot de chat de discord, que cuando el comando '!ayuda' se dirige a un canal de texto determinado, el bot escribe un mensaje directo a la persona que escribió el comando para responder una serie de preguntas, este es el código que hice por ahora:
const {Client, RichEmbed, Intents, MessageEmbed} = require('discord.js'); const bot = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.DIRECT_MESSAGES] }); const token = 'TOKEN'; const PREFIX = '!'; bot.on('ready', () => { console.log(`Logged in as ${bot.user.tag}!`); }) bot.on('messageCreate', message => { let args = message.content.substring(PREFIX.length).split(" "); switch (args[0]) { case 'help': const Embed = new MessageEmbed() .setTitle("Helper Embed") .setColor(0xFF0000) .setDescription("Make sure to use the !help to get access to the commands"); message.author.send(Embed); break; } }); bot.login(token);El bot me escribe al DM del usuario que solicito el comando, pero no he podido solucionar, que segun lo que responde el usuario el robot responde con otra informacion, y tambien que el usuario puede responder con reacciones.
Si solo desea esperar a que lleguen algunos mensajes, puede usar awaitMessages . Tiene algunas opciones, como la cantidad de mensajes a esperar, el tiempo durante el cual recopilará los mensajes y un filtro opcional. Un ejemplo:
const filter = (message) => { // Do some validation } message.channel.awaitMessages({ time: '', // The time the collector is valid for in milliseconds max: '', // The number of messages the collector will wait for filter, error: ['time'] // Give an error when the timer runs out so the .catch function runs }).then(collected => console.log(collected)) // Console log all the collected messages .catch(collected => console.log(`${collected.size} messages were collected`)) Pero si está usando botones, entonces un simple messageComponentCollector servirá. Incluso en esto, tiene las mismas opciones que awaitMessages , como el tiempo, la cantidad máxima de mensajes y el filtro. Ejemplo:
const filter = (click) =. { // Do some validation } const collector = message.channel.createMessageComponentCollector({ time: '', // The time the collector is valid for in milliseconds max: '', // The number of messages the collector will wait for filter }) collector.on('collect', i => console.log(i)); collector.on('end', collected => console.log(`Collected ${collected.size} items`));