A slack bot to help you manage your team's rotas.
Say for example, that you have a team standup every weekday at 9:30, you could create a rota with the following commands:
@Rota create my-team-standup
@Rota add my-team-standup @user1 @user2 @user3
@Rota assign @user1 my-team-standup
The bot can then be invoked by the reminders slackbot command to schedule common operations:
/remind #my-team-channel @Rota who my-team-standup every weekday at 9:20
/remind #my-team-channel @Rota rotate my-team-standup every weekday at 9:45
You may want to schedule these operations from a separate channel (e.g. #rota-integration
) to reduce the noise in your team channel.
- ๐จ
@Rota create [rota-name] "[optional rota description]"
create a new rota.[rota-name]
can only contain lowercase letters, numbers, and hyphens."[optional rota description]"
must be enclosed in double quotes if given. - โ
@Rota delete [rota-name]
delete a rota. - ๐
@Rota list
display a list of all rotas. - ๐
@Rota show [rota-name]
show info about a rota. - ๐ฅ
@Rota add [rota-name] [user1 user2 user3]
add users to a rota. - ๐โโ๏ธ
@Rota assign [user] [rota-name]
assign user to rota. - ๐
@Rota rotate [rota-name]
rotate a rota. - ๐
@Rota who [rota-name]
who is assigned to a rota. - ๐
@Rota help
show this list of commands.
- The app is written in Typescript using the bolt-js framework.
- Uses the Events API to receive events from Slack, via the
app_mention
event withapp_mentions:read
permissions. - Uses the Slack Web API to send messages, via the
say
function withchat:write
permissions. - Uses the yargs parsing library to parse commands from the message text.
- Makes outbound requests to the hosted API, see rota-api for more info.
- node.js (v18.x)
# Install dependencies
npm install
# Run the app
npm start
# Run tests
npm test
# (optional) expose an ngrok tunnel to your local machine
ngrok http 3000
- Authorization/authentication has not yet been implemented (both client-side and server-side), so the bot has not yet been published on the slack app store, and will currently only work in workspaces that have installed the app manually.