使用setInterval的计时器宣布剩余时间

时间:2019-01-28 14:50:10

标签: javascript node.js timer discord discord.js

我是JS的新秀,但是我正在尝试边做边学!我已经下载了一个免费的GitHub项目(https://github.com/MrWall112/advanced-discord-bot-easy-install),并且正在尝试自定义计时器。

到目前为止,我已经添加了一个setInterval事件,以便机器人每30秒就会宣布“已过去30秒!” 3次。 (通常用于私人战斗服务器的时间分别为30s,1m,1m30s和2m,以计时单个回合)。

使用setInterval,机器人会宣布剩余30秒3次,即使计时器已经过去(.timer 60s,机器人仍然会在超时后宣布30秒)

我的问题是:有没有一种方法可以调整/更改setInterval,以便机器人可以宣布:

msg.channel.send(msg.author.toString() + ` 60 SECONDS REMAINING! `)
msg.channel.send(msg.author.toString() + ` 30 SECONDS REMAINING! `)
msg.channel.send(msg.author.toString() + ` 10 SECONDS REMAINING! `)

那么,不是宣布30秒过去了3次,而是在特定的秒数上宣布了剩余时间?

这里是我当前的JS代码:

var ms = require('ms')

exports.run = (bot, msg, params) => {

  let Timer = params[0];

  if(!params[0]){
    return msg.channel.send(":x: " + "| Please Enter a time period followed by \"s or m or h\"");
  }

  if(params[0] <= 0){
    return msg.channel.send(":x: " + "| Please Enter a time period followed by \"s or m or h\"");
  }

  msg.channel.send(":white_check_mark: " + "| Timer Started for: " + `${ms(ms(Timer), {long: true})}`)


  var i = 0;
  var a = setInterval(function() {
    if (i === 3) {
      clearInterval(a);
    }
    else {
      msg.channel.send(msg.author.toString() + ` 30 seconds passed! `)
      i++;
    }
  }
  , 30 * 1000);


  setTimeout(function(){
    msg.channel.send(msg.author.toString() + ` The Timer Has FINISHED!, it lasted: ${ms(ms(Timer), {long: true})}`)

  }, ms(Timer));
};

0 个答案:

没有答案