Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/seratch/slack-mention-reminder
"Mention Reminder" is a custom Slack app that allows you to set up reminders simply by mentioning its bot
https://github.com/seratch/slack-mention-reminder
node slack slack-api slack-apis slack-bot slackbot socket-mode typescript websocket
Last synced: 25 days ago
JSON representation
"Mention Reminder" is a custom Slack app that allows you to set up reminders simply by mentioning its bot
- Host: GitHub
- URL: https://github.com/seratch/slack-mention-reminder
- Owner: seratch
- License: mit
- Created: 2024-01-25T12:15:30.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-04-25T20:42:57.000Z (6 months ago)
- Last Synced: 2024-08-25T00:52:51.749Z (2 months ago)
- Topics: node, slack, slack-api, slack-apis, slack-bot, slackbot, socket-mode, typescript, websocket
- Language: TypeScript
- Homepage:
- Size: 13.7 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
## Slack Mention Reminder
"Mention Reminder" is a custom Slack app that allows you to set up reminders simply by mentioning its bot!
With this app, there's no need for you to run the `/remind` command. Why do we prefer a mention? It could be particularly useful when you aim to automate the creation of reminders within a Slack workflow.
When your workflow sends a message mentioning this app's bot user, this app will set up a reminder with the inputs:
## How it works
When you mention this app's bot user with the parameters listed below, the app will schedule a reminder message for you:
- [datetime]: When to send a reminder (in any format `new Date()` in JavaScript code can parse)
- [channel/user] Who/where to send it (@user or #channel)
- [message]: The text message to sendThe format will be as follows. Please note that `[xxx]` portions can contain embedded values.
```
@MentionReminder remind [channel/user] at [datetime]\n
[message]
```For example, this app delivers a message in #tasks channel at 9am on January 25:
```
@MentionReminder remind #tasks at 2024-01-25 09:00 +09:00
Hey @kaz, you need to submit this month's expense report by the end of today!
```The time format may be in epoch time (in seconds). When using this app along with Slack's workflow builder, you can use a format that can be embedded:
```
@MentionReminder remind #tasks at 1706183820
Hey @kaz, this is @brian's last week. Could you please check if the following accounts are prepared for termination soon:
• Google Workspace
• Zoom
• Slack
• ...
```## Set up
### Create the app and install it
- Go to https://api.slack.com/apps?new_app=1
- Choose "From an app manifest" and select the workspace to use
- Switch to JSON format and past the content in `./manifest.json`
- Go to Settings > Install App
- Install the app into your workspace
- Save the "Bot User OAuth Token" as SLACK_BOT_TOKEN
- Go to Settings > Basic Information > App-Level Tokens
- Click "Generate Token and Scopes"
- Click "Add Scope" and then add "connections:write" scope
- Name the token and click "Generate"
- Save the token as SLACK_APP_TOKEN### Run the app
- Install Node.js 20 or newer version
- Clone this repo
- Run `npm i` to install the dependencies
- Run `export SLACK_BOT_TOKEN=xoxb-....` (Settings > Install App)
- Run `export SLACK_APP_TOKEN=xapp-...` (Settings > Basic Information > App-Level Tokens)
- Run `npm start`### Invite this app's bot user
- Invite this app's bot user `@MentionReminder` to the channel where you want to use it
### Add a step mentioning this app in your workflow
Create a workflow with the following steps:
- Open a form to collect inputs
- Where/who to send (Select a channel/user)
- When to send (Date and time)
- The text message (Rich messsage composer)
- Send a message mentioning this app's bot user
- `@MentionReminder remind [channe/user] at [datetime]\n[message]`## Local development with Slack CLI
### Install CLI and grant permissions
If you haven't yet installed Slack CLI, I recommend visiting [the guide page](https://api.slack.com/automation/cli/install) to do so, and allowing it to install apps into your sandbox or paid Slack workspaces. To complete this, you will need to run `slack login` command on your terminal, plus execute `/slackauthticket` with the given parameter in your Slack workspace.
Please remember that either a sandbox or paid workpace is required to use the CLI.
### Start your app on your local machine
Once your CLI obtains the permission to install a local dev app, there is nothing else to prepare before running this template app. Clone this repo and install all the required npm packages:
```bash
git clone [email protected]:seratch/slack-mention-reminder.git slack-mention-reminder
cd slack-mention-reminder/
npm i
```Now you can execute `slack run` to activate your first Slack app connected to a workspace via the CLI. The CLI automaticaly creates a new local dev app, which synchronizes the `manifest.json` data behind the scenes and establishes a Socket Mode connection (WebSocket protocol) with the authorized Slack workspace.
```bash
unset SLACK_APP_TOKEN
unset SLACK_BOT_TOKEN
slack run
```If you see `[INFO] socket-mode:SocketModeClient:0 Now connected to Slack` in the console output, the local dev app is successfully connected to your Slack workspace :tada:
Unlike before, you don't need to set any environment variables such as `SLACK_BOT_TOKEN`. The CLI passes the required variables to your app instance. If you have some env variables in the terminal session, you might need to unset them (e.g., `unset SLACK_BOT_TOKEN`) to prevent potential misbehavior.
## License
The MIT License