Adaugă comanda /scrape_zip în Telegram bot

Funcționalitate:
- /scrape_zip - Rulează scraper + trimite rezultatele ca ZIP
- Dezactivează notificările automate din scraper
- Bot trimite manual ZIP-ul după scraping

Logică:
- run_scraper() primește parametru send_as_zip
- Dacă send_as_zip=True:
  - Setează ENABLE_NOTIFICATIONS=false în env
  - După scraping, apelează send_zip_files()
- Rezultat: un singur ZIP în loc de fișiere individuale

Comenzi disponibile:
- /scrape - Fisiere individuale (comportament original)
- /scrape_zip - Un singur ZIP (nou)
- /zip - Trimite fișierele existente ca ZIP (fără scraping)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-06 21:22:48 +02:00
parent f088308323
commit 463b51da99

View File

@@ -57,6 +57,7 @@ class TelegramTriggerBot:
url = f"{self.base_url}/setMyCommands"
commands = [
{"command": "scrape", "description": "Rulează scraper-ul BTGO"},
{"command": "scrape_zip", "description": "Rulează scraper + trimite ZIP"},
{"command": "zip", "description": "Trimite ultimele fișiere ca ZIP"},
{"command": "status", "description": "Status sistem"},
{"command": "help", "description": "Ajutor comenzi"}
@@ -100,10 +101,11 @@ class TelegramTriggerBot:
return True
return user_id in self.allowed_users
def run_scraper(self, chat_id, reply_to_message_id=None):
def run_scraper(self, chat_id, reply_to_message_id=None, send_as_zip=False):
"""Execută scraper-ul"""
# Trimite mesaj inițial și salvează message_id pentru editare ulterioară
response = self.send_message(chat_id, "*BTGO Scraper pornit*\n\nAsteapta 2FA pe telefon.", reply_to_message_id)
zip_msg = " (arhiva ZIP)" if send_as_zip else ""
response = self.send_message(chat_id, f"*BTGO Scraper pornit{zip_msg}*\n\nAsteapta 2FA pe telefon.", reply_to_message_id)
message_id = None
try:
message_id = response.json()['result']['message_id']
@@ -113,12 +115,17 @@ class TelegramTriggerBot:
try:
# Rulează scraper-ul
logging.info("Pornire scraper...")
logging.info(f"Pornire scraper (send_as_zip={send_as_zip})...")
# Prepare environment with global playwright path + Telegram progress info
env = os.environ.copy()
env['PLAYWRIGHT_BROWSERS_PATH'] = 'C:\\playwright-browsers'
if message_id:
# Dacă send_as_zip, dezactivează notificările - bot-ul va trimite ZIP-ul manual
if send_as_zip:
env['ENABLE_NOTIFICATIONS'] = 'false'
logging.info("Notificări dezactivate - bot va trimite ZIP manual")
elif message_id:
env['TELEGRAM_CHAT_ID'] = str(chat_id)
env['TELEGRAM_MESSAGE_ID'] = str(message_id)
logging.info(f"Setting environment: TELEGRAM_CHAT_ID={chat_id}, TELEGRAM_MESSAGE_ID={message_id}")
@@ -135,9 +142,14 @@ class TelegramTriggerBot:
)
if result.returncode == 0:
# Succes - mesajul final va fi editat de notifications.py
logging.info("Scraper finalizat cu succes")
# Dacă send_as_zip, trimite ZIP manual
if send_as_zip:
logging.info("Trimitere rezultate ca ZIP...")
self.send_zip_files(chat_id, reply_to_message_id)
# Altfel, mesajul final va fi editat de notifications.py
else:
# Eroare
logging.error(f"Scraper eșuat cu cod {result.returncode}")
@@ -302,6 +314,7 @@ class TelegramTriggerBot:
welcome_msg += (
"Comenzi disponibile:\n"
"`/scrape` - Ruleaza scraper-ul\n"
"`/scrape_zip` - Ruleaza scraper + trimite ZIP\n"
"`/zip` - Trimite ultimele fisiere ca ZIP\n"
"`/status` - Status sistem\n"
"`/help` - Ajutor"
@@ -312,6 +325,10 @@ class TelegramTriggerBot:
logging.info(f"Comandă /scrape primită în {context}")
self.run_scraper(chat_id, message_id)
elif text == '/scrape_zip':
logging.info(f"Comandă /scrape_zip primită în {context}")
self.run_scraper(chat_id, message_id, send_as_zip=True)
elif text == '/zip':
logging.info(f"Comandă /zip primită în {context}")
self.send_zip_files(chat_id, message_id)
@@ -343,19 +360,23 @@ class TelegramTriggerBot:
help_msg += "IN GRUP: Toti membrii vad comenzile si rezultatele\n\n"
help_msg += (
"*COMENZI:*\n"
"`/scrape` - Ruleaza scraper-ul + trimite fisiere\n"
"`/zip` - Trimite ultimele fisiere ca arhiva ZIP\n"
"`/scrape` - Ruleaza scraper + trimite fisiere individuale\n"
"`/scrape_zip` - Ruleaza scraper + trimite arhiva ZIP\n"
"`/zip` - Trimite ultimele fisiere ca arhiva ZIP (fara scraping)\n"
"`/status` - Informatii sistem\n"
"`/help` - Acest mesaj\n\n"
"*GHID SCRAPER:*\n"
"1. Trimite `/scrape`\n"
"1. Trimite `/scrape` sau `/scrape_zip`\n"
"2. Asteapta notificarea de 2FA pe telefon\n"
"3. Aproba in aplicatia George\n"
"4. Primesti fisierele automat\n\n"
"*DIFERENTE:*\n"
"• `/scrape` - Fisiere individuale (CSV + JSON)\n"
"• `/scrape_zip` - Un singur ZIP cu toate fisierele\n"
"• `/zip` - Rapid, foloseste datele existente\n\n"
"*NOTE:*\n"
"- Scraper-ul ruleaza ~2-3 minute\n"
"- VM-ul trebuie sa aiba browser vizibil\n"
"- `/zip` trimite datele existente (fara scraping)"
"- VM-ul trebuie sa aiba browser vizibil"
)
self.send_message(chat_id, help_msg, message_id)