Adauga logica de autorizare flexibila: - Useri in TELEGRAM_ALLOWED_USER_IDS (whitelist explicit) - SAU membrii grupului TELEGRAM_CHAT_ID (verificare getChatMember API) - Membrii grupului pot folosi bot-ul atat in grup cat si in DM individual Modificari: - telegram_trigger_bot.py: metoda is_member_of_group() cu verificare API - telegram_trigger_bot.py: is_user_allowed() cu logica OR pentru whitelist + grup - .env.example: comentarii actualizate pentru noua logica - TELEGRAM_BOT_SETUP.md: documentatie completa pentru autorizare Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
10 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:
- Deschide Telegram și caută @BotFather
- Trimite
/newbot - Alege nume pentru bot (ex: "BTGO Scraper Bot")
- Copiază token-ul primit (ex:
123456789:ABCdefGHIjklMNOpqrs)
2. Obține User ID-ul Tău (OPȚIONAL)
User ID e necesar doar dacă vrei să autorizezi utilizatori care NU sunt în grup.
Dacă folosești grup: Toți membrii grupului pot folosi bot-ul automat (în grup sau DM)!
Pentru whitelist suplimentar:
Opțiunea A - Folosește bot existent:
python get_telegram_chat_id.py
Vei vedea: User ID: 123456789
Opțiunea B - Folosește @userinfobot:
- Caută
@userinfobotîn Telegram - Trimite
/start - 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
-
Deschide grupul Telegram unde vrei să trimiți comenzi
-
Adaugă bot-ul:
- Click pe numele grupului → "Add Members"
- Caută bot-ul tău (ex: "BTGO Scraper Bot")
- Adaugă
-
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 OFFAcum 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:
- Adaugă
@RawDataBotîn grupul tău temporar - Bot-ul va afișa informații despre grup
- Copiază
chat.id(va fi negativ, ex:-1001234567890) - Șterge
@RawDataBotdin grup
4. Configurare .env
Editează .env și adaugă:
# Bot token (același ca pentru notificări sau nou)
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrs
# Chat ID GRUP pentru notificări automate + autorizare membri
# IMPORTANT: Negativ pentru grupuri! (ex: -1001234567890)
# TOȚI membrii acestui grup pot folosi bot-ul (în grup sau DM)
TELEGRAM_CHAT_ID=-1001234567890
# User IDs autorizați individual (OPȚIONAL - separați prin virgulă)
# Pentru useri care NU sunt în grup dar vrei să le dai acces
TELEGRAM_ALLOWED_USER_IDS=123456789,987654321
Autorizare:
- Orice membru al grupului
TELEGRAM_CHAT_IDpoate folosi bot-ul (în grup SAU în DM) - SAU useri din
TELEGRAM_ALLOWED_USER_IDS(chiar dacă nu sunt în grup) - Dacă ambele sunt goale = bot deschis pentru oricine (NESIGUR!)
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
Autorizare: Membri ai grupului TELEGRAM_CHAT_ID SAU useri din TELEGRAM_ALLOWED_USER_IDS pot rula comenzi!
Flow Tipic în Grup
- Scrii în grup:
/scrape - Bot răspunde: "🤖 BTGO Scraper pornit... Așteaptă 2FA!"
- Pe VM: Browser-ul se deschide, face login automat
- Pe telefon: Aprobă notificarea George 2FA
- Scraper trimite fișiere: Prin notificări automate (email + grup)
- 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:
- Deschide Task Scheduler
- Create Task
- General:
- Name: "BTGO Telegram Bot"
- Run only when user is logged on: ✅
- Triggers:
- At log on (Specific user)
- 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
- 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_CHAT_IDsauTELEGRAM_ALLOWED_USER_IDSTREBUIE configurat pentru securitate!- Nu partaja token-ul botului
- VM-ul trebuie securizat (firewall, VPN)
Best Practices:
# ✅ Bun - grup autorizat + whitelist individual
TELEGRAM_CHAT_ID=-1001234567890
TELEGRAM_ALLOWED_USER_IDS=123456789,987654321
# ❌ Rău - ambele goale (oricine are acces)
TELEGRAM_CHAT_ID=
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
/scrapela fișiere primite
Resource usage (VM):
- RAM: 500MB (bot) + 800MB (browser)
- CPU: 5-10% idle, 30-40% during scrape
- Network: ~5MB download (CSV-uri)