Skip to content

Instantly share code, notes, and snippets.

@csexton
Created June 22, 2017 20:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save csexton/2ed1a23669c824077045d63061290699 to your computer and use it in GitHub Desktop.
Save csexton/2ed1a23669c824077045d63061290699 to your computer and use it in GitHub Desktop.
Bulk delete files from slack that are older than 30 days.
#!/usr/bin/env ruby
require 'net/http'
require 'json'
require 'uri'
puts " You need a slack toke for your user on the team you'd like to delete"
puts "files from. Visit the following url to get a token:"
puts
puts "https://api.slack.com/custom-integrations/legacy-tokens"
puts
print "Slack Token: "
@token = gets.strip
def list_files
ts_to = (Time.now - 30 * 24 * 60 * 60).to_i # 30 days ago
params = {
token: @token,
ts_to: ts_to,
count: 100
}
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...'
100.times do
files = list_files
file_ids = files.map { |f| f['id'] }
delete_files(file_ids)
end
p 'Done!'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment