在 Discord js 中的特定时间戳发送消息

Send a message at a specific timestamp in Discord js

我是 discord js 的新手,正在尝试让我的机器人在特定时间发送消息(通过时间戳设置)。

client.on('ready', function(e) 
{
console.log(`Logged in as ${client.user.tag}!`)

let scheduledMessage = new cron.CronJob('0 10 15 * * *', () => {
    const guild = client.guilds.cache.get('ID');
    const channel = client.channels.cache.get('ID');

    const exampleEmbed = new MessageEmbed()
    .setColor('#ebdc05')
    .setTitle('Another ten minutes')
    channel.send({ embeds: [exampleEmbed] });
});

scheduledMessage.start() 
});

我发现了这个在 15:10:00 发送消息的方法。我的问题是我需要机器人每 31 小时发送一次消息。

我也找到了写'0 0 */31 * * *'而不是'0 10 15 * * *'的方法。这行得通,每 31 小时会发送一条消息,但我担心我的机器人有时会在 31 小时后发送消息,然后在时间后添加秒和分钟,在某个时候它会发送在 15:12:00 或某处留言

所以我想出了一个想法,只做一个时间戳,加上时间总是 31 小时,然后让机器人在准确的时间戳发送消息。遗憾的是,我没有发现任何问题。

这可能吗?


编辑:时间戳变量会很有用,因为我可以很容易地减去和添加时间,还可以在嵌入中显示它。

您使用的 cron 库的要点是您可以明确地告诉它分钟和秒——在您的例子中,0。

它不会累积错误。除非它非常糟糕,否则 cron 库会为您做“找出下一个时间戳”的事情。

cron 字符串 0 0 */31 * * * 表示“每 31 小时一次,时间看起来像 XX:00:00”。因此它永远不会 运行 在 15:12:00 — 或者 15:10:00 就此而言。你说的是“运行 在这一分钟和第二秒”,所以它会。

免责声明:我尝试阅读 https://github.com/kelektiv/node-cron to confirm this myself, but it's pretty convoluted. https://github.com/node-cron/node-cron/tree/master/src 的代码更容易阅读,而且它确实每秒都在检查时间戳。