Improve slack transcript formatting
This commit is contained in:
parent
05d38e2b4f
commit
95f99e5fcf
|
@ -91,27 +91,60 @@ module DiscourseChat::Provider::SlackProvider
|
||||||
return error_text unless json['ok']
|
return error_text unless json['ok']
|
||||||
post_content = ""
|
post_content = ""
|
||||||
|
|
||||||
|
post_content << "[quote]\n"
|
||||||
|
|
||||||
|
users_in_transcript = []
|
||||||
|
last_user = ''
|
||||||
json["messages"].reverse.each do |message|
|
json["messages"].reverse.each do |message|
|
||||||
next unless message["type"] == "message"
|
next unless message["type"] == "message"
|
||||||
|
|
||||||
username = ""
|
username = ""
|
||||||
if message["user"]
|
if user_id = message["user"]
|
||||||
username = users.find{|u| u["id"] == message["user"]}["name"]
|
user = users.find{|u| u["id"] == user_id}
|
||||||
|
users_in_transcript << user
|
||||||
|
username = user["name"]
|
||||||
elsif message.key?("username")
|
elsif message.key?("username")
|
||||||
username = message["username"]
|
username = message["username"]
|
||||||
end
|
end
|
||||||
|
|
||||||
post_content << "[quote='@#{username}']\n"
|
same_user = last_user == username
|
||||||
|
last_user = username
|
||||||
|
|
||||||
|
post_content << "\n![#{username}] " if message["user"] and not same_user
|
||||||
|
post_content << "**@#{username}:** " if not same_user
|
||||||
|
|
||||||
|
text = message["text"]
|
||||||
|
|
||||||
|
# Format links (don't worry about special cases @ # !)
|
||||||
|
text.gsub!(/<(.*?)>/) do |match|
|
||||||
|
group = $1
|
||||||
|
parts = group.split('|')
|
||||||
|
link = parts[0].start_with?('@','#','!') ? '' : parts[0]
|
||||||
|
text = parts.length > 1 ? parts[1] : parts[0]
|
||||||
|
"[#{text}](#{link})"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Add an extra * to each side for bold
|
||||||
|
text.gsub!(/\*(.*?)\*/) do |match|
|
||||||
|
"*#{match}*"
|
||||||
|
end
|
||||||
|
|
||||||
post_content << message["text"]
|
post_content << message["text"]
|
||||||
|
|
||||||
if message.key?("attachments")
|
if message.key?("attachments")
|
||||||
message["attachments"].each do |attachment|
|
message["attachments"].each do |attachment|
|
||||||
next unless attachment.key?("fallback")
|
next unless attachment.key?("fallback")
|
||||||
post_content << "\n[quote]\n#{attachment["fallback"]}\n[/quote]"
|
post_content << "\n> #{attachment["fallback"]}\n"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
post_content << "\n[/quote]\n\n"
|
post_content << "\n"
|
||||||
|
end
|
||||||
|
|
||||||
|
post_content << "[/quote]\n\n"
|
||||||
|
|
||||||
|
users_in_transcript.uniq.each do |user|
|
||||||
|
post_content << "[#{user["name"]}]: #{user["profile"]["image_24"]}\n" if user
|
||||||
end
|
end
|
||||||
|
|
||||||
secret = DiscourseChat::Helper.save_transcript(post_content)
|
secret = DiscourseChat::Helper.save_transcript(post_content)
|
||||||
|
|
Loading…
Reference in New Issue