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