diff --git a/bin/slackcat b/bin/slackcat index 7700c92..7388142 100755 --- a/bin/slackcat +++ b/bin/slackcat @@ -22,6 +22,10 @@ class Slackcat @channels ||= get_objects('channels.list', 'channels') end + def channel_by(name) + channels().find { |channel| channel['name'] == name } + end + def groups @groups ||= get_objects('groups.list', 'groups') end @@ -114,8 +118,15 @@ if opts.values_at(:channels, :groups, :users).all?(&:empty?) end ## translate destination names into slack ids -channels = opts[:channels].split(/[\s,]+/).map do |name| - slack.channels.find { |channel| channel['name'] == name }.fetch('id') +individual_channel_names = opts[:channels].split(/[\s,]+/) +existing_channel_names = individual_channel_names.select {|name| slack.channel_by(name)} + +(individual_channel_names - existing_channel_names).each do |name| + puts "skipping channel #{name}: not available (maybe use -g for group?)" +end + +channels = existing_channel_names.map do |name| + slack.channel_by(name).fetch('id') end groups = opts[:groups].split(/[\s,]+/).map do |name|