identity-vault/lib/tasks/slack.rake
2026-02-04 13:24:46 -05:00

30 lines
938 B
Ruby

# frozen_string_literal: true
namespace :slack do
desc "Join all channels defined in config/slack_channels.yml"
task join_channels: :environment do
config = YAML.load_file(Rails.root.join("config/slack_channels.yml"))
client = SlackService.client
joined_ids = Set.new
config.each do |env, channels|
puts "\n=== #{env} ==="
channels.each do |name, channel_id|
next if joined_ids.include?(channel_id)
joined_ids << channel_id
print "Joining ##{name} (#{channel_id})... "
client.conversations_join(channel: channel_id)
puts ""
rescue Slack::Web::Api::Errors::MethodNotSupportedForChannelType
puts "skipped (DM or unsupported type)"
rescue Slack::Web::Api::Errors::ChannelNotFound
puts "not found"
rescue Slack::Web::Api::Errors::SlackError => e
puts "failed: #{e.message}"
end
end
puts "\nDone!"
end
end