discord.js - 如何制作命令时间计数器

标签 discord.js

我的问题是:我怎样才能制作一个命令时钟(当你执行!count时,4分钟后你输入!time,它显示4分钟!)不和谐.js

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-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类说明
当您创建新的日期时,它会保存您创建它时的时间。这就像说!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' 包或类似的函数来格式化它。< br/> 关键概念是:

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

关于discord.js - 如何制作命令时间计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53501474/

相关文章:

javascript - 有没有办法让我发送 args[1] args[2] 次?

javascript - Discord 机器人无法访问 Google 表格并出现错误 请求缺少有效的 API key

Discord:如何在消息回复中启用斜线命令?

javascript - 是否有内置的不和谐功能允许类别 channel 的 'tagging' ?

javascript - 如果属性未定义则跳到 else

javascript - Discord.js 修复了 V14 的 TypeError [ClientMissingIntents] : Valid intents must be provided for the Client but it is still having the same problem

javascript - 找出 Discord webhooks 链接的正则表达式

javascript - Discord.js javascript 命令处理程序 - 找不到模块错误

javascript - 可以在 Discord.js 中嵌入按钮吗?

node.js - "snipe"显示最后删除消息的命令