# 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) ```powershell # 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: ```bash # 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](https://t.me/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. ```powershell .\menu.ps1 ``` --- ### `deploy.ps1` - Deployment Complet Instalează tot ce e necesar și pornește serviciul. ```powershell .\deploy.ps1 ``` --- ### `install_service.ps1` - Doar Instalare Serviciu Instalează serviciul Windows (după ce ai configurat manual tot restul). ```powershell .\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. ```powershell .\uninstall_service.ps1 ``` --- ### `restart_service.ps1` - Restart Rapid Restart rapid al serviciului (pentru aplicarea unor modificări). ```powershell .\restart_service.ps1 ``` --- ### `status.ps1` - Status Serviciu Afișează status detaliat al serviciului și ultimele logs. ```powershell .\status.ps1 ``` --- ### `view_logs.ps1` - Viewer Logs Interactiv Meniu interactiv pentru vizualizarea logs-urilor în timp real. ```powershell .\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 ```batch # 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):** ```powershell 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) ```batch # 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: ```batch # Dezinstalează deployment\windows\scripts\uninstall_service.bat # Reinstalează tot deployment\windows\scripts\deploy.bat ``` --- ## 🐛 Troubleshooting ### Serviciul nu pornește **Verifică logs:** ```batch 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ă** ```batch python -m playwright install chromium ``` 4. **Port ocupat / Serviciu duplicat** ```batch uninstall_service.bat # Așteaptă 10 secunde install_service.bat ``` ### Bot nu răspunde în Telegram 1. **Verifică serviciul rulează:** ```batch sc query BTGOTelegramBot ``` 2. **Verifică logs pentru erori:** ```batch type logs\telegram_bot_stderr.log ``` 3. **Testează bot-ul manual:** ```batch 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.