我一直在花最后30分钟的时间来弄清楚为什么我的机器人会不断回复自己,即使我进行了检查以防止出现这种情况。 这是我的代码:
if (message.content.startsWith(prefix + 'rps ')) {
if(!message.author.equals(bot.user)) {
let theirInp = message.content.substring(prefix.length + 4)
let botInp = rpsTab[Math.floor(Math.random() * rpsTab.length)];
if (!theirInp == "") {
if (wins[botInp] == theirInp) {
message.channel.send("I won!")
} else if (botInp == theirInp) {
message.channel.send("We tied!")
} else {
message.channel.send("You won!")
}
}
}
}
答案 0 :(得分:4)
您可以使用其他条件表达式。
if(!message.author.bot){...}
答案 1 :(得分:2)
message.author.user
等于User
bot.user
等于ClientUser
它们是2个独立的对象。因此,这两个不同的对象不匹配,因此失败了.equals()
@Frost说要使用author.bot
:
if(message.author.bot) return
更为简单,因为它只是当它是机器人时退出,而您不必通过将其放在if
语句中来缩进一些代码
而且您不必担心使用您的命令的其他机器人
要修复代码,只需交换
if(!message.author.equals(bot.user)) {}
到
if(message.author.id !== bot.user.id){}