【问题标题】:Discord Bot Development: How do I stop this infinite loop?Discord Bot 开发:如何停止这个无限循环?
【发布时间】:2019-03-05 19:13:27
【问题描述】:

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

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)) ;
};

以下是一个请求发送一个链接后的控制台日志

以下是发送到频道后,它只是不停地发布链接,而不是控制台中显示的链接

【问题讨论】:

  • 无限循环是什么意思?您能否发布一些输出以供参考?
  • 添加了一些图片,它会不停地发布链接,而不仅仅是一个

标签: javascript discord discord.js


【解决方案1】:

您的机器人正在响应自己。您可以使用message.author.bot 将其排除为回复自己。

if(!message.author.bot) {
   // Do something if message doesn't come from a bot.
}

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

【讨论】:

  • 非常感谢您修复它!
  • 好主意。我通常只使用if(message.author.bot) { return; },但这更干净。
【解决方案2】:

你可以这样做:

if(message.author.bot) return;

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

如果 bot 属性返回 true,它会检查消息的作者,所以它会 return;

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

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

console.log(message.author.bot);

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

【讨论】:

    猜你喜欢
    • 2020-11-02
    • 1970-01-01
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    相关资源
    最近更新 更多