The Slack stand-up bot.
by Dan Brown dan@stompydan.net
We had a good look around, and existing stand-up bots are very command-driven. They are aimed at people comfortable with even the idea of a bot, and issuing it commands to it to start a stand-up, update the stand-up, and so on. This is fine for developers or other technically-minded people, but not so much for everyone else. So Peter had the idea of a stand-up bot that
- Starts automatically at a particular time of (week) day;
- DMs everyone in certain channels and asks them for updates, asking a question at a time in a conversational style;
- Lasts for a given length of time (probably half an hour);
- Reminds people over that period if they haven't completed their answers;
- Allows people to skip stand-up for that day;
- And when then stand-up is over, either because everyone has responded or the time is up, posts one message in the channel summarising all responses.
We couldn't find anything that did this, so I made Tilly. The Weimaraner stand-up bot.
Note this is an experiment, not a polished product. Almost nothing is configurable because it's set up just for us at the moment and I prioritised testing by one team here over making it friendly for others - but clearly making it more configurable is not a big job. There's a couple of rough edges we've found as noted in the issue tracker.
Uses godep. Please keep its config file up-to-date with dependencies you use.
I switched to this fork of this Slack client library because it doesn't exit(1)
if things go wrong with the RTM connection. Also it appears to be faster.
The program is designed to run once for a day's worth of stand-ups and then exit. It should be scheduled by cron or similar.
## Running Suggestions
Currently we're using Heroku to run Tilly. Heroku supports Go projects now, so all you'd have to do is:
- Clone this repository
heroku create tilly-$myorg
(give it a nice, but unique name)- Create a bot user in Slack and note its token
heroku config:add SLACK_TOKEN=$bot_token
(substitute in the token from the previous step)- Probably
heroku config:add TILLY_WEEKDAY_ONLY=1
, unless you work weekends (the Heroku Scheduler doesn't discriminate on days of the week) git push heroku master
to deploy and build Tilly.heroku addons:create scheduler
to add the Heroku Scheduler to this appheroku addons:open scheduler
to open the Web interface.- Add a task to run Tilly on the schedule you decide. She will run a standup for all channels she has been invited to. The command line to run is simply
tilly
. Note the times are, annoyingly, specified in UTC. Add a reminder in your calendar to update it when daylight savings kick in!
Future versions may well allow for configuring the scheduling in Tilly (through commands in Slack or whatever), but this is a test for us and we wanted something simple. Also, it's cheaper this way as there isn't a dyno running 24/7.