mirror of
https://github.com/marcogll/telegram_expenses_controller.git
synced 2026-01-13 13:25:15 +00:00
49 lines
1.8 KiB
Python
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.")
|