- Agregado logging estructurado en todos los módulos - Implementados try-catches en todos los métodos críticos - Errores ahora se envían automáticamente por Telegram - Mejorado manejo de excepciones en requests HTTP - Agregado try-catch global en main.py para errores no manejados - Logging detallado en timenet_manager, telegram_bot, google_calendar y config_parser
91 lines
2.9 KiB
Python
Executable File
91 lines
2.9 KiB
Python
Executable File
#!./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)
|
|
|
|
|