                         throw ReportError.missingSite(id: site)
                 }
                 
+                let header = reasons.map { $0.header }.joined(separator: ", ")
                 let message = "[ [\(botName)](\(stackAppsLink)) ] " +
                     "[tag:\(tags.first ?? "tagless")] \(header) [\(title)](//\(domain)/q/\(id)) " +
                     room.notificationString(tags: tags, reasons: reasons)

            }
            
            var reported = false
            
            var bayesianDifference: Int?
            
            var postDetails = "Details unknown."
            
            
            
            let title = "\(post.title ?? "<no title>")"

                .replacingOccurrences(of: "]", with: "\\]")
            
            let tags = post.tags ?? []
            postDetails = reasons.map {$0.details ?? "Details unknown."}.joined (separator: ", ")
            
            var messages: [(host: ChatRoom.Host, roomID: Int, messageID: Int)] = []
            
            let sema = DispatchSemaphore(value: 0)
            
            
            for room in rooms {
                //Filter out Bayesian scores which are less than this room's threshold.
