Discord Bot 开发:如何停止这个无限循环?

Discord Bot Development: How do I stop this infinite loop?

这会从 random.dog 调用并检索一条狗 url,当发布 link 进行记录时,它会停在一个位置,但是当使用下面的 message.channel.send 时,它会运行一个调用的无限循环,防止这种情况的最佳方法是什么,并且只发送一个 link 然后停止直到再次调用它?

const animals = require('relevant-animals')

client.on("message", (message) => {                   
if(message.content.includes("dog")){ 
animals.dog().then(s => message.channel.send(s)) ; 
animals.dog().then(s => console.log(s)) ;
};

下面是发送一个请求后的控制台日志 link

下面是发送到频道后,它只是不停地发布 link 而不是控制台中显示的那个

您的机器人正在响应自己。您可以使用 message.author.bot.

将其排除在回复自身之外
if(!message.author.bot) {
   // Do something if message doesn't come from a bot.
}

我希望这段代码能帮助你走上正确的道路,祝你好运!

你可以这样做:

if(message.author.bot) return;

这不仅会阻止机器人在其自身上执行命令等,还会阻止任何机器人使用您的机器人。

因为如果 bot 属性 returns true 它会检查消息的作者,它会 return;.

如果 bot 属性 returns false 它将正常工作 - 仅适用于像你我这样的用户,以及许多其他用户!

您可以通过执行以下代码来尝试:

console.log(message.author.bot);

它将记录消息作者的 bot 属性 的布尔值。 You can read more about booleans (true/false) here.