discord.js 机器人数学无法正常工作

discord.js bot math not working right

因此,当有人清除频道时,我的机器人想要将一个添加到清除量中,然后他们将第一个值拆分掉,这样它就不会清除他们的命令,但是当我尝试将值加 1 时传递的参数只是将数字放在值后面......任何帮助,我真的很糟糕,所以你......

if (args[1]){
    var messagecount = args[1];
    var messagetotal = Math.floor(messagecount + 1); // Adding 1 to passed argument
    console.log(messagetotal); // Outputting to console, Console is reading the argument with 1 on the end EX: arg: 2 | output: 21
//  message.channel.fetchMessages({limit: messagecount}).then(messages => message.channel.bulkDelete(messages).then(messages => message.channel.send("Purged `" + messages.size + "` messages.")));
} else {
//  message.channel.send("Usage: !purge (Number)");
}

我不知道 args[1] 的确切内容是什么,但是根据您对错误的解释,该值似乎是一个格式化为字符串的数字。

区别:

字符串

args[1] = "1";
console.log(args[1] + 1);

输出:"11"

整数

args[1] = 1;
console.log(args[1] + 1);

输出:2

如果您将一个数字添加到一个字符串中,它将被追加而不是数学上相加。

要将数字字符串格式化为整数,请替换

var messagecount = args[1];

var messagecount = parseInt(args[1]);

const math = require('mathjs');

if (args.length > 0)
          if (!message.member.hasPermission("MANAGE_MESSAGES"))
            message.reply('You do not have permission to use this command.')
          else {
            var amount = args.join(' '),
            total = math.evaluate(`${amount}+1`);
            message.channel.bulkDelete(total).catch(console.error);
          }
        else
          message.reply('You did not type an amount for me to delete.')
      break;