Files
btgo-playwright/TELEGRAM_BOT_SETUP.md
2025-11-06 20:55:35 +02:00

9.6 KiB

Telegram Trigger Bot - Setup Guide

Prezentare

Telegram Trigger Bot permite declanșarea BTGO Scraper-ului de la distanță prin comenzi Telegram. Perfect pentru VM Windows 11.

⚠️ IMPORTANT: VM-ul Windows 11 TREBUIE să aibă:

  • Remote Desktop session activă (sau user logat)
  • Browser vizibil (HEADLESS=false)
  • WAF-ul BT blochează browsere headless!

Cum Funcționează

Tu (Telegram) → Bot → Rulează scraper → Trimite CSV-uri înapoi

Setup Pas cu Pas

1. Configurare Bot Telegram

Dacă ai deja bot pentru notificări: Poți folosi același bot!

Dacă NU ai bot:

  1. Deschide Telegram și caută @BotFather
  2. Trimite /newbot
  3. Alege nume pentru bot (ex: "BTGO Scraper Bot")
  4. Copiază token-ul primit (ex: 123456789:ABCdefGHIjklMNOpqrs)

2. Obține User ID-ul Tău

Ai nevoie de User ID pentru securitate (doar tu poți rula scraper-ul).

Opțiunea A - Folosește bot existent:

python get_telegram_chat_id.py

Vei vedea: User ID: 123456789

Opțiunea B - Folosește @userinfobot:

  1. Caută @userinfobot în Telegram
  2. Trimite /start
  3. Copiază User ID-ul

3. Setup pentru Grup Telegram (RECOMANDAT)

Avantaj: Comenzi și rezultate în același grup - mai convenabil decât mesaje directe!

3.1. Adaugă Bot-ul în Grup

  1. Deschide grupul Telegram unde vrei să trimiți comenzi

  2. Adaugă bot-ul:

    • Click pe numele grupului → "Add Members"
    • Caută bot-ul tău (ex: "BTGO Scraper Bot")
    • Adaugă
  3. Configurare Privacy Mode (important!):

    Bot-ul trebuie să vadă comenzile din grup. Ai 2 opțiuni:

    Opțiunea A - Dezactivează Privacy Mode (RECOMANDAT):

    1. Deschide @BotFather în Telegram
    2. Trimite /mybots
    3. Selectează bot-ul tău
    4. Bot Settings → Group Privacy → Turn OFF
    

    Acum bot-ul vede toate mesajele care încep cu / (comenzi)

    Opțiunea B - Fă bot-ul Admin:

    1. În grup: Click nume grup → Administrators
    2. Add Administrator → Selectează bot-ul
    3. Permisiuni minime: nicio permisiune specială necesară
    

    Admin bots văd toate mesajele automat.

3.2. Obține Chat ID al Grupului

Metoda 1 - Cu scriptul helper:

python get_telegram_chat_id.py
  • Trimite /start în grup
  • Script-ul va afișa: Chat ID: -1001234567890 (NEGATIV pentru grupuri!)

Metoda 2 - Manual:

  1. Adaugă @RawDataBot în grupul tău temporar
  2. Bot-ul va afișa informații despre grup
  3. Copiază chat.id (va fi negativ, ex: -1001234567890)
  4. Șterge @RawDataBot din grup

4. Configurare .env

Editează .env și adaugă:

# Bot token (același ca pentru notificări sau nou)
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrs

# User IDs autorizați (separați prin virgulă)
# DOAR acești useri pot rula /scrape din grup
TELEGRAM_ALLOWED_USER_IDS=123456789,987654321

# Chat ID GRUP pentru notificări automate + răspunsuri comenzi
# IMPORTANT: Negativ pentru grupuri! (ex: -1001234567890)
TELEGRAM_CHAT_ID=-1001234567890

