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



我是新来的不和谐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 -或15:10运行。你说过"在这一分一秒运行",所以它会。

免责声明:我试着阅读https://github.com/kelektiv/node-cron的代码来确认这一点,但它相当复杂。https://github.com/node-cron/node-cron/tree/master/src更容易读,它肯定是每秒钟检查一次时间戳。

相关内容

最新更新