我正在尝试执行一个work
命令,该命令需要正确的答案才能兑现。当原始“问题”和答案之间没有任何消息时,它工作得很好,但是,如果有任何消息打断了它,则它会完全抵消其余的消息。我几乎可以确定这是我的过滤器存在的问题,但是我不知道如何解决。我已经看了几个YouTube视频,还阅读了一些帮助论坛的帖子,但仍然无法正常使用。
日志给出以下错误Cannot read property 'content' of undefined
,当“用户2”在“用户1”使用原始work
命令之后但在“用户1”可以使用正确答案之前说出任何内容时,发生此错误案例“火”
我已经尝试过filter
,甚至可以想到的所有方式。我还尝试摆脱Authorid
,而仅使用message.author.id
。我还用相同的filter
部分换了作者,这使代码正常工作,但仍然无法达到我想要的方式。
我想我主要的大问题是,我如何才能忽略其他任何用户的输入,但仍然允许原始命令用户继续?
我对建议的部分进行了编辑,但是命令仍然以错误消息结尾。它可以为发件人进行过滤,因为它可以在原始作者做出响应时很好地运行,但是如果其他人做出了响应,它将恢复为错误。
else {
message.channel.send(question).then(r => {
const filter = msg => msg.author.id === message.author.id;
};
message.channel.awaitMessages(filter, { max: 1 }).then(collected => {
const response = collected.first();
let answer = response.content;
if (result === 0 && answer.toLowerCase() === "fire") {
let embed = new Discord.RichEmbed()
.setTitle(`${message.author.username} went to work!`)
.setColor("#ffd1dc")
.setDescription(`You received ${amount} Quoins!`)
.setFooter(
message.member.user.username,
message.member.user.displayAvatarURL
);
message.channel.send(embed);
db.add(`qnhCurrency_${message.author.id}`, amount);
db.set(`work_${message.author.id}`, Date.now());
return;
}
答案 0 :(得分:1)
您的filter
需要检查命令author
是否做出了回复,将其用作您的filter
:const filter = msg => msg.author.id === message.author.id