Files

49 lines
1.8 KiB
Python

"""
Manejador para recibir y procesar mensajes de usuario (texto, audio, imágenes).
"""
from telegram import Update
from telegram.ext import ContextTypes
import logging
from app.schema.base import RawInput
# Esta es una integración simplificada. En una aplicación real, probablemente
# tendrías una cola o una forma más robusta de activar el pipeline de procesamiento.
from app.router import process_expense_input
from app.persistence.db import get_db
logger = logging.getLogger(__name__)
async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
"""
Maneja mensajes regulares y activa el pipeline de procesamiento de gastos.
"""
user_id = str(update.effective_user.id)
# Este es un ejemplo muy simplificado.
# Una implementación real necesita manejar archivos, voz, etc.
if update.message.text:
raw_input = RawInput(
user_id=user_id,
type="text",
data=update.message.text
)
try:
# Obtener una sesión de BD
db_session = next(get_db())
# Ejecutar el pipeline de procesamiento
result = process_expense_input(db=db_session, raw_input=raw_input)
if result:
await update.message.reply_text(f"¡Gasto guardado con éxito! ID: {result.id}")
else:
await update.message.reply_text("No pude procesar eso completamente. Podría necesitar revisión manual.")
except Exception as e:
logger.error(f"Error al manejar el mensaje: {e}", exc_info=True)
await update.message.reply_text("Lo siento, ocurrió un error al procesar tu solicitud.")
else:
await update.message.reply_text("Actualmente solo puedo procesar mensajes de texto.")