首页 > 解决方案 > 节点调度器重复

问题描述

我和一个朋友正在尝试使用 Node Scheduler 让一个不和谐的机器人在某些日子(基本上是假期日历)宣布事情。我们希望它发布一条预设消息,但它似乎随机发布消息次数。

    var Hb = schedule.scheduleJob('* 6 14 20 4 *', function(){
bot.channels.get('435858985501982720').send('new message 3');
}); 

这是我们的测试代码,有谁知道出了什么问题?

编辑:我们确实想要特定的分钟,如果这有任何影响的话。

标签: node.js

解决方案


的第一个参数schedule.scheduleJob是一个字符串,表示函数应该何时触发,采用 cron 格式根据您尝试运行该功能的文档:

  • 每一秒
  • 整点 6 分钟
  • 第 14 小时(下午 2 点)
  • 每月第 20 天
  • 第四个月(四月)
  • 一周的每一天

也就是每年 4 月 20 日下午 2:06 的每一秒。

我将使用文档提供的格式重写 cron 字符串:

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    │
│    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── month (1 - 12)
│    │    │    └────────── day of month (1 - 31)
│    │    └─────────────── hour (0 - 23)
│    └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)

例如在每年圣诞节的中午运行:

schedule.scheduleJob('0 0 12 25 12 *', function(){
     bot.channels.get('435858985501982720').send('new message 3');
}); 

推荐阅读