我试图为hubot创建一个函数,每隔5分钟向一个房间发送一条消息,而不是任何命令,仅仅是他自己。
module.exports = (robot, scripts) ->
setTimeout () ->
setInterval () ->
msg.send "foo"
, 5 * 60 * 1000
, 5 * 60 * 1000
我需要改变什么?
答案 0 :(得分:6)
使用node-cron。
$ npm install --save cron time
你的脚本应该是这样的:
# Description:
# Defines periodic executions
module.exports = (robot) ->
cronJob = require('cron').CronJob
tz = 'America/Los_Angeles'
new cronJob('0 0 9 * * 1-5', workdaysNineAm, null, true, tz)
new cronJob('0 */5 * * * *', everyFiveMinutes, null, true, tz)
room = 12345678
workdaysNineAm = ->
robot.emit 'slave:command', 'wake everyone up', room
everyFiveMinutes = ->
robot.messageRoom room, 'I will nag you every 5 minutes'
更多详情:https://leanpub.com/automation-and-monitoring-with-hubot/read#leanpub-auto-periodic-task-execution
答案 1 :(得分:2)
实际上hubot documentation显示setInterval()
和setTimeout()
的使用情况,而不使用额外的模块。
你甚至可以通过绑定到msg对象来内联。 例如:
module.exports = (robot) ->
updateId = null
robot.respond /start/i, (msg) ->
msg.update = () -> # this is your update
console.log "updating" # function
if not this.updateId # and here it
this.updateId = setInterval () -> # gets
msg.update() # periodically
, 60*1000 # triggered minutely
msg.send("starting")
答案 2 :(得分:0)
真正的问题是您在没有消息对象的情况下尝试使用msg.send
。您应该使用robot.messageRoom
命令替换该行(或者如果要发送私人消息,则替换一些等效命令)。