Skip to content

Instantly share code, notes, and snippets.

@tadejm
Forked from jamescmartinez/slack_delete.rb
Last active September 24, 2017 19:04
Show Gist options
  • Save tadejm/2d879bab4d73f44aca9c35416adc08fa to your computer and use it in GitHub Desktop.
Save tadejm/2d879bab4d73f44aca9c35416adc08fa to your computer and use it in GitHub Desktop.
This Ruby script will bulk remove all non starred Slack files older than 30 days. Just add your API token from https://api.slack.com/web#authentication into the token quotes at the top of the file.
require 'net/http'
require 'json'
require 'uri'
@token = ''
def list_files
ts_to = (Time.now - 30 * 24 * 60 * 60).to_i # 30 days ago
params = {
token: @token,
ts_to: ts_to,
count: 1000
}
uri = URI.parse('https://slack.com/api/files.list')
uri.query = URI.encode_www_form(params)
response = Net::HTTP.get_response(uri)
JSON.parse(response.body)['files']
end
def delete_files(file_ids)
file_ids.each do |file_id|
params = {
token: @token,
file: file_id
}
uri = URI.parse('https://slack.com/api/files.delete')
uri.query = URI.encode_www_form(params)
response = Net::HTTP.get_response(uri)
p "#{file_id}: #{JSON.parse(response.body)['ok']}"
end
end
p 'Deleting files...'
files = list_files
file_ids = file_ids = files.reject { |f| f["num_stars"] }.map { |f| f['id'] }
delete_files(file_ids)
p 'Done!'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment