342 lines
7.6 KiB
Markdown
342 lines
7.6 KiB
Markdown
# 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.
|