Code for managing Cleanup of Stale Channels
You'll need to install a few libraries: pip install -r requirements.txt
You'll also need to change configuration.yaml
appropriately. warner.py
and archiver.py
should then work from the command line. Productionized automated deployments and running on a schedule are left unspecified because every production environment is unique.
That said, if you're running on Heroku, you can create a single clock
process that runs python scheduler.py
.
The Warner notifies channels that have been inactive for a period of time.
The archiver archives channels that have been inactive for a period of time.
The Announcer will notify a channel of all new channels created within a period of time.
The Flagger uses a ruleset defined in a specific channel to perform actions such as notifying channels of messages that have received a certain number of reactions.
You'll want to change this to the name of your Slack
Tune these two variables to decide how long after inactivity a channel should be warned for inactivity and then subsequently archived.
These channels need to be manually created by you in your Slack.
- Make sure the Slackbot app is installed for your Slack
- Add a Slackbot integration, and copy the
token
parameter from the URL provided
The best way to get an API_TOKEN
is to create a new Slack App.
Once you create and name your app on your team, go to "OAuth & Permissions" to give it the following permission scopes:
channels:history
channels:read
channels:write
chat:write:bot
chat:write:user
emoji:read
users:read
After saving, you can copy the OAuth Access Token value from the top of the same screen. It probably starts with xox
.
Destalinator can be chatty and make potentially big changes to a Slack team (by warning or archiving a large amount of channels), especially when first installed.
To minimize the risk of making a mistake, Destalinator will run in a dry-run mode unless the DESTALINATOR_ACTIVATED
environment variable exists. Set it to any non-empty value and Destalinator is "active." If you want to remain in dry-run mode, ensure this variable is unset/does not exist.
Tune your preferred log level for server logs or local debugging. Does not affect the ENV var specified by output_debug_env_varname
.
If you would like to log to a Slack channel as well as the default log destination, you can set true
here. The channel
will then be pulled from log_channel
in configuration.yaml
.
If you don't want to start archiving channels until a certain date right after introducing destalinator to your team,
you can set an ISO-8601 date here (YYYY-mm-dd
).
If you would like to configure exception handling & tracking with Sentry, set up a Sentry account and configure this environment variable with the appropriate DSN value.
If you're on Heroku, you can provision this with:
heroku addons:create sentry:f1