我正在尝试通过使用discord.js创建一个discord机器人。每当发生任何情况时,我的“默认值:”都会不断重复。
我检查了是否有不间断的情况,我试图在“和”之间进行切换。有人知道为什么这样做和如何解决吗?
const wrongResponse = ["1", "2", "3"];
var randomResponse = wrongResponse[Math.floor(Math.random() * wrongResponse.length)];
bot.on("message", message => {
let args = message.content.substring(calling.length).split(" ");
switch (args[0]) {
case 'commands':
const embed = new Discord.RichEmbed()
.setDescription("commands here");
message.channel.send(embed);
break;
case 'search':
message.reply("nothing yet");
break;
default:
message.reply(randomResponse);
break;
};
});
默认是重复自身,因为默认代码通过发送答复(即消息)来发出消息事件。这在无限循环中循环。您的漫游器需要忽略自身发出的消息事件。您可以将message.author.id
与机器人的ID进行比较,但是更简单的方法是忽略所有机器人,无论如何在大多数情况下都是个好主意。
bot.on("message", message => {
if(message.author.bot) { return; }
// It's a human, do something!
}
将消息发送到频道也会发出消息事件。一旦发送了与任何给定情况都不匹配的消息,机器人将发送randomResponse
并且也将接收到该消息,并且由于随机响应也与任何情况都不匹配,它将一遍又一遍地执行相同的操作。考虑在事件侦听器的开头添加一个检查,以检查消息是否不是由漫游器本身发送的。