Files
2025-11-06 20:55:35 +02:00

7.6 KiB

BTGO Telegram Bot - Windows Service Deployment

Scripturi pentru instalarea și gestionarea bot-ului Telegram ca serviciu Windows pe VM.

📋 Cerințe Preliminare

  • Windows Server 2016+ sau Windows 10/11
  • Python 3.11+ instalat și adăugat în PATH
  • Privilegii de Administrator
  • NSSM (Non-Sucking Service Manager) - se descarcă automat
  • Git (opțional, pentru pull updates)

🚀 Deployment Complet (Recomandat)

# Right-click pe script → "Run with PowerShell" (ca Administrator)
deployment\windows\scripts\deploy.ps1

# SAU din PowerShell Administrator:
cd deployment\windows\scripts
.\deploy.ps1

Acest script va:

  1. Verifica Python și dependențe
  2. Copia și configura .env (dacă nu există)
  3. Instala dependențele Python (requirements.txt)
  4. Instala browsere Playwright
  5. Instala și porni serviciul Windows
  6. Verifica statusul serviciului

⚠️ Înainte de Prima Rulare

Configurați .env cu datele tale:

# Telegram Bot
TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
TELEGRAM_ALLOWED_USER_IDS=123456789,987654321  # User IDs autorizați
TELEGRAM_CHAT_ID=123456789  # Optional: pentru notificări

# BTGO Credentials
LOGIN_ID=your_btgo_login
PAROLA=your_btgo_password

# Scraper Settings
HEADLESS=false  # IMPORTANT: trebuie false pentru VM Windows (WAF bypass)
TIMEOUT_2FA_SECONDS=300

Cum obții variabilele Telegram:

  1. Bot Token: Vorbește cu @BotFather și creează un bot
  2. User IDs: Rulează python get_telegram_chat_id.py după ce configurezi token-ul

📦 Scripturi Disponibile

Toate scripturile sunt PowerShell (.ps1) pentru Windows 10/11.

menu.ps1 - Meniu Interactiv

Interfață user-friendly pentru toate operațiunile.

.\menu.ps1

deploy.ps1 - Deployment Complet

Instalează tot ce e necesar și pornește serviciul.

.\deploy.ps1

install_service.ps1 - Doar Instalare Serviciu

Instalează serviciul Windows (după ce ai configurat manual tot restul).

.\install_service.ps1

Ce face:

  • Descarcă NSSM dacă nu există
  • Creează serviciul Windows BTGOTelegramBot
  • Configurează logging automat în logs/
  • Configurează auto-restart la crash
  • Pornește serviciul

uninstall_service.ps1 - Dezinstalare Serviciu

Oprește și elimină serviciul din sistem.

.\uninstall_service.ps1

restart_service.ps1 - Restart Rapid

Restart rapid al serviciului (pentru aplicarea unor modificări).

.\restart_service.ps1

status.ps1 - Status Serviciu

Afișează status detaliat al serviciului și ultimele logs.

.\status.ps1

view_logs.ps1 - Viewer Logs Interactiv

Meniu interactiv pentru vizualizarea logs-urilor în timp real.

.\view_logs.ps1

Opțiuni:

  1. View stdout (output normal)
  2. View stderr (erori)
  3. Tail stdout (timp real)
  4. Tail stderr (timp real)
  5. Deschide Explorer în director logs
  6. Șterge toate logurile

🔧 Gestionare Serviciu

Comenzi Windows Standard

# Status serviciu
sc query BTGOTelegramBot

# Oprește serviciu
net stop BTGOTelegramBot

# Pornește serviciu
net start BTGOTelegramBot

# Restart serviciu
net stop BTGOTelegramBot && net start BTGOTelegramBot

# Configurație serviciu
sc qc BTGOTelegramBot

# Șterge serviciu (fără script)
sc delete BTGOTelegramBot

Logs

Logs-urile se salvează automat în logs/:

  • telegram_bot_stdout.log - Output normal (comenzi, mesaje)
  • telegram_bot_stderr.log - Erori și avertizări

View logs în PowerShell (timp real):

