为什么默认开关会不断重复自身?

问题描述 投票:0回答:2

我正在尝试通过使用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;
    };
});

javascript switch-statement discord.js
2个回答
0
投票

默认是重复自身,因为默认代码通过发送答复(即消息)来发出消息事件。这在无限循环中循环。您的漫游器需要忽略自身发出的消息事件。您可以将message.author.id与机器人的ID进行比较,但是更简单的方法是忽略所有机器人,无论如何在大多数情况下都是个好主意。

bot.on("message", message => {
    if(message.author.bot) { return; }
    // It's a human, do something!
}

-2
投票

将消息发送到频道也会发出消息事件。一旦发送了与任何给定情况都不匹配的消息,机器人将发送randomResponse并且也将接收到该消息,并且由于随机响应也与任何情况都不匹配,它将一遍又一遍地执行相同的操作。考虑在事件侦听器的开头添加一个检查,以检查消息是否不是由漫游器本身发送的。

© www.soinside.com 2019 - 2024. All rights reserved.