|
1 | | -# standup-bot |
| 1 | +**Description** |
2 | 2 |
|
3 | | -## Getting started |
| 3 | +This is a simple standup bot for slack. |
4 | 4 |
|
5 | | -- [install go](https://golang.org/doc/install) |
6 | | -- export any required environment variables |
7 | | -- run with `make dev` |
| 5 | +**Setup** |
8 | 6 |
|
9 | | -## Environment Configs |
| 7 | +1. Create standup bot with `app-manifest.yaml` file provided in the root of this directory |
| 8 | +1. Get bot and bot user tokens and set environment variables defined in `lib/config/main.go` |
| 9 | +1. Set up s3 bucket and provide AWS Creds if you would like standup settings to persists between restarts |
10 | 10 |
|
11 | | -If you set `SSM_PATH` config values are pull from SSM. Values in SSM are the same as below. |
| 11 | +**Docker** |
12 | 12 |
|
13 | | -- `SSM_PATH` - Pull configs from SSM using this SSM path |
14 | | -- `SLACK_TOKEN` - API token used to auth against Slack as a bot user |
15 | | -- `OAUTH_SLACK_TOKEN` - API token used to auth against Slack using oauth. Required for non-bot API scope |
16 | | -- `SLACK_GROUP` - Name of Slack group containing participating users |
17 | | -- `SLACK_CHANNEL` - Channel ID to post standup notes in |
18 | | -- `CRON_SOLICIT_STANDUP` - cron expression in UTC to solicit for standup notes. example, "0 0 13 * * mon-fri", // 8AM central |
19 | | -- `CRON_SHARE_STANDUP` - cron expression in UTC to share standup notes to the main channel. example, "0 0 13 * * mon-fri", // 8AM central |
20 | | -- `STANDUP_MESSAGE` - optionally customize the message sent to users when soliciting for standup notes |
21 | | -- `SHAME_PARTICIPANTS` - if set to "true" post a message when user doesn't particiapte in the standup |
| 13 | +```bash |
| 14 | +# quickstart |
| 15 | +docker run \ |
| 16 | + -e SLACK_BOT_TOKEN=xoxb-blahblah \ |
| 17 | + -e SLACK_APP_TOKEN=xapp-blahblah \ |
| 18 | + -t justmiles/standup-bot |
22 | 19 |
|
23 | | -## Roadmap |
| 20 | +# with persistant brain |
| 21 | +docker run \ |
| 22 | + -e SLACK_BOT_TOKEN=xoxb-blahblah \ |
| 23 | + -e SLACK_APP_TOKEN=xapp-blahblah \ |
| 24 | + -e S3_BRAIN_BUCKET=some_s3_bucket \ |
| 25 | + -e S3_BRAIN_KEY=brain.json \ |
| 26 | + -e AWS_REGION \ |
| 27 | + -e AWS_ACCESS_KEY_ID \ |
| 28 | + -e AWS_SECRET_ACCESS_KEY \ |
| 29 | + -e AWS_SESSION_TOKEN \ |
| 30 | + -t justmiles/standup-bot |
| 31 | +``` |
24 | 32 |
|
25 | | -- [x] instead of sourcing partificpans by Slack Group, just message everyone in the `SLACK_CHANNEL` |
26 | | -- [x] add property `STANDUP_MESSAGE` to customize the message sent to users when solociting standup notes |
| 33 | +**Configure your bot** |
| 34 | + |
| 35 | +In slack just type `/standup` |
| 36 | + |
| 37 | +**Test your bot** |
| 38 | + |
| 39 | +In a channel type the below commands - this will create a mock standup with you as the sole participant. |
| 40 | +`/standup solicit` |
| 41 | +`/standup share` |
| 42 | + |
| 43 | +**Users in multiple standups Scenarios** |
| 44 | + |
| 45 | +If User recieves a standup solicitation from multiple channel configurations at the same time, then: |
| 46 | +- If User replies as normal, then both standups will receive the same notes. |
| 47 | +- If user replies in thread, then only the thread response will be used for the standup notes. |
| 48 | + |
| 49 | +**Roadmap** |
| 50 | + |
| 51 | +- Provide terraform module for quick setup in fargate |
| 52 | +- Update readme with a "how to" |
0 commit comments