您如何在 discord.js 的计时器代码中捕获错误?

How do you catch an error in this timer code for discord.js?

我正在 javascript 中制作一个不和谐的机器人,我正在努力做到这一点,以便当有人输入无效的时间时,它会告诉你有错误,而不是使机器人崩溃。

我已经研究了一段时间,但找不到如何阻止它使机器人崩溃的答案,只能用类似“那不是有效号码”之类的方式回复。有人可以帮助我吗?

client.on('message', message => {
  let args = message.content.substring(PREFIX.length).split(" ");
  switch (args[0]) {
    case 'timer':
      let time = (args[1]);
      if (!time) {
        return message.reply("You didnt specify a time!");
      }
      message.reply(`Timer started for ${ms(ms(time))}`)
      setTimeout(function() {
        message.reply(`your timer has stopped`)
      }, ms(time));
      break;
  }
});

是NaN()

isNaN 是一个 JavaScript 函数,它 returns 一个布尔值,用于确定给定输入是否为数字。它代表 不是数字 。 几个例子:

isNaN(8); // Expected outcome 'false' since 8 is a number
isNaN('hello!'); // Expected outcome 'true' since 'hello!' is not a number.
// It also works for numbers inside of a string:
isNaN('23'); // Expected outcome 'false' since 23 is a number.

您可以阅读有关 isNaN() 的更多信息here

在您的代码中

根据这个逻辑,我们可以通过检查第二个参数是否为数字来将其用于您的代码 => 在这种情况下,变量 'time':

if (isNaN(time)) return message.reply('Please enter a number!');

您可以使用

if(isNaN(time)) return message.reply("That is not a valid number.")

isNaN() returns true 用于“非数字”值,这应该正是您所需要的,您可以阅读更多相关信息 here.