diegoabeltran16 / Passive-Expenses-Bot

A tool for logging, viewing, and managing passive expenses | Una herramienta para registrar, ver y gestionar gastos pasivos
MIT License
0 stars 0 forks source link

Objetivos Generales Ciclo 1 #1

Open diegoabeltran16 opened 1 week ago

diegoabeltran16 commented 1 week ago
diegoabeltran16 commented 3 days ago

Esstructura básica del proyecto

'''

Passive-Expenses-Bot Estructura del proyecto Ciclo #1

Este documento subraya la estructura para el proyecto de Passive-Expenses-Bot.

Direcotrios y Documentos de Raiz

src/: Fuente del Codigo

tests/: Testing Framework


diegoabeltran16 commented 3 days ago

Implementacion de Gestión basico de comandos

Resumen

Este documento resume el desarrollo de la función Command Handling para el Passive-Expenses-Bot. El objetivo de esta función es proporcionar un manejo de comandos estructurado y modularizado utilizando el framework discord.ext.commands de Discord. La función incluye el manejo de las solicitudes de los usuarios para registrar y eliminar los gastos, así como un simple comando ping para probar la capacidad de respuesta del bot.

Proceso de desarrollo

Paso 1: Configuración inicial del Bot

El bot fue configurado usando la clase discord.ext.commands.Bot de Discord. El bot lee su configuración de un archivo YAML (config/config.yaml) donde se almacenan ajustes como el token del bot y el prefijo del comando. Se han habilitado intentos privilegiados para permitir al bot leer el contenido de los mensajes y procesar comandos.

Step 2: Implementacion de comandos basicos

  1. Comando Ping:

    • Se ha implementado un comando simple (!ping) para comprobar si el bot responde.
    • Cuando un usuario envía !ping, el bot responde con Pong!, confirmando la actividad del bot.
    • Implementado en bot.py.
  2. Comando de registro de gastos (!log_expense [amount] [description]):

    • Propósito: Permitir a los usuarios registrar gastos.
    • Parámetros:
      • importe: Un valor flotante que representa el valor monetario del gasto.
      • Descripción Una cadena que describe el gasto.
    • Respuesta: El bot responde con un mensaje de confirmación, por ejemplo, «Gasto registrado: 100 para comer en la cafetería».
    • El comando se implementó dentro de una clase Confg (LogExpense) ubicada en commands/log_expense.py.
  3. Comando Borrar Gasto (!delete_expense [expense_id]): - Propósito: Permitir a los usuarios borrar un gasto por ID. - Parámetros: - expense_id: Un número entero que representa el ID del gasto que se va a eliminar. - Respuesta: El bot responde con un mensaje de confirmación, por ejemplo, "Gasto con ID 1 eliminado". - El comando se implementó dentro de una clase Cog (DeleteExpense) ubicada en commands/delete_expense.py.

Paso 3: Depuración y Manejo Asíncrono

Durante el desarrollo, se encontraron problemas relacionados con la naturaleza asíncrona del método bot.add_cog() y la incapacidad del bot para leer el contenido del mensaje debido a la falta de intents privilegiados.

Estos problemas se resolvieron mediante:

  1. Esperando bot.add_cog():

    • El método bot.add_cog() necesitaba ser esperado, ya que es una operación asíncrona.
    • La función setup tanto en log_expense.py como en delete_expense.py fue convertida a asíncrona para asegurar la correcta carga de comandos.
  2. Activación de intenciones privilegiadas:

    • Se ha concedido al bot la Intención de contenido de mensaje en el Portal del Desarrollador de Discord para garantizar que pueda leer mensajes y procesar comandos.
    • Se han ajustado las intenciones en bot.py habilitando tanto intents.message_content como intents.messages.

Paso 4: Pruebas con éxito

Después de implementar estos cambios, el bot fue probado ejecutando los comandos !log_expense y !delete_expense en Discord. El bot respondió satisfactoriamente con las confirmaciones correctas, indicando que los comandos se estaban procesando como se esperaba.

Paso 5: Estructura del proyecto

La estructura general del proyecto incluye los siguientes directorios y archivos clave:

Passive-Expenses-Bot/
│
├── docs/
│   ├── api_reference.md
│   ├── setup.md
│   └── usage.md
│
├── src/
│   ├── commands/
│   │   ├── __init__.py
│   │   ├── log_expense.py
│   │   └── delete_expense.py
│   ├── bot.py
│   ├── config/
│   │   └── config.yaml
│   └── utils/
│       ├── ai.py
│       └── validation.py
│
├── tests/
│   ├── test_commands/
│   └── test_utils/
│
└── .gitignore

Conclusión

La función de gestión de comandos se ha implementado y probado con éxito. El bot ya puede procesar los comandos log_expense y delete_expense, lo que permite a los usuarios registrar y eliminar gastos de forma interactiva. Se habilitaron las intenciones privilegiadas para permitir al bot acceder al contenido de los mensajes, y todo el proceso de carga de comandos se hizo asíncrono para garantizar una ejecución fluida. El sistema de comandos del bot es modular y puede ampliarse fácilmente para incluir más comandos según sea necesario.