Skip to content

If there has been no activity in a channel for awhile, you can automatically archive it using a cronjob.

License

Notifications You must be signed in to change notification settings

Symantec/slack-autoarchive

Folders and files

NameName
Last commit message
Last commit date
Mar 7, 2019
Apr 17, 2019
Apr 17, 2019
Jul 2, 2019
Jul 30, 2015
Jul 2, 2019
Apr 17, 2019
Apr 16, 2019
Nov 2, 2018
Apr 17, 2019
Mar 11, 2019
Apr 17, 2019
Apr 17, 2019
Jun 26, 2018

Repository files navigation

Autoarchive unused slack channels

Requirements

  • python3
  • Install requirements.txt ( pip install -r requirements.txt )
  • An OAuth token from a Slack app on your workspace that has the following permission scopes:
    • channels:history
    • channels:read
    • channels:write
    • chat:write:bot
    • chat:write:user

Example Usages

The SLACK_TOKEN must be exposed as a environment variable before running your script. By default, the script will do a DRY_RUN. To perform a non-dry run, specify DRY_RUN=false as an environment variable as well. See sample usages below.

# Run the script in dry run archive mode...This will output a list of channels that will be archived.
SLACK_TOKEN=<TOKEN> python slack_autoarchive.py

# Run the script in active archive mode...THIS WILL ARCHIVE CHANNELS!
DRY_RUN=false SLACK_TOKEN=<TOKEN> python slack_autoarchive.py

How can I exempt my channel from being archived?

You can add the string '%noarchive' to your channel purpose or topic. (There is also a whitelist file or env variable if you prefer.)

What Channels Will Be Archived

A channel will be archived by this script is it doesn't meet any of the following criteria:

  • Has non-bot messages in the past 60 days.
  • Is whitelisted. A channel is considered to be whitelisted if the channel name contains keywords in the WHITELIST_KEYWORDS environment variable. Multiple keywords can be provided, separated by comma.

What Happens When A Channel Is Archived By This Script

  • *Don't panic! It can be unarchived by following these instructions However all previous members would be kicked out of the channel and not be automatically invited back.
  • A message will be dropped into the channel saying the channel is being auto archived because of low activity
  • You can always whitelist a channel if it indeed needs to be kept despite meeting the auto-archive criteria.

Custom Archive Messages

Just before a channel is archived, a message will be sent with information about the archive process. The default message is:

This channel has had no activity for %s days. It is being auto-archived. If you feel this is a mistake you can <https://get.slack.help/hc/en-us/articles/201563847-Archive-a-channel#unarchive-a-channel|unarchive this channel> to bring it back at any point.'

To provide a custom message, simply edit templates.json.

Known Issues

  • Since slack doesn't have a batch API, we have to hit the api a couple times for each channel. This makes the performance of this script slow. If you have thousands of channels (which some people do), get some coffee and be patient.

Docker

  • First build the docker image (in the root of the project)

docker build --tag autoarchive .

  • run the container (dryrun is set to true by default)

docker run -e SLACK_TOKEN=<YOUR_AWESOME_TOKEN> autoarchive

  • if your ready to archive run

docker run -e SLACK_TOKEN=<YOUR_AWESOME_TOKEN> -e DRY_RUN=false autoarchive

About

If there has been no activity in a channel for awhile, you can automatically archive it using a cronjob.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published