!7 sclass ai_markCandidateBotTriples_CandidateMsg { S symbol, text; int secs; // seconds after last post Bool bot; } static void ai_markCandidateBotTriples() { new LL candidates; for (L t : ai_all_threeInARow("Chat line")) { L l = ai_markCandidateBotTriples_analyze(t); continue unless isFalse(l.get(0).bot) && isTrue(l.get(1).bot) && isFalse(l.get(2).bot); candidates.add(l); for (ai_markCandidateBotTriples_CandidateMsg m : l) print((isTrue(m.bot) ? "[B]" : isFalse(m.bot) ? "[U]" : "[?]") + " " + m.symbol + ": " + quoteBorderless(m.text) + " [" + m.secs + " s]"); print(); post(first(t), "possibly is", "a bot triple starter"); } print(n2(candidates, "candidate")); } static L ai_markCandidateBotTriples_analyze(L t) { new L l; for (S s : t) { new ai_markCandidateBotTriples_CandidateMsg m; m.symbol = s; m.text = ai_chatLineText(s); m.secs = (int) ai_chatLineTimeDiff(s)/1000; m.bot = ai_chatLineSentByBot(s); l.add(m); } ret l; }