Skip to content

pR0Ps/slack-read-only-bot

Repository files navigation

Slack read-only bot

Manage your Slack community by making read-only channels. Only admins can post to read-only channels, other users' messages get deleted and the user gets a message from the bot.

Setup

Create the Bot

  1. Create a new classic Slack app for your workspace at https://api.slack.com/apps?new_classic_app=1 .
  2. Click App Home, click the Add Legacy Bot User button, and give your bot a username and name.
  3. Click OAuth & Permissions . Under Scopes click Add an OAuth Scope and add the following scopes:
    • bot - Allow users to interact with the bot (needed to message users)
    • chat:write:bot - Allow deleting user messages
  4. On the same page click on the Install App to Workspace button and authorize it to connect to your workspace. Note that the account that authorizes the bot must be able to delete the messages of other users. This is usually just the workspace owner/admin.
  5. Back on the OAuth & Permissions page, copy the two access tokens (one should start with xoxp- and the other with xoxb-).
  6. Invite the bot to all the channels you want to make read-only.

Run the bot

  1. Install the bot using pip (pip install slack-read-only-bot)
  2. Create a config file based on the following example:
app_token: xoxp-...
bot_token: xoxb-...
delete_msg: The channel you just posted to is read-only, only admins can post to it.
admins:
  - admin1
  - admin2
channels:
  - channel1
  - channel2
  1. Run slack-read-only-bot --config <path to file> to run the bot and test that it works as expected.
  2. [optional] Configure your system to run slack-read-only-bot as a service using something like systemd to ensure that it runs at startup, restarts if it crashes, etc. See slack-read-only-bot.service for an example/template.

Docker / EasyPanel

Make sure you map the config file from your host instance to /usr/src/app/config.yml

Credits

Based on https://github.com/rokcarl/slack-read-only-bot