【发布时间】:2019-06-27 19:35:02
【问题描述】:
因此,此代码块是玩家 A(挑战者)向玩家 B(目标)发出挑战的代码的一部分。机器人会向玩家 B 发送一条私人消息,告诉他们他们受到了挑战,并询问他们是接受还是拒绝挑战。
以下代码似乎没有响应玩家 B 的回复。
if (message.channel.id === '541736552582086656') return target.send("Do you accept the challenge? Please reply with 'accept' or 'deny'.")
.then((newmsg) => {
newmsg.channel.awaitMessages(response => response.content, {
max: 1,
time: 150000,
errors: ['time'],
}).then((collected) => {
if (collected === 'accept') {
newmsg.channel.send("You have ***accepted*** the challenge. Please wait while your battlefield is made...");
} else if (collected === 'deny') {
newmsg.channel.send("You have ***denied*** the challenge.")
}
}).catch(() => {
newmsg.channel.send('Please Accept or Deny the challenge.');
});
});
}
在此代码块之前,我设置了将消息记录到服务器上的通道,向挑战者和目标发送挑战信息。机器人通过 pm 成功联系到他们被挑战的目标,但回复(即使回复“接受”仍然会认为它被拒绝了。
感谢您的所有帮助!
【问题讨论】:
-
有人通过 PM 发送“接受”后,
console.log(collected)打印什么? -
它获取 _content: 'accept'。
-
根据他们的doc,
collected将是Collection的Messages。所以collected永远不能等于'accept'! (此外,如果用户没有准确输入“接受”或“拒绝”,您的if-else-if逻辑将不会回复任何内容。) -
那么,我该如何解决这个问题?
标签: javascript node.js discord.js