discord.js - 如何让 discord.js 中的消息收集器根据用户发送的消息进行多个响应?
问题描述
我正在尝试为货币机器人发出启动命令。我正在尝试制作一个消息收集器,它要求为这个特定用户收集。并且根据用户的反应,它会有不同的反应。
- 如果用户回复“是”,机器人将发送“酷”。
- 如果用户回答“不”,机器人将发送“不酷”。
- 如果用户在 15 秒内没有回复或回复“是”和“否”以外的其他内容,机器人将发送“bruh”。
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")
}
})
})
}
但无论我说什么,机器人根本没有响应,即使在控制台中也是如此。
谢谢你的帮助!
解决方案
的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")
}
})
})
}
推荐阅读
- flutter - 调试横幅隐藏的一半!为什么?
- html - 从 Python 中的链接下载电子表格
- javascript - Javascript优化正则表达式函数以从包含关键字的字符串中提取句子
- android - Xamarin Forms:Android CustomTabs 在应用程序后台关闭时关闭
- javascript - Angular - 在客户端关闭互联网连接的情况下发送重复的 http 请求时是否有任何性能损失?
- git - git rebase 后如何继续?
- json - 这个弹性 json 查询、映射有什么问题?
- r - 如何从 R 调用亚马逊产品广告 API 5?
- python - 如何在用户登录时运行 Python 脚本
- php - 查找两次之间的可用会议时段