Implementează logica de restart inline în loc să apeleze restart_service.ps1 pentru a evita 2 confirmări consecutive (Read-Host). Îmbunătățiri: - Restart serviciu inline (stop + start direct în funcție) - Un singur prompt la final pentru revenire în meniu - Mesaje de status detaliate pentru fiecare pas - Gestionare erori pentru stop și start serviciu 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
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:
- ✅ Verifica Python și dependențe
- ✅ Copia și configura
.env(dacă nu există) - ✅ Instala dependențele Python (
requirements.txt) - ✅ Instala browsere Playwright
- ✅ Instala și porni serviciul Windows
- ✅ 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:
- Bot Token: Vorbește cu @BotFather și creează un bot
- User IDs: Rulează
python get_telegram_chat_id.pydupă 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:
- View stdout (output normal)
- View stderr (erori)
- Tail stdout (timp real)
- Tail stderr (timp real)
- Deschide Explorer în director logs
- Ș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:
-
Python nu este în PATH
- Reinstalează Python cu "Add to PATH" bifat
- Sau setează manual PATH în Environment Variables
-
.envlipsă sau invalid- Verifică că
.envexistă în root-ul proiectului - Verifică că
TELEGRAM_BOT_TOKENeste setat corect
- Verifică că
-
Playwright browser lipsă
python -m playwright install chromium -
Port ocupat / Serviciu duplicat
uninstall_service.bat # Așteaptă 10 secunde install_service.bat
Bot nu răspunde în Telegram
-
Verifică serviciul rulează:
sc query BTGOTelegramBot -
Verifică logs pentru erori:
type logs\telegram_bot_stderr.log -
Testează bot-ul manual:
python telegram_trigger_bot.py # Trimite /start în Telegram # Ctrl+C pentru a opri -
Verifică firewall:
- Bot-ul trebuie să poată accesa
api.telegram.org(HTTPS/443)
- Bot-ul trebuie să poată accesa
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
-
Restricționează accesul bot-ului:
- Setează
TELEGRAM_ALLOWED_USER_IDSîn.env - Nu lăsa lista goală (permite oricui)
- Setează
-
Protejează
.env:- Nu comite
.envîn Git (este în.gitignore) - Setează permisiuni restrictive pe VM
- Nu comite
-
Monitorizează logs-urile:
- Verifică periodic
stderr.logpentru erori - Setup alerting pentru crash-uri
- Verifică periodic
-
Rotație credentials:
- Regenerează
TELEGRAM_BOT_TOKENperiodic - Update
LOGIN_ID/PAROLAla schimbări
- Regenerează
📞 Support
Probleme sau întrebări?
- Verifică logs:
deployment\windows\scripts\view_logs.bat - Verifică status:
deployment\windows\scripts\status.bat - Consultă documentația principală:
TELEGRAM_BOT_SETUP.md - 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.