lib/ruboty/trello.rb in ruboty-trello-0.1.6 vs lib/ruboty/trello.rb in ruboty-trello-0.2.0

- old
+ new

@@ -29,21 +29,33 @@ label_id = label&.id member_id = nil if ENV['TRELLO_AUTO_ASSIGN'] && message.from_name sender = message.from_name.downcase - member = board.members.find do |member| - member.username.downcase == sender || member.full_name.downcase.include?(sender) - end + member = find_member(board.members, sender) member_id = member&.id end iso8601_time = Time.parse(message[:due_date]).iso8601 rescue nil new_card = ::Trello::Card.create(name: message[:name], list_id: list.id, card_labels: label_id, member_ids: member_id, due: iso8601_time) if new_card.short_url prefix = ENV['TRELLO_RESPONSE_PREFIX'] || 'Created' message.reply "#{prefix} #{new_card.short_url}" + end + end + + def find_member(members, sender) + # SlackのDisplay NameとTrelloのUsernameのマッピング + senders_to_members = {} + if ENV['TRELLO_MEMBER_FROM_SENDER'] + senders_to_members = JSON.parse(ENV['TRELLO_MEMBER_FROM_SENDER']) + end + members.find do |member| + # sender: SlackのDisplay Name + # member.username: TrelloのUsername + # member.full_name: AtlassianのPublic Name + member.username.downcase == senders_to_members[sender] || member.username.downcase == sender || member.full_name.downcase == sender end end end end end