【问题标题】:Multistep command and message collector discord.js多步命令和消息收集器 discord.js
【发布时间】:2021-08-22 19:05:13
【问题描述】:

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

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

                    .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)
                    })

【问题讨论】:

  • 到底出了什么问题?你收到错误了吗?
  • 在控制台中给我发送这个:Message { channel: TextChannel { type: 'text', deleted: false, id: '834932687995011112', name: 'cmd', rawPosition: 2, parentID: '777092693264039948', permissionOverwrites: Collection [Map] {}, topic: null, lastMessageID: '850440734573199370', rateLimitPerUser: 0, 和其他参数
  • 这对我来说似乎是预期的行为。你期待什么?
  • 如果用户回复“Hello 123”,我希望得到“Hello 123”作为回报。
  • 你做了console.log(m),它记录了m。有什么问题?

标签: discord discord.js command


【解决方案1】:

TextChannel.awaitMessages() 方法返回 CollectionMap)。

由于您希望输出为字符串数组,您可以执行以下操作:

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"
});

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 1970-01-01
    • 2021-03-31
    • 2020-10-25
    • 2022-01-21
    • 2019-07-30
    • 2022-11-17
    • 2020-11-02
    • 2018-08-26
    相关资源
    最近更新 更多