Get-Content logs\telegram_bot_stdout.log -Wait -Tail 20

Rotație logs:

  • Max 10 MB per fișier
  • Rotație automată când se atinge limita

🔄 Update și Redeploy

Update Manual (cu Git)

# Pe VM Windows
cd E:\proiecte\btgo-playwright

# Pull ultimele modificări
git pull origin main

# Redeploy serviciu
deployment\windows\scripts\restart_service.bat

Redeploy Complet (Reinstalare)

Dacă ai modificat dependențe sau structura proiectului:

# Dezinstalează
deployment\windows\scripts\uninstall_service.bat

# Reinstalează tot
deployment\windows\scripts\deploy.bat

🐛 Troubleshooting

Serviciul nu pornește

Verifică logs:

deployment\windows\scripts\view_logs.bat

Probleme comune:

  1. Python nu este în PATH

    • Reinstalează Python cu "Add to PATH" bifat
    • Sau setează manual PATH în Environment Variables
  2. .env lipsă sau invalid

    • Verifică că .env există în root-ul proiectului
    • Verifică că TELEGRAM_BOT_TOKEN este setat corect
  3. Playwright browser lipsă

    python -m playwright install chromium
    
  4. Port ocupat / Serviciu duplicat

    uninstall_service.bat
    # Așteaptă 10 secunde
    install_service.bat
    

Bot nu răspunde în Telegram

  1. Verifică serviciul rulează:

    sc query BTGOTelegramBot
    
  2. Verifică logs pentru erori:

    type logs\telegram_bot_stderr.log
    
  3. Testează bot-ul manual:

    python telegram_trigger_bot.py
    # Trimite /start în Telegram
    # Ctrl+C pentru a opri
    
  4. Verifică firewall:

    • Bot-ul trebuie să poată accesa api.telegram.org (HTTPS/443)

Scraper-ul nu funcționează (Access Denied)

CRITICAL: Docker/headless mode NU funcționează din cauza Akamai WAF.

Soluție:

  • Setează HEADLESS=false în .env
  • Bot-ul TREBUIE să ruleze pe Windows cu browser vizibil
  • Asigură-te că VM-ul are desktop environment activ

Performance Issues

Bot lent / Scraper timeout:

  • Crește TIMEOUT_2FA_SECONDS în .env
  • Verifică resursele VM-ului (CPU, RAM)
  • Verifică conexiunea la internet a VM-ului

📊 Arhitectura Serviciului

BTGOTelegramBot (Windows Service)
├── Managed by: NSSM
├── Auto-start: Yes (Delayed)
├── Restart on crash: Yes (5s delay)
├── Working dir: E:\proiecte\btgo-playwright
├── Python script: telegram_trigger_bot.py
├── Logs: logs\telegram_bot_*.log
└── Config: .env

Flow:

User /scrape → Telegram API → Bot Service → btgo_scraper.py
                                             ├── Playwright login
                                             ├── 2FA wait
                                             ├── Extract accounts
                                             ├── Download CSVs
                                             └── Send files via notifiers

🔐 Securitate

Best Practices

  1. Restricționează accesul bot-ului:

    • Setează TELEGRAM_ALLOWED_USER_IDS în .env
    • Nu lăsa lista goală (permite oricui)
  2. Protejează .env:

    • Nu comite .env în Git (este în .gitignore)
    • Setează permisiuni restrictive pe VM
  3. Monitorizează logs-urile:

    • Verifică periodic stderr.log pentru erori
    • Setup alerting pentru crash-uri
  4. Rotație credentials:

    • Regenerează TELEGRAM_BOT_TOKEN periodic
    • Update LOGIN_ID/PAROLA la schimbări

📞 Support

Probleme sau întrebări?

  1. Verifică logs: deployment\windows\scripts\view_logs.bat
  2. Verifică status: deployment\windows\scripts\status.bat
  3. Consultă documentația principală: TELEGRAM_BOT_SETUP.md
  4. Check issue tracker: GitHub Issues

📄 Licență

Acest tool este pentru uz personal și educațional. Asigură-te că respecti termenii și condițiile băncii tale.