Gratibot is a Slack bot for recognizing the accomplishments of friends and colleagues. Read more in Liatrio's blog post about Gratibot.
- Deploy on Azure
- Implement Functional Testing
- Refactor Logic to Service Module
- Redeem Fistbumps Through Gratibot
- Replace Botkit with Bolt
Gratibot leverages Convential Commits to drive version bumps and mantain a clean commit history. Things worth noting:
- Commits will be linted locally to enforce valid conventional commits
- Releases will be published and maintained by semantic-release
- Preview your release locally with
npm run semantic-release --dry-run
(You'll need a GITHUB_TOKEN)
- Preview your release locally with
Gratibot is deployed in Liatrio's Azure environments using GitHub Actions and Terraform. After a change passes CI checks and is approved by reviewers, it can be merged into main.
Commits to main will kickoff the following steps:
- Build & Publish a new Docker image using the current Git ref as a tag
- Apply the new image and any infrastructure changes to our nonprod Azure subscription
- Upon manual review from maintainers, a new Release will be generated and published to GitHub
New GitHub Releases will trigger our workflow to deploy changes to our prod Azure subscription
Create a Slack app for running a development version of Gratibot:
When using Slack manifests you cannot use an old slack app. You will need to create a new one.
- Goto api.slack.com/apps.
- Click 'Create New App' and choose to create an app from an app manifest.
- Select the Slack workspace you'll run the bot in for development.
- Copy Gratibot's app manifest from
slack_app_manifest.yml
. - Replace any occurences of
${botName}
with a name for your bot.- If you're developing in a shared workspace, consider a name like
YOUR_NAME-gratibot
. This will help others to identify who owns the bot.
- If you're developing in a shared workspace, consider a name like
- Finally, confirm that the configuration looks correct and click 'Create'
-
On the Basic Information tab under Settings, scroll down to 'App-Level Tokens' and click the button to 'Generate Token and Scopes'. Name your token 'websocket-token', and add the scope 'connections:write'. Generate the token. Copy the Token that is generated, we'll use it later for the bot's APP_TOKEN.
-
Go to the Install App tab under Settings. Click the button to install the app to your workspace, and follow the provided prompts. After installing, copy the Bot User OAuth Token value, and save it for later.
-
In your cloned copy of the repo, create a file called
.env
, it should look something like:APP_TOKEN=SECRET GOES HERE BOT_USER_OAUTH_ACCESS_TOKEN=SECRET GOES HERE
Replace the values after the equals sign with the values you saved before. There is no need for quotes. Make sure to not share these values, and to not publish them online such as by pushing them to GitHub.
-
Now that your secrets are configured, run your local copy of Gratibot with
docker-compose up --build
With all of these steps complete, your bot should be running in the Slack workspace you chose to develop for. You should now be ready to test your bot, and progress with development.
list databases. gratibot
is the database being used for this project.
db.adminCommand( { listDatabases: 1 } )
switch to gratibot
db.
use gratibot
list collections (in the current db)
db.getCollectionNames()
list all items in a collections
db.COLLECTION_NAME.find()
find item in collection based on index value
db.COLLECTION_NAME.find({KEY: VALUE})
run tests
npm test
run lint fix
npm run lint-fix