#!/usr/bin/env python3 import subprocess import sys import os import signal import time from datetime import datetime LOG_DIR = "/app/data/logs" os.makedirs(LOG_DIR, exist_ok=True) def get_timestamp(): return datetime.now().strftime("%Y-%m-%d %H:%M:%S") log_file = open(f"{LOG_DIR}/bots.log", "a") def log(msg): timestamp = get_timestamp() log_line = f"[{timestamp}] {msg}\n" log_file.write(log_line) log_file.flush() print(msg) print("๐Ÿค– Iniciando Bots de Traducciรณn...") print("=" * 40) processes = [] def start_process(cmd, name, delay_before=0): if delay_before > 0: log(f"โณ Esperando {delay_before}s antes de iniciar {name}...") time.sleep(delay_before) log(f"โœ… Iniciando {name}...") log_path = f"{LOG_DIR}/{name.lower().replace(' ', '_')}.log" with open(log_path, "a") as f: p = subprocess.Popen( cmd, stdout=f, stderr=subprocess.STDOUT, preexec_fn=os.setsid ) processes.append((p, name)) return p p1 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "botdiscord/bot.py"], "Discord Bot", delay_before=10) p2 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "bottelegram/telegram_bot.py"], "Telegram Bot", delay_before=5) p3 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "panel/main.py"], "Panel Web", delay_before=0) print("=" * 40) print("๐ŸŽ‰ Todos los servicios funcionando!") print(f" ๐Ÿ“ Panel: http://localhost:8000") print(f" ๐Ÿ“ Logs: {LOG_DIR}") print("=" * 40) print("\nCtrl+C para detener") def signal_handler(sig, frame): log("๐Ÿ›‘ Deteniendo...") for p, name in processes: try: os.killpg(os.getpgid(p.pid), signal.SIGTERM) log(f" โœ… {name} detenido") except: pass log_file.close() sys.exit(0) signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) while True: for p, name in processes: if p.poll() is not None: log(f"โš ๏ธ {name} se detuvo, reiniciando...") if name == "Discord Bot": p1 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "botdiscord/bot.py"], "Discord Bot", delay_before=10) elif name == "Telegram Bot": p2 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "bottelegram/telegram_bot.py"], "Telegram Bot", delay_before=5) elif name == "Panel Web": p3 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "panel/main.py"], "Panel Web", delay_before=0) time.sleep(5)