首页 > 解决方案 > 如何让 discord.js 中的消息收集器根据用户发送的消息进行多个响应?

问题描述

我正在尝试为货币机器人发出启动命令。我正在尝试制作一个消息收集器,它要求为这个特定用户收集。并且根据用户的反应,它会有不同的反应。

message.channel.send("Yes or no?")
        .then(function (message) {
            const filter = m => m.author.id === message.author.id,;
            const collector = message.channel.createMessageCollector(filter, { max: 1, time: 15000, errors: ['time'] })
            collector.on('collect', m => {
                if (m == "yes") {
                  message.channel.send("cool")
                } else if (m == "no") {
                  message.channel.send("not cool")
                } else {
                    message.channel.send("bruh")
                } 
                
              })
          })
    }

但无论我说什么,机器人根本没有响应,即使在控制台中也是如此。
谢谢你的帮助!

标签: discord.js

解决方案


message参数MessageCollector返回一个消息对象。您当前正在尝试做的是将对象(m表示对象的参数)与字符串进行比较 - 这显然是无法完成的。如果您想将收集到的消息与某个字符串进行比较,则必须比较其content属性,这显然会返回收集到的消息的内容。

最终代码:

message.channel.send("Yes or no?")
        .then(function (message) {
            const filter = m => m.author.id === message.author.id,;
            const collector = message.channel.createMessageCollector(filter, { max: 1, time: 15000, errors: ['time'] })
            collector.on('collect', m => {
                if (m.content == "yes") {
                  message.channel.send("cool")
                } else if (m.content == "no") {
                  message.channel.send("not cool")
                } else {
                    message.channel.send("bruh")
                } 
                
              })
          })
    }

推荐阅读