Securitate:

  • TELEGRAM_ALLOWED_USER_IDS = doar acești useri pot rula /scrape din grup
  • Lasă gol dacă vrei ca oricine din grup să poată rula (nesigur!)
  • Bot-ul verifică User ID-ul celui care trimite comanda, NU group ID-ul

4. Pornire Bot

Opțiunea 1 - Manual (Test):

deployment\windows\scripts\run_telegram_bot_manual.ps1

Opțiunea 2 - Windows Service (RECOMANDAT pentru VM):

# Deploy complet
deployment\windows\scripts\deploy.ps1

# SAU meniu interactiv
deployment\windows\scripts\menu.ps1

Opțiunea 3 - Manual Python:

.venv\Scripts\activate
python telegram_trigger_bot.py

Bot-ul va afișa:

Bot inițializat. Useri autorizați: [123456789]
Bot pornit. Așteaptă comenzi...

Utilizare

Comenzi Disponibile

În grupul Telegram (sau DM către bot):

/start          - Pornește bot-ul și vezi comenzile
/scrape         - ⭐ Rulează scraper-ul (2-3 minute)
/status         - Vezi status sistem (ultima rulare, fișiere)
/help           - Ajutor utilizare

Securitate: Doar userii din TELEGRAM_ALLOWED_USER_IDS pot rula comenzi!

Flow Tipic în Grup

  1. Scrii în grup: /scrape
  2. Bot răspunde: "🤖 BTGO Scraper pornit... Așteaptă 2FA!"
  3. Pe VM: Browser-ul se deschide, face login automat
  4. Pe telefon: Aprobă notificarea George 2FA
  5. Scraper trimite fișiere: Prin notificări automate (email + grup)
  6. Bot confirmă: " Finalizat! Fișierele au fost trimise automat."

Notă: Fișierele sunt trimise de scraper (ENABLE_NOTIFICATIONS=true), NU de bot. Bot-ul doar declanșează execuția și confirmă finalizarea.

Exemplu Output în Grup

Tu: /scrape

Bot: 🤖 BTGO Scraper pornit...
     Așteaptă 2FA pe telefon!

[După 2 minute - mesaje de la scraper prin notificări]

Bot: 📧 BTGO Scraper - Sold conturi actualizat

     📄 solduri_2025-11-06.csv
     📄 tranzactii_Colector_01.csv
     📄 tranzactii_Antreprenor_04.csv
     ... (toate fișierele)

Bot: ✅ Scraper finalizat cu succes!
     📧 Fișierele au fost trimise automat prin notificări.

Important: Mesajele cu fișiere vin din scraper (prin notifications.py), nu din bot! Bot-ul doar declanșează și confirmă.

Setup VM Windows 11

Cerințe Critice

⚠️ Browser TREBUIE să fie vizibil! WAF-ul BT blochează headless.

Metoda Recomandată - Windows Service

# Deploy ca serviciu Windows (auto-start, auto-restart)
deployment\windows\scripts\deploy.ps1

Avantaje:

  • Pornire automată cu Windows
  • Auto-restart la crash
  • Management prin Services.msc
  • Logging centralizat
  • Nu necesită RDP conectată

Management:

# Meniu interactiv
deployment\windows\scripts\menu.ps1

# SAU comenzi directe
deployment\windows\scripts\start_service.ps1
deployment\windows\scripts\stop_service.ps1
deployment\windows\scripts\restart_service.ps1
deployment\windows\scripts\status.ps1

Alternativă - Task Scheduler

Doar dacă nu vrei Windows Service:

  1. Deschide Task Scheduler
  2. Create Task
  3. General:
    • Name: "BTGO Telegram Bot"
    • Run only when user is logged on:
  4. Triggers:
    • At log on (Specific user)
  5. Actions:
    • Action: Start a program
    • Program: C:\path\to\btgo-playwright\deployment\windows\scripts\run_telegram_bot_manual.ps1
    • Start in: C:\path\to\btgo-playwright
  6. Conditions:
    • Dezactivează "Start task only if computer is on AC power"

