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