javascript - Discord 机器人多次回复

标签 javascript node.js discord discord.js

我正在尝试制作我的第一个执行命令的不和谐机器人,但问题是,如果用户通过链接向机器人发送 dms !命令,则机器人会多次回复,因为该命令会执行多次。

client.on('message', msg1 => {
  if (msg1.content.startsWith("!command")) {
    var splitMessage = msg1.content.split(" ");
    if (splitMessage[1] != undefined) {
      var url = splitMessage[1];
      if (url.includes("google.com")) {
        var execSync = require('child_process').execSync;
        var x = Math.floor((Math.random() * 9999999999) + 1);
        var cmd = 'wkhtmltopdf ' + url + ' ' + x + '.pdf';

        var options = {
          encoding: 'utf8'
        }

        var filename = x + '.pdf';
        console.log(execSync(cmd, options));
        msg1.reply({ files: [filename] });
      }
    }
  }
});

最佳答案

您的机器人多次回复消息,因为它回复的是消息本身。

您需要检测来自机器人的消息,并忽略它。

message.author.bot 返回一个 bool 值,如果为true,则表示该消息来自机器人而不是人类。

你可以看看我的代码如下:

client.on('message', msg1 => {
  // detect bot message
  if (msg1.author.bot) {
    // do nothing
    console.log('Ignoring bot message!');
    return;
  }
  if (msg1.content.startsWith("!command")) {
    var splitMessage = msg1.content.split(" ");
    if (splitMessage[1] != undefined) {
      var url = splitMessage[1];
      if (url.includes("google.com")) {
        var execSync = require('child_process').execSync;
        var x = Math.floor((Math.random() * 9999999999) + 1);
        var cmd = 'wkhtmltopdf ' + url + ' ' + x + '.pdf';

        var options = {
          encoding: 'utf8'
        }

        var filename = x + '.pdf';
        console.log(execSync(cmd, options));
        msg1.reply({ files: [filename] });
      }
    }
  }
});

关于javascript - Discord 机器人多次回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58089016/

相关文章:

javascript - 向无Chrome Youtube添加控制按钮?

node.js - 接下来出现错误不是node js/express js中的函数

javascript - 发送消息并很快将其删除

javascript - "SyntaxError: Unexpected token u in JSON at position 0"错误

node.js - tsconfig.json 中模块类型的区别

javascript - 将一张图像叠加在另一张图像上

python - 禁止(状态代码 : 403) Can't send messages to this user

javascript - 如何设置 jQuery 可拖动最小/最大左和最小/最大右

javascript - 在 react/javascript 中转换字符串日期

javascript - 如何在异步加载的 HTML 元素之间创建信号量