class SlackSmartBot
def remove_admin(user, admin_user)
save_stats(__method__)
if Thread.current[:dest][0]=='D'
respond "This command cannot be called from a DM"
else
if Thread.current[:typem] == :on_call
channel = Thread.current[:dchannel]
elsif Thread.current[:using_channel].to_s==''
channel = Thread.current[:dest]
else
channel = Thread.current[:using_channel]
end
messages = []
admins = config.masters.dup
team_id_admins = config.team_id_masters.dup
channels = get_channels()
channel_found = channels.detect { |c| c.id == channel }
if !channel_found.nil? and channel_found.creator.to_s != ''
creator_info = find_user(channel_found.creator)
admins << creator_info.name
team_id_admins << "#{creator_info.team_id}_#{creator_info.name}"
end
if Thread.current[:typem] == :on_bot or Thread.current[:typem] == :on_master
admins << config.admins.dup
team_id_admins << config.team_id_admins.dup
end
if @admins_channels.key?(channel) and @admins_channels[channel].size > 0
team_id_admins << @admins_channels[channel]
admins << @admins_channels[channel].map { |a| a.split('_')[1..-1].join('_') }
end
admins.flatten!
admins.uniq!
admins.delete(nil)
team_id_admins.flatten!
team_id_admins.uniq!
team_id_admins.delete(nil)
if team_id_admins.include?("#{user.team_id}_#{user.name}")
admin_info = find_user(admin_user)
if creator_info.name == admin_info.name and creator_info.team_id == admin_info.team_id
messages << "This user created the channel and cannot be removed as an admin."
elsif config.team_id_masters.include?("#{admin_info.team_id}_#{admin_info.name}") or config.team_id_masters.include?(admin_user)
messages << "Master admins cannot be removed as admins of this channel."
elsif config.team_id_admins.include?("#{admin_info.team_id}_#{admin_info.name}") or config.team_id_admins.include?(admin_user)
messages << "This user is a defaulted admin for this channel and cannot be removed using this command."
elsif !team_id_admins.include?("#{admin_info.team_id}_#{admin_info.name}")
messages << "This user is not an admin of this channel."
else
@admins_channels[channel] ||= []
@admins_channels[channel].delete("#{admin_info.team_id}_#{admin_info.name}")
update_admins_channels()
messages << "The user is not an admin of this channel from now on."
admins.delete(admin_info.name)
team_id_admins.delete("#{admin_info.team_id}_#{admin_info.name}")
end
messages << "*Admins*: <@#{admins.join('>, <@')}>"
else
messages << "Only the creator of the channel, Master admins or admins can remove an admin of this channel."
messages << "*Admins*: <@#{admins.join('>, <@')}>"
end
respond messages.join("\n")
end
end
end