შეჯამება. ქვემოთ — რატომ ხუთი სერვისი ერთის ნაცვლად, როგორ სწავლობს AI-მოდერატორი და სად იმალება სირთულე.
რატომ ხუთი სერვისი. მონოლითი უფრო მარტივია, მაგრამ ცუდია ნაწილობრივ ჩავარდნაზე. Worker კვდება → Collector აგრძელებს ისტორიის შეგროვებას, Admin Bot ცოცხალია, მდგომარეობა ჩანს Telegram-იდან. Moderator კვდება → ავტოპასუხი მუშაობს. Core API ცვივა → დანარჩენებზე გავლენა არ აქვს. თითო სერვისს თავისი systemd-unit, თავისი ლოგი, თავისი restart-policy აქვს.
Worker — ავტოპასუხის ტვინი. Telethon-სესია მომხმარებლის (არა ბოტის) სახელით უსმენს ყველა შემოსულ DM-ს. ყოველი შეტყობინებაზე იშვება შემოწმებების კასკადი: ავტოპასუხი გლობალურად ჩართულია? კონტაქტი Personal-შია ან აქვს წესი? რეჟიმი off არ არის? ყოველდღიური ლიმიტი არ ამოწურულა? წინა პასუხიდან გადავიდა მინიმალური ინტერვალი? თუ ყველაფერი დადებითია — გენერირდება პასუხი AI-ით (Claude → Grok → Local fallback), იგზავნება იმავე Telethon-სესიით. თუ AI ჩავარდა — იგზავნება template-ი.
Admin Bot — პულტი. aiogram-ბოტი, რომლითაც მფლობელი მართავს ყველაფერს: ჩართავს/გამორთავს ავტოპასუხს, ამატებს/აშორებს კონტაქტ-წესებს, ხედავს მიმოწერის ისტორიას, ცვლის პრომპტს, ლიმიტებს, რეჟიმს. Admin Bot-იდან შესაძლებელია worker-ის რესტარტი (systemctl restart worker) — SSH-ის გარეშე.
Moderator — თვითსწავლადი არხ-მოდერატორი. ეს ყველაზე საინტერესო ნაწილია. /scan ბრძანება — ბოტი Telethon-ით კითხულობს 500 ბოლო პოსტს არხიდან. AI (Claude) აანალიზებს და ქმნის summary-ს: რას ეხება არხი, რა ტონია, რა ეგუება და რა — არა. Summary ინახება ბაზაში. ახალი შეტყობინების ჩამოსვლისას discussion-ჯგუფში AI ხედავს summary-სა და შეტყობინებას → გამოაქვს კლასი: OK / SPAM / HATE / OFFTOPIC. SPAM / HATE / OFFTOPIC ავტომატურად იშლება. OK რჩება.
/scan-ის გარეშე მოდერატორი მუშაობს default-ულ "ზოგად მოდერაციაზე", მაგრამ /scan-ის შემდეგ ერგება კონკრეტულ არხს: fishing-არხზე საუბარი tax-სტრატეგიებზე — OFFTOPIC, ხოლო ინვესტიციების არხზე — OK.
ანტიფლუდი. ტრექინგი მეხსიერებაში, არა DB-ში (უფრო სწრაფი). თითო user_id → ბოლო timestamps-ის სია. თუ N წამში M-ზე მეტი შეტყობინებაა — mute K წუთით. ლიმიტები კონფიგურირდება Admin Bot-იდან.
ბაზა. PostgreSQL 14, ბაზა ai_tg_core, მომხმარებელი aiuser. შვიდი ცხრილი: peers (კონტაქტები in_personal დროშით), messages (ისტორია), auto_reply_rules (კონტაქტ-წესები), auto_reply_state (პასუხის მდგომარეობა), settings, reply_counts, chat_triggers (მოდერატორის triggers ჩატებზე).
ღია წყარო. რეპოზიტორი: https://github.com/georgegoldman48-svg/tg-auto-reply — საჯარო, სრული არქიტექტურა აღწერილია README.md-ში.