From 463b51da99fe7b2a6b1931e7b8b1abd5ad0adc2f Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Thu, 6 Nov 2025 21:22:48 +0200 Subject: [PATCH] =?UTF-8?q?Adaug=C4=83=20comanda=20/scrape=5Fzip=20=C3=AEn?= =?UTF-8?q?=20Telegram=20bot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- telegram_trigger_bot.py | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/telegram_trigger_bot.py b/telegram_trigger_bot.py index d8b8faf..8647521 100644 --- a/telegram_trigger_bot.py +++ b/telegram_trigger_bot.py @@ -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)