Verificare Funcționare

# Pe VM, verifică că bot-ul rulează
tasklist | findstr python

# Ar trebui să vezi:
# python.exe    12345 Console    1    45,678 K

Troubleshooting

Bot nu răspunde la comenzi

Cauză: Token greșit sau bot nestartă.

Soluție:

# Verifică token-ul
python telegram_trigger_bot.py

# Ar trebui să vezi:
# Bot inițializat. Useri autorizați: [123456789]

" Acces interzis!"

Cauză: User ID-ul tău nu e în TELEGRAM_ALLOWED_USER_IDS.

Soluție:

# Verifică User ID-ul tău
python get_telegram_chat_id.py

# Adaugă-l în .env
TELEGRAM_ALLOWED_USER_IDS=123456789

"Access Denied" la scraping

Cauză: Browser-ul rulează în headless mode sau VM nu are GUI activă.

Soluție:

  • Conectează-te prin RDP și LASĂ sesiunea deschisă
  • Verifică .env: HEADLESS=false
  • Asigură-te că desktop-ul Windows este vizibil

Scraper timeout (> 10 minute)

Cauză: Probabil blocat la 2FA sau browser nu răspunde.

Soluție:

  • Verifică logs pe VM: logs\scraper_*.log
  • Mărește timeout în bot: timeout=900 (15 min)
  • Asigură-te că aprobați 2FA în < 2 minute

Bot se oprește singur

Cauză: Sesiune RDP deconectată sau VM suspended.

Soluție:

  • Folosește Task Scheduler pentru restart automat
  • Configurează VM să nu intre în sleep/hibernate
  • Verifică că desktop-ul rămâne activ

Securitate

⚠️ ATENȚIE:

  • Bot-ul are acces la credentials din .env
  • TELEGRAM_ALLOWED_USER_IDS TREBUIE configurat!
  • Nu partaja token-ul botului
  • VM-ul trebuie securizat (firewall, VPN)

Best Practices:

# ✅ Bun - doar tu și admin
TELEGRAM_ALLOWED_USER_IDS=123456789,987654321

# ❌ Rău - oricine cu acces la bot
TELEGRAM_ALLOWED_USER_IDS=

# ✅ Bun - notificări separate de trigger
TELEGRAM_BOT_TOKEN=bot_trigger_token
TELEGRAM_CHAT_ID=group_chat_id

Logs și Monitoring

Logs bot:

[2025-11-06 17:30:00] [INFO] Bot inițializat. Useri autorizați: [123456789]
[2025-11-06 17:30:05] [INFO] Mesaj de la username (ID: 123456789): /scrape
[2025-11-06 17:30:05] [INFO] Comandă /scrape primită
[2025-11-06 17:30:05] [INFO] Pornire scraper...
[2025-11-06 17:32:45] [INFO] Scraper finalizat cu succes
[2025-11-06 17:32:50] [INFO] Trimit: solduri_2025-11-06.csv

Logs scraper:

logs\scraper_2025-11-06.log

Alternative Trigger Methods

1. HTTP API (simplă)

from flask import Flask, request
app = Flask(__name__)

@app.route('/scrape', methods=['POST'])
def trigger_scrape():
    # Verifică token secret
    subprocess.run(['python', 'btgo_scraper.py'])

2. Cron Job (periodicitate fixă)

Task Scheduler → Daily la 9:00 AM

3. File Watcher

# Detectează fișier "trigger.txt"
# Rulează scraper automat

Performance

Timpi tipici:

  • Bot startup: < 5 secunde
  • Scraper execution: 2-3 minute
  • File upload: 5-10 secunde
  • Total: ~3-4 minute de la /scrape la fișiere primite

Resource usage (VM):

  • RAM: 500MB (bot) + 800MB (browser)
  • CPU: 5-10% idle, 30-40% during scrape
  • Network: ~5MB download (CSV-uri)