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

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.