diff --git a/lib/discourse_chat/provider/slack/slack_transcript.rb b/lib/discourse_chat/provider/slack/slack_transcript.rb index 155baf0..f33d884 100644 --- a/lib/discourse_chat/provider/slack/slack_transcript.rb +++ b/lib/discourse_chat/provider/slack/slack_transcript.rb @@ -220,7 +220,11 @@ module DiscourseChat::Provider::SlackProvider # Build some message objects @messages = [] raw_messages.each_with_index do |message, index| + # Only load messages next unless message["type"] == "message" + # Don't load responses to threads (if ts==thread_ts then it's the thread parent) + next if message["thread_ts"] && message["thread_ts"] != message["ts"] + this_message = SlackMessage.new(message, self) @messages << this_message end diff --git a/spec/lib/discourse_chat/provider/slack/slack_transcript_spec.rb b/spec/lib/discourse_chat/provider/slack/slack_transcript_spec.rb index 3492210..063128a 100644 --- a/spec/lib/discourse_chat/provider/slack/slack_transcript_spec.rb +++ b/spec/lib/discourse_chat/provider/slack/slack_transcript_spec.rb @@ -28,6 +28,13 @@ RSpec.describe DiscourseChat::Provider::SlackProvider::SlackTranscript do "text": "So, who's interested in the new ?", "ts": "1501801629.052212" }, + { + "type": "message", + "user": "U6E2W7R8C", + "text": "I'm interested!!", + "ts": "1501801634.053761", + "thread_ts": "1501801629.052212" + }, { "text": "", "username": "Test Community", @@ -128,6 +135,10 @@ RSpec.describe DiscourseChat::Provider::SlackProvider::SlackTranscript do transcript.load_chat_history end + it 'ignores messages in a thread' do + expect(transcript.messages.length).to eq(6) + end + it 'loads in chronological order' do # API presents in reverse chronological expect(transcript.messages.first.ts).to eq('1501093331.439776') end