Repository navigation
refactor: migrar comandos /ping, /github, /ayuda a GeneralCog - #8
Conversation
- Add bot/cogs/general.py with GeneralCog and the three slash commands - Add setup entry point to EventsCog for extension loading - Load cogs via bot.load_extension in setup_hook - Sync command tree in setup_hook and remove on_ready sync logic - Build /ayuda dynamically from the registered command tree
🔍 Revisión profunda y plan de mitigación — PR #8Revisión detallada del PR para dejarlo estable y escalable antes de sacarlo de Draft. Se clasifica por severidad. 🔴 Bugs que rompen el arranque1. import os
os.makedirs("logs", exist_ok=True) # antes de logging.basicConfig2. def validate_settings():
if not discord_token:
raise ValueError("Falta DISCORD_TOKEN en el archivo .env")
if not discord_guild_id:
raise ValueError("Falta DISCORD_GUILD_ID en el archivo .env")
if not github_url:
raise ValueError("Falta GITHUB_URL en el archivo .env")
if not str(discord_guild_id).isdigit():
raise ValueError("DISCORD_GUILD_ID debe ser el ID numérico del servidor")3. @bot.event
async def setup_hook() -> None:
for ext in ("bot.cogs.general", "bot.cogs.events"):
try:
await bot.load_extension(ext)
except commands.ExtensionError as exc:
logging.error("No se pudo cargar %s: %s", ext, exc)
raise
try:
await bot.tree.sync(guild=guild)
except discord.HTTPException as exc:
logging.error("No se pudo sincronizar comandos: %s", exc)🟠 Robustez y mantenibilidad4. Sin manejador global de errores de comandos @bot.tree.error
async def on_app_error(interaction: discord.Interaction, error: Exception) -> None:
if interaction.response.is_done():
await interaction.followup.send("❌ Ocurrió un error al ejecutar el comando.")
else:
await interaction.response.send_message("❌ Ocurrió un error al ejecutar el comando.")
logging.error("Error en %s: %s", interaction.command, error)5. # settings.py
def get_discord_guild_id() -> int:
return int(discord_guild_id)6. Evaluación eager de def get_guild() -> discord.Object:
return discord.Object(id=int(settings.discord_guild_id))7. Scoping a un único guild no escala a comando global / multi-guild 8. comandos = [*self.bot.tree.get_commands(guild=GUILD), *self.bot.tree.get_commands()]Documentar además que los emojis de 9. 10. logger = logging.getLogger(__name__)
async def setup(bot: commands.Bot) -> None:
await bot.add_cog(EventsCog(bot))
logger.info("EventsCog cargado correctamente.")11. 12. 🟡 Estilo y consistencia (PEP8)
🧪 Testing y CI
✅ Lo que está bien del PR
🎯 Prioridad sugerida para mitigar
Quedo disponible para implementar los fix cuando me lo indiques. |
There was a problem hiding this comment.
Cambios innecesarios, solo añadio lineas.
|
|
||
|
|
||
| class GeneralCog(commands.Cog): | ||
| """Comandos generales de ATLAS.""" |
There was a problem hiding this comment.
Cadena de comillas triples (triple-quoted string) innecesario, ojo que son detalles no es necesario cambiarlo.
There was a problem hiding this comment.
Ojo con estos cambios innecesarios, el modificar archivos y dejarlos vacios es ruido visual para el mantenedor (Mas archivos para analizar y menos enfoque en los necesarios)
Axel-DaMage
left a comment
There was a problem hiding this comment.
Review hecha.
- Axel-DaMage
…ecrets/quality/dependencias)
Closes #3
Resumen
Migra los comandos slash /ping, /github\ y /ayuda\ desde \main.py\ hacia un cog dedicado \�ot/cogs/general.py.
Cambios
Mejoras de diseño
Validación