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)