← Toate proiectele
05 · AUTOPOST-BOT

AUTOPOST-BOT — Telegram RSS + abonament plătit

Bot Telegram de producţie cu sistem propriu de plăţi şi autopostare RSS programată. Unul din 15+ boţi livraţi în acea perioadă.

Perioadă
Aug 2023 — mar 2024 · 8 luni
Rol
Node.js Developer · Archi-Pro
Stack
Node.js 20MongoDBTelegrafTelegram Bot APITelegram PaymentsPM2parsere XLSX / JSON / CSV
github.com/dragekorn/AUTOPOST-BOT

Platformă de monetizare pentru canale Telegram: companiile plătesc direct în bot (100 RUB = 100 token-uri pentru 30 de zile) ca să poată comenta în grupurile unde este prezent botul. În paralel — autopostare din surse RSS cu filtre şi formatare configurabile.

Context

Clientul avea nevoie de un sistem self-serve în care companiile plătesc pentru a comenta în canalele Telegram — fără servicii externe, fără account manager uman. Plăţile, contabilitatea token-urilor, controlul abonamentelor şi moderarea trăiesc toate în interiorul botului.

Ce am livrat

  • Am proiectat şi construit un sistem de plăţi peste Telegram Payments: 100 de token-uri pentru 30 de zile la 100 RUB, debitare automată la fiecare comentariu, revocare automată la expirare.
  • Am construit un parser RSS cu coadă şi programator: import feed-uri după URL, dedup, formatare automată pentru fiecare canal/grup ţintă.
  • Am scris sistemul de control al comentariilor: botul şterge instant postările utilizatorilor fără abonament activ, trimite un memento auto-distructibil, apoi bannează 24 de ore după 5 avertismente ignorate.
  • Am implementat un procesor de fişiere în fundal — directoarele XLSX, JSON şi CSV ale organizaţiilor sunt ingerate şi transformate în distribuiri.
  • Am expus o interfaţă de admin prin comenzi bot: căutare utilizatori, acordare manuală de token-uri, unban, hot-swap de template-uri de mesaje prin pm2 --watch.
  • Am rulat totul pe MongoDB + pm2, am mutat secretele în .env, am documentat procesul de clonare ca să poată porni instanţe noi.

Note tehnice

  • Starea abonamentului: hasPaid, tokens, paymentDate, subscriptionEndDate în MongoDB — câmpuri financiare reale, nu un singur flag boolean.
  • Worker-ii cu viaţă lungă şi pipeline-ul de fişiere trăiesc într-un proces separat ca să nu blocheze niciodată polling-ul botului.
  • Template-urile de mesaje se editează schimbând const messageTemplate în index.js — pm2 --watch preia modificarea fără restart.