lib/slack/smart-bot/commands/general/teams/ping_team.rb in slack-smart-bot-1.14.2 vs lib/slack/smart-bot/commands/general/teams/ping_team.rb in slack-smart-bot-1.15.0

- old
+ new

@@ -20,11 +20,12 @@ team = @teams[team_name.to_sym].deep_copy assigned_members = team.members.values.flatten assigned_members.uniq! assigned_members.dup.each do |m| - user_info = @users.select { |u| u.id == m or (u.key?(:enterprise_user) and u.enterprise_user.id == m) or u.name == m or (u.key?(:enterprise_user) and u.enterprise_user.name == m) }[-1] + # extract the team_id from the member name: team_id_user_name. so everything after the first _ is the user_name. user_name can include _. + user_info = find_user(m) assigned_members.delete(m) if user_info.nil? or user_info.deleted end unassigned_members = [] not_on_team_channel = [] @@ -32,23 +33,23 @@ team_members = [] team.channels["members"].each do |ch| get_channels_name_and_id() unless @channels_id.key?(ch) tm = get_channel_members(@channels_id[ch]) tm.each do |m| - user_info = @users.select { |u| u.id == m or (u.key?(:enterprise_user) and u.enterprise_user.id == m) }[-1] - team_members << user_info.name unless user_info.nil? or user_info.is_app_user or user_info.is_bot or user_info.deleted + user_info = find_user(m) + team_members << "#{user_info.team_id}_#{user_info.name}" unless user_info.nil? or user_info.is_app_user or user_info.is_bot or user_info.deleted end end team_members.flatten! team_members.uniq! unassigned_members = team_members - assigned_members - unassigned_members.delete(config.nick) + unassigned_members.delete("#{config.team_id}_#{config.nick}") unless unassigned_members.empty? um = unassigned_members.dup um.each do |m| - user_info = @users.select { |u| u.name == m or (u.key?(:enterprise_user) and u.enterprise_user.name == m) }[-1] + user_info = find_user(m) unless user_info.nil? or user_info.profile.title.to_s == "" or user_info.deleted team.members[user_info.profile.title.to_snake_case] ||= [] team.members[user_info.profile.title.to_snake_case] << m unassigned_members.delete(m) end @@ -68,26 +69,27 @@ members_list = team.members[member_type].shuffle end if type == :ping active_members = [] members_list.each do |member| - member_info = @users.select { |u| u.name == member }[-1] + member_info = find_user(member) unless member_info.nil? or member_info.deleted active = (get_presence(member_info.id).presence.to_s == "active") active_members << member if active end end members = active_members else members = members_list end members.dup.each do |m| - user_info = @users.select { |u| u.id == m or (u.key?(:enterprise_user) and u.enterprise_user.id == m) or u.name == m or (u.key?(:enterprise_user) and u.enterprise_user.name == m) }[-1] + user_info = find_user(m) members.delete(m) if user_info.nil? or user_info.deleted end if members.size > 0 - respond "#{icon} *#{type} #{team_name} team #{member_type}*\nfrom <@#{user.name}>\nto <@#{members[0..9].join(">, <@")}>#{", #{members[10..-1].join(", ")}" if members.size > 10} \n> #{message.split("\n").join("\n> ")}" + members_names = members.map { |m| m.split("_")[1..-1].join("_") } + respond "#{icon} *#{type} #{team_name} team #{member_type}*\nfrom <@#{user.name}>\nto <@#{members_names[0..29].join(">, <@")}>#{", #{members_names[30..-1].join(", ")}" if members.size > 30} \n> #{message.split("\n").join("\n> ")}" elsif type == :ping respond "It seems like there are no available #{member_type} members on #{team_name} team. Please call `see team #{team_name}`" else respond "It seems like there are no #{member_type} members on #{team_name} team. Please call `see team #{team_name}`" end