A hubot script to schedule a message in both cron-style and datetime-based format pattern
CoffeeScript
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
.gitignore
CHANGES.md
LICENSE
README.md
README_ja.md
package.json

README.md

hubot-schedule

README_ja.md

NPM version

NPM

hubot-schedule is a message scheduler runs on hubot.

It allows you to schedule a message in both cron-style and datetime-based format pattern. It is for time-based scheduling, not interval-based scheduling.

Since hubot-schedule uses node-schedule to manage schedule, some of the cron features are not supported. Please see node-schedule for more details.

This script is greatly inspired by hubot-cron. At first, I wanted a datetime-based scheduler. As I start developing this, I noticed that node-schedule also suppports cron-style scheduling, so I changed my mind to develop a scheduler that supports both cron-style and datetime-based format.

Note

for Slack users

If you are using slack adapter such as hubot-slack, please use v4.2.2 or later. v4.2.1 sometimes fails to add new schedule.

Installation

Add hubot-schedule to your package.json.

"dependencies": {
  "hubot-schedule": "~0.6.1"
}

Run npm install.

$ npm install

Add hubot-schedule to external-scripts.json.

> cat external-scripts.json
> ["hubot-schedule"]

Usage

Hubot> hubot help schedule
Hubot schedule [add|new] "<datetime pattern>" <message> - Schedule a message that runs on a specific date and time
Hubot schedule [add|new] "<cron pattern>" <message> - Schedule a message that runs recurrently
Hubot schedule [add|new] #<room> "<datetime pattern>" <message> - Schedule a message to a specific room that runs on a specific date and time
Hubot schedule [add|new] #<room> "<cron pattern>" <message> - Schedule a message to a specific room that runs recurrently
Hubot schedule [cancel|del|delete|remove] <id> - Cancel the schedule
Hubot schedule [upd|update] <id> <message> - Update scheduled message
Hubot schedule list - List all scheduled messages for current room
Hubot schedule list #<room> - List all scheduled messages for specified room
Hubot schedule list all - List all scheduled messages for any rooms

Hubot> hubot schedule add "2015-01-16 10:00" Let's release this script!
6738: Schedule created

Hubot> hubot schedule add "0 10 * * 1-5" Don't forget to brew coffee :)
9735: Schedule created

Hubot> hubot schedule list
6738: [ Fri Jan 16 2015 10:00:00 GMT+0900 (JST) ] #Shell Let's release this script!
9735: [ 0 10 * * 1-5 ] #Shell Don't forget to brew coffee :)

Hubot> hubot schedule update 6738 Let's release this module and share with everyone!
6738: Scheduled message updated

Hubot> hubot schedule list
6738: [ Fri Jan 16 2015 10:00:00 GMT+0900 (JST) ] #Shell Let's release this script and share with everyone!
9735: [ 0 10 * * 1-5 ] #Shell Don't forget to brew coffee :)

Let's release this script and share with everyone!
(Hubot posts the message at 2015-01-16 10:00:00 and schedule will be removed automatically)

Hubot> hubot schedule del 9735
9735: Schedule canceled

Hubot> hubot schedule list
Message is not scheduled

Hubot> hubot schedule add "0 10 * * 1-5" hubot image me coffee
9735: Schedule created
(hubot can process messages sent by hubot-schedule, so you can ask hubot to do something at the scheduled time, like post an image of coffee.)

If you need to persist scheduled messages, use hubot-brain persistent module like hubot-redis-brain.

Configuration

HUBOT_SCHEDULE_DONT_RECEIVE

Setting environment variable HUBOT_SCHEDULE_DONT_RECEIVE=1 will disable hubot not to process messages sent by hubot-schedule.

HUBOT_SCHEDULE_DENY_EXTERNAL_CONTROL

Setting environment variable HUBOT_SCHEDULE_DENY_EXTERNAL_CONTROL=1 will deny schedule control from other rooms.

HUBOT_SCHEDULE_DEBUG

Setting environment variable HUBOT_SCHEDULE_DEBUG=1 will show some debug messages.

HUBOT_SCHEDULE_LIST_REPLACE_TEXT

Setting environment variable HUBOT_SCHEDULE_LIST_REPLACE_TEXT='<stringified json>' will configure the text replacement used when listing scheduled messages. Default configuration is '{"@":"[@]"}'.

Copyright and license

Copyright 2015 Masakazu Matsushita.

Licensed under the MIT License.