多步命令和消息收集器 discord.js

Multistep command and message collector discord.js

我正在尝试创建一个多步骤命令,在最后一次编辑嵌入后我想收集用户回复的内容。我尝试了 await message , message collector 但我没有成功。

这是命令的最后一部分。感谢您的帮助

                    .then(collected => {
                    var date = collected.first().emoji.name
                    switch (date){
                        case '1️⃣':
                            message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour lundi`).then(m => m.delete({ timeout: 2000 }));
                            var date = 'lundi'
                            break;
                        case '2️⃣':
                            message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour mardi`).then(m => m.delete({ timeout: 2000 }));
                            var date = 'mardi'
                            break;
                        case '3️⃣':
                            message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour mercredi`).then(m => m.delete({ timeout: 2000 }));
                            var date = 'mercredi'
                            break;
                        case '4️⃣':
                            message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour jeudi`).then(m => m.delete({ timeout: 2000 }));
                            var date = 'jeudi'
                            break;
                        case '5️⃣':
                            message.channel.send(`:white_check_mark: Tu as choisis d'ajouter un devoir pour vendredi`).then(m => m.delete({ timeout: 2000 }));
                            var date = 'vendredi'
                            break;
                    }setTimeout(() => 5000) 
                     m.reactions.removeAll()
                     const newEmbed = new Discord.MessageEmbed()
                    .setColor('RED')
                    .setTitle('Entrer le descriptif du devoir')
                    setTimeout(() => 7000) 
                
                    m.edit(newEmbed)
                    
                    const filter = m => m.author.id === message.author.id;
                    message.channel.awaitMessages(filter,{time:10000}).then(collected =>{
                        console.log(m)
                    })

TextChannel.awaitMessages() method returns a Collection (a Map).

因为你希望输出是一个字符串数组,你可以这样做:

message.channel.awaitMessages(filter,{time:10000}).then(collected =>{
  const list = [];
  collected.forEach((message) => {
    list.push(message.content);
  });
  console.log(list); // ["hello", "world"]
});

如果你只想要一条消息,你可以使用 MessageCollectorOptionsmax 属性 并将其设置为 1:

message.channel.awaitMessages(filter,{time:10000, max:1}).then(collected =>{
  // in case the user did not answer
  if (typeof collected.first() === "undefined") {
    return;
  }
  const string = collected.first().content;
  console.log(string); // "hello"
});