Open diegoabeltran16 opened 1 week ago
Esstructura básica del proyecto
'''
Este documento subraya la estructura para el proyecto de Passive-Expenses-Bot.
docs/:
api_reference.md
, setup.md
, usage.md
project_details/:
src/:
tests/:
unidad_practica/:
.editorconfig:
.env:
.flake8:
flake8
..gitignore:
config.yaml
) y los archivos innecesarios no sean rastreados en el control de versiones..gitlab-ci.yml:
environment.yml:
LICENSE:
README.md:
requirements.txt:
Shell scripts:
commands/:
log_expense.py
delete_expense.py
list_expenses.py
generate_report.py
config/:
config.yaml
(excluido del git en .gitignore
).utils/:
ai.py
: Marcador de posición para la funcionalidad basada en IA.logging_config.py
: Configuración para el registro.nlu.py
: Marcador de posición para la comprensión o el análisis sintáctico del lenguaje natural.scheduler.py
: Gestiona tareas periódicas o programadas.validation.py
: Validación de entradas y lógica general de validación.bot.py:
database.py:
test_commands/:
test_log_expense.py
test_delete_expense.py
test_list_expenses.py
test_generate_report.py
test_utils/:
test_ai.py
test_logging.py
test_nlu.py
test_scheduler.py
test_validation.py
test_bot.py:
test_database.py:
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.
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.
Comando Ping:
!ping
) para comprobar si el bot responde.!ping
, el bot responde con Pong!
, confirmando la actividad del bot.bot.py
.Comando de registro de gastos (!log_expense [amount] [description]
):
importe
: Un valor flotante que representa el valor monetario del gasto.Confg
(LogExpense
) ubicada en commands/log_expense.py
.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
.
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:
Esperando bot.add_cog()
:
bot.add_cog()
necesitaba ser esperado, ya que es una operación asíncrona. setup
tanto en log_expense.py
como en delete_expense.py
fue convertida a asíncrona para asegurar la correcta carga de comandos.Activación de intenciones privilegiadas:
bot.py
habilitando tanto intents.message_content
como intents.messages
.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.
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
commands/
. tests/
para asegurar que la lógica de gestión de comandos funciona como se espera.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.