Skip to content

fix: validar que DISCORD_GUILD_ID sea numerico en validate_settings - #38

Draft
ranto-dev05 wants to merge 1 commit into
mainfrom
fix/validate-discord-guild-id
Draft

ranto-dev05 wants to merge 1 commit into
mainfrom
fix/validate-discord-guild-id

Conversation

@ranto-dev05

Copy link
Copy Markdown
Collaborator

Este PR de iteración rápida hace que validate_settings() en bot/config/settings.py valide que DISCORD_GUILD_ID sea numérico mediante isdigit() y lance un ValueError claro si no lo es, en lugar de dejar que int() en main.py falle con un error críptico cuando el valor contiene texto, espacios o una tipografía; como validate_settings() se ejecuta al inicio del arranque antes de construir el objeto guild, esta única validación cubre los criterios de aceptación sin necesidad de tocar main.py. Closes #7. Para verificarlo en menos de un minuto: ejecuta python main.py con DISCORD_GUILD_ID=abc en tu .env y confirma que el arranque falla con DISCORD_GUILD_ID debe ser un número entero (ID del servidor de Discord). en lugar de ValueError: invalid literal for int(), y que con un ID válido el bot sigue arrancando igual.

@ranto-dev05

Copy link
Copy Markdown
Collaborator Author

Resuelto en bot/config/settings.py: validate_settings() ahora comprueba not discord_guild_id.isdigit() inmediatamente después del chequeo de None y lanza ValueError("DISCORD_GUILD_ID debe ser un número entero (ID del servidor de Discord)."), lo que detecta texto, espacios y tipografías antes de que int() en main.py pueda fallar con el error críptico; como validate_settings() se ejecuta al inicio del arranque antes de construir el objeto guild, no fue necesario tocar main.py, y se comprobó que isdigit() acepta IDs numéricos válidos (p. ej. 18 dígitos) y rechaza abc o 123 456. Closes #7.

@ranto-dev05
ranto-dev05 marked this pull request as draft August 15, 2026 22:01
@ranto-dev05 ranto-dev05 added bug Something isn't working Priority: Low Baja prioridad - consideracion futura labels Aug 15, 2026

@Axel-DaMage Axel-DaMage left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aprobado. Cumple los acceptance criteria de #7:

  • isdigit() valida formato numérico en validate_settings(), no solo existencia.
  • Con DISCORD_GUILD_ID=abc el arranque falla con mensaje claro antes de llegar al int() críptico.
  • Con ID válido el arranque funciona igual.

Notas menores (no bloqueantes):

  • isdigit() devuelve True para algunos caracteres de dígitos no-ASCII que int() rechazaría; irrelevante para snowflakes de Discord, pero si se quiere robustez total se puede usar str.isdecimal() o un try/except alrededor de int().
  • El issue sugería tocar también main.py, pero como validate_settings() corre antes de int(settings.discord_guild_id), el fix en settings.py es suficiente. Bien justificado en el body.

Recordatorio: la rama está BEHIND respecto a main; hacer rebase antes de mergear.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working Priority: Low Baja prioridad - consideracion futura

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: validar que DISCORD_GUILD_ID sea numerico en validate_settings

2 participants