Gratibot is a Slack bot for recognizing the accomplishments of friends and colleagues. Read more in Liatrio's blog post about Gratibot.
Gratibot leverages Convential Commits to drive version bumps and mantain a clean commit history. Things worth noting:
npm run semantic-release --dry-run
(_You'll need a GITHUBTOKEN)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:
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.
slack_app_manifest.yml
.${botName}
with a name for your bot.
YOUR_NAME-gratibot
.
This will help others to identify who owns the bot.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