#!./venv/bin/python3 # encoding: utf-8 # # Automarcaje para timenet.gpisoftware.com # usage: main.py -u USER -p PIN -t TYPE [-f] [-h] # # Argumentos obligatorios: # -u USER, --user USER Usuario # -p PIN, --pin PIN Contraseña # -t TYPE, --type TYPE Tipo marcado. 0 = Entrada, 1 = Salida (Si no se utiliza -bt) # # # Creado: Omar Sánchez 04-05-2019 # Importamos App Principal import sys import traceback import logging import asyncio from app import timenet_manager, telegram_bot # Configurar logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) logger = logging.getLogger(__name__) if __name__ == '__main__': telegram = None try: logger.info("=" * 50) logger.info("Iniciando autoficher...") logger.info("=" * 50) af = timenet_manager.timenetManager() telegram = af.telegram af.sendUpdate() logger.info("=" * 50) logger.info("Autoficher completado exitosamente") logger.info("=" * 50) except KeyboardInterrupt: logger.info("Interrupción por el usuario (Ctrl+C)") sys.exit(0) except SystemExit as e: logger.info(f"Salida del sistema con código: {e.code}") sys.exit(e.code if e.code else 0) except Exception as e: error_msg = f"Error crítico no manejado: {str(e)}" error_traceback = traceback.format_exc() logger.error("=" * 50) logger.error("ERROR CRÍTICO NO MANEJADO") logger.error("=" * 50) logger.error(error_msg) logger.error(error_traceback) logger.error("=" * 50) # Intentar enviar error por Telegram try: if telegram: full_error = f"🟥🕐 ERROR CRÍTICO EN AUTOFICHER\n\n{error_msg}\n\n```\n{error_traceback}\n```" asyncio.run(telegram.sendMessage(full_error)) logger.info("Error enviado por Telegram") else: # Intentar crear un bot temporal para enviar el error try: temp_telegram = telegram_bot.telegramBot() full_error = f"🟥🕐 ERROR CRÍTICO EN AUTOFICHER\n\n{error_msg}\n\n```\n{error_traceback}\n```" asyncio.run(temp_telegram.sendMessage(full_error)) logger.info("Error enviado por Telegram (bot temporal)") except: logger.error("No se pudo enviar el error por Telegram") except Exception as telegram_error: logger.error(f"Error al intentar enviar mensaje por Telegram: {str(telegram_error)}") # Imprimir error en consola también print(f"\n{'=' * 50}") print("ERROR CRÍTICO") print(f"{'=' * 50}") print(error_msg) print(f"\nTraceback completo:") print(error_traceback) print(f"{'=' * 50}\n") sys.exit(1)