我的问题是:我如何在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'
};
答案 0 :(得分:1)
我会这样做:执行!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-ms
npm软件包来设置毫秒格式:docs & live demo。
有人致电!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,所以区别是{ {1}}:距您第一次执行05:40 - 04:20 = 01:20
” 以来已过了1小时20分钟。即为!count
。
由于日期以毫秒为单位存储,因此差异以毫秒为单位:如果要使其更具可读性,则可以使用new Date() - past_date = time_passed
包或类似的函数来格式化日期。
关键概念是:
'pretty-ms'
时,您保存了!count
来锁定该时间点new Date()
时,您可以通过执行!time