To create a new standup or reschedule one, first ensure that the standup-bot is in the channel that the standup is for. Then say:
@standup-bot schedule standup for 10am
Additionally, you can schedule the standups for just certain days of the week:
@standup-bot schedule standup for 10am M W F
Some things to note:
Once a standup is scheduled in a channel, you can have it notify the channel some time before the report to remind folks to submit their standups. To do that, in the channel, say:
@standup-bot reminder 10
This will schedule a reminder for 10 minutes prior to the report.
By default, whenever the bot sends a reminder or posts a report, it begins the message with
@here. However, you can have the bot direct its messages to a user group or channel instead. To do that, from the channel for the standup, say:
@standup-bot audience @user-group
To remove a standup and stop reporting on it, in the channel, say:
@standup-bot remove standup
Many non-administrative interactions with the bot can be triggered by sending a direct message (DM) to the bot or by mentioning the bot by name. Sometimes, mentioning the bot in a channel is a shortcut since you don't have to tell the bot what channel you're talking about.
To find out when the standup is scheduled for a channel, from that channel, say:
The bot will let you know if there's not a standup scheduled yet.
There are two ways to submit your standup to the bot. The preferred way is via the interview process. There are a couple of ways to trigger the interview. You can add an emoji response to one of the bot's messages (for example, its reminder message), or you can say
@standup-bot interview in the channel.
During the interview, the bot will ask you a series of questions. If you want to skip a question, just respond to it with
skip. You can also abandon your standup at any time by responding with
The other way to submit your standup is with block text. You can submit your entire standup in a single message by sending a DM to the bot of the form:
standup #channel Y: yesterday's info T: today's info B: blockers G: goals
All of the sections (Y/T/B/G) are optional, but the channel name is required.
Once the bot has accepted your standup, it will display the standup back to you if it has not yet reported for that channel (if it has already reported, it will let you know that it is updating the report).
There are a few ways to edit your standup after you've submitted it. You can run the interview again by adding another emoji reaction to the bot's message or saying
@standup-bot interview again (if you're happy with certain sections, you can
skip them to keep them the same).
You can also ask the bot to let you edit one section. In a DM say,
#channel edit today and the bot will start an interview, showing you your previous response and asking you for a new one.
If you sent your standup as block text, you can edit that message to edit your standup.
Finally, you can send the bot another block text DM. Any sections you supply in the new standup block text will overwrite the previous standup.
If you know you'll be out of the office for a few days and would like the bot to automatically post standups on your behalf while you're away, you can tell it you'll be gone. To do that, you can either tell the bot in the channel that you want to automatically report in:
@standup-bot I'll be out of the office for 3 days
Or you can send the bot a DM and tell it which channel to automatically report in:
#channel out of the office for 3 days
The bot understands over variations of these messages. Here are some examples:
@standup-bot out of office 3 days @standup-bot out of office 3 @standup-bot ooo 3
The bot can provide a quick reference to using it. To trigger the bot's in-Slack help, just say
help in a DM or
@standup-bot help in any channel the bot is in.
The bot will automatically report into a channel at the specified time on weekdays and non-holidays (US federal holidays as defined by OPM). A report consists of a summary with the number of people who submitted standups, a list of common projects, and a list of people who have indicated they will be out of the office today, followed by the list of individual standups.
You can also request reports at any time. To get today's report for a channel to run again, in that channel, say:
For finer-grained reporting, you can send a DM to the bot. With this method, you must specify a channel and optionally a user (default is yourself) and number of days (default is one week) to report. For example:
||This will report your standups for
||This will report the standups from
||This will report the standups from
NOTE: If you are planning to run
standup-slack-bot in docker, please refer to the Docker section below.
Before installing standup-bot, you'll need to have access to a:
To get a Slack API token, you will need to create a bot integration from the Slack admin panel: https://your-team.slack.com/apps/manage/custom-integrations (replace
your-team with your Slack team name).
git clone https://github.com/18F/standup-slack-bot.git cd standup-slack-bot
This project is built with Node version 6.7. We recommend
nvm to help manage versions of Node on your machine. With that installed, you can install the project's dependencies:
npm install # Create and migrate the database # You will want to do this for each application env: # development, test createdb standup_bot_development # create your postgres database DATABASE_URL=postgresql://localhost/standup_bot_development npm run migrate
To load your own environmental variables copy over the
file and modify to match your own variable.
cp .env.sample .env
The variables in use are:
|SLACK_TOKEN||Slack API token, generated when you created the bot integration on Slack. This value is required.|
|DATABASE_URL||The Postgres connection URL for your standup-bot database. Defaults to
|PORT||The port for the built-in webserver to run on. This server hosts the bot's API and documentation. If omitted, the built-in webserver will not run. If you don't want the webserver, just leave
|TIMEZONE||The timezone for the bot to use, or defaults to
|LOG_LEVEL||Numeric value indicating the log level. 10 is verbose, 20 is info, 30 is warning, and 40 is error-only. Defaults to 10.|
Once everything is set up, to run standup-bot, simply run
Also ensure that your
.env file has your
SLACK_TOKEN in it:
$ echo "SLACK_TOKEN=xoxb-<your slackbot API token>" > .env
SLACK_TOKEN is required in
.env. The rest of the required env variables are already specified in
Finally, to start with docker-compose:
$ docker-compose up -d
Tests are written in cucumberjs. To run them, just
|standup||A standup is the details of a user's activities, where they describe what they did yesterday, what they are doing today, blockers, and goals|
|report||A report is when all of the standups for a day and channel are posted into the channel|