如何制作命令时间计数器



我的问题是:如何在discord.js 中创建命令时钟(当您执行!count,4分钟后键入!time,它显示4分钟!(

const Discord = require('discord.js');
exports.run = (client, message) => {
var af = 0;
a = setInterval(function(){
console.log("Hi");
af = af+1;
if(af == 25){
clearInterval(a);
}
console.log(af);
}, 60000);
};
exports.help = {
name: 'time',
description: 'time?',
usage: 'time'
};

我会这样做:当您执行!count时,您节省了服务器时间,当您执行!time时,您会发回这两个日期之间的差异。

伪代码:

var date;
if (command == 'count') {
date = new Date();
message.reply("Done");
}
if (command == 'time') {
let result = require('pretty-ms')(date ? (new Date() - date) : 0);
message.reply(result);
}

我使用pretty-msnpm包来格式化毫秒:docs&现场演示。

当有人呼叫!count时,请将当前日期存储在某个位置。new Date() - date将为您提供当前时间和您存储的时间之间的差值(以毫秒为单位(
请注意,如果命令在不同的文件中,正如您发布的代码所示,您需要将日期存储在两个文件都可以访问的位置:解决方案之一是将日期存储为全局变量。

// by '...' I mean that you can put it wherever you want in the global object
global['...'].date = new Date():
new Date() - global['...'].date

编辑:Date类说明
当您创建新的Date时,它会节省您创建它时的时间。这就像说"!count在04:20执行">。当您想检查已经过去了多少时间时,您需要计算第一个日期减去当前日期:"!count在04:20执行。现在是05:40,所以差异是05:40 - 04:20 = 01:20:距离您第一次执行!count">已经过去了1小时20分钟。这转化为new Date() - past_date = time_passed
由于日期以毫秒为单位存储,所以差异以毫秒为单元:如果您想让它更可读,您可以使用'pretty-ms'包或类似的函数来格式化它。

  • 调用!count时,保存一个new Date()以锁定该时间点
  • 当调用!time时,您可以通过执行new Date() - past_date来获得差异

最新更新