https://github.com/devjiwonchoi/vercel-slackbot
https://github.com/devjiwonchoi/vercel-slackbot
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/devjiwonchoi/vercel-slackbot
- Owner: devjiwonchoi
- Created: 2024-01-09T11:58:25.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-01-09T11:58:31.000Z (over 2 years ago)
- Last Synced: 2024-10-11T12:09:01.802Z (over 1 year ago)
- Language: JavaScript
- Homepage: https://vercel-slackbot-six.vercel.app
- Size: 4.88 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Note Taker Slack App/Bot
This is a Slack Bot, using Vercel for serverless deployment and Upstash Redis for database.
## Deploy This Project on Vercel!
Simply fill the environmental variables defined below and your serverless functions will be up in seconds!
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fexamples%2Ftree%2Fmain%2Fsolutions%2Fslackbot&env=SLACK_SIGNING_SECRET,SLACK_BOT_TOKEN&integration-ids=oac_V3R1GIpkoJorr6fqyiwdhl17)
---
### What The Bot Does
- Events:
- New channel created:
- When a new is channel created, posts a message to `general` channel stating that such an event happened.
- Slackbot mentioned:
- Whenever the bot is mentioned, posts a
message to `general` channel stating
that the bot was mentioned.

- Commands:
- `/note set ` :
- Sets a key value pair.
- `/note get ` :
- Gets the value corresponding to the key
- `/note list-set ` :
- Adds the `` to `` list as an item.
- `/note list-all ` :
- Lists all the items in the ``
- `/note list-remove ` :
- Removes `` from the ``

- P.S:
- All of the commands mentioned can be implemented as slackbot mentions rather than slash commands. For demonstration purposes, slash commands are also used. Use cases may differ.
---
### Configuring Slack Bot - 1
1. Go to [Slack API Apps Page](https://api.slack.com/apps):
- Create new App
- From Scratch
- Name your app & pick a workspace
- Go to Oauth & Permissions
- Add the following scopes
- app_mentions:read
- channels:read
- chat:write
- chat:write.public
- commands
- Install App to workspace
- Basic Information --> Install Your App --> Install To Workspace
2. Note the variables (These will be the env variables for vercel deployment) :
- `SLACK_SIGNING_SECRET`:
- Go to Basic Information
- App Credentials --> Signing Secret
- `SLACK_BOT_TOKEN`:
- Go to OAuth & Permissions
- Bot User OAuth Token
---
### Deploying on Vercel
1. Click the deploy button:
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fexamples%2Ftree%2Fmain%2Fsolutions%2Fslackbot&env=SLACK_SIGNING_SECRET,SLACK_BOT_TOKEN&integration-ids=oac_V3R1GIpkoJorr6fqyiwdhl17)
2. Fill the environmental variables defined above.
---
### Configuring Slack Bot - 2
- After deployment, you can use the provided `vercel_domain`.
1. Go to [Slack API Apps Page](https://api.slack.com/apps) and choose relevant app:
- Go to Slash Commands:
- Create New Command:
- Command : `note`
- Request URL : `/api/note`
- Configure the rest however you like.
- Go to Event Subscribtions:
- Enable Events:
- Request URL: `/api/events`
- Subscribe to bot events by adding:
- app_mention
- channel_created
2. After these changes, Slack may require reinstalling of the app.
---
### Running Locally
Use Vercel CLI to replicate serverless development environment:
`vercel dev` --> localhost address will be given.
- If you don't have a static IP, you will want to tunnel your localhost to a public IP. For that, you can use `ngrok`:
- ./ngrok http 3000 --> Tunnels your localhost:3000
- Provided address is the endpoint.
---
### Additionally
For additional explanations of the source code and how to run it locally, you can refer to [the blogpost](https://blog.upstash.com/vercel-note-taker-slackbot).