Ejemplos
Spraxium incluye un conjunto completo de aplicaciones reales y ejecutables en apps/. En 0.2.0, esos ejemplos están alineados con las APIs más recientes, incluyendo builders de componentes asíncronos, patrones modernos de interacción y una arquitectura orientada a producción.
Esta página te ayuda a elegir el punto de partida correcto según tu objetivo y luego te da un flujo práctico para ejecutar, inspeccionar y modificar ejemplos de forma segura.
Mapa de aplicaciones (0.2.0)
Actualmente Spraxium incluye 13 aplicaciones de ejemplo oficiales:
components-botcontext-menu-botdynamic-botguard-bothttp-boti18n-boti18n-components-botmodal-botsandboxschedule-botsignal-botslash-botwebhook-bot
upgrade-test-bot se eliminó intencionalmente y no forma parte del conjunto de aplicaciones de 0.2.0.
Qué enseña cada aplicación
1) slash-bot
Úsala primero si quieres el punto de entrada más limpio.
Aprenderás:
- Registro y ejecución básicos de slash commands.
- Organización de handlers/módulos con la mínima complejidad.
- Flujo base de comandos antes de agregar infraestructura avanzada.
2) context-menu-bot
Úsala si el flujo de tu bot parte de acciones de contexto de mensaje/usuario en lugar de slash commands.
Aprenderás:
- Comandos de menú contextual de usuario y mensaje.
- Patrones de defer y respuesta que evitan fallos por timeout.
- Composición de guards y servicios alrededor de handlers de interacción.
3) guard-bot
Úsala para entender control de acceso y capas de políticas.
Aprenderás:
- Composición de guards para roles, permisos y condiciones.
- Verificaciones de seguridad reutilizables a nivel de módulo/handler.
- Patrones para mantener la lógica de autorización fuera del código de negocio.
4) components-bot
Úsala cuando necesites botones/select menus con flujos más ricos.
Aprenderás:
- Uso de Component V2 con builders guiados por
await. - Flujos de interacción de múltiples pasos tipo UI.
- Mapeo de interacciones de componentes a handlers tipados.
5) dynamic-bot
Úsala cuando los datos de payload deban viajar dentro de interacciones de componentes.
Aprenderás:
- Estrategias de identidad/payload para componentes dinámicos.
- Manejo más seguro de interacciones con estado sin parsing frágil.
- Estructura amigable para migraciones en contratos de componentes evolutivos.
6) modal-bot
Úsala para recolección de entradas tipo formulario.
Aprenderás:
- Apertura de modales y handlers de envío.
- Validación y feedback de errores para campos enviados.
- Integración de la salida del modal en flujos de comandos.
7) i18n-bot
Úsala cuando la localización sea un requisito principal.
Aprenderás:
- Detección de locale y carga de traducciones.
- Composición de mensajes con utilidades sensibles al idioma.
- Estructuración de salida multilingüe de comandos.
8) i18n-components-bot
Úsala para combinar localización con flujos complejos de componentes.
Aprenderás:
- Labels y contenido localizados en árboles de componentes.
- Estados dinámicos de UI seguros por locale.
- Límites de traducción prácticos en UX con muchas interacciones.
9) http-bot
Úsala cuando tu bot de Discord también exponga endpoints HTTP.
Aprenderás:
- Ejecución conjunta del runtime del bot y del runtime HTTP.
- Organización de endpoints de API alrededor de servicios/módulos.
- Patrones básicos de middleware usados por el framework.
10) webhook-bot
Úsala cuando eventos externos deban disparar acciones en Discord.
Aprenderás:
- Recepción y validación de requests de webhook.
- Enrutamiento de eventos de webhook a los handlers correctos.
- Patrones de confiabilidad y estrategia de errores explícita.
11) signal-bot
Úsala para patrones de comunicación dirigidos por eventos.
Aprenderás:
- Publicación y consumo de señales/eventos.
- Desacople entre productores y consumidores.
- Arquitectura de comunicación interna escalable.
12) schedule-bot
Úsala para automatización recurrente.
Aprenderás:
- Tareas programadas y flujo de ejecución tipo cron.
- Límites de programación seguros para operaciones de Discord.
- Organización de lógica de jobs con observabilidad en mente.
13) sandbox
Úsala como tu laboratorio de integración.
Aprenderás:
- Patrones mixtos de muchas funcionalidades del framework.
- Demos de excepciones y manejo de casos límite.
- Cómo prototipar rápido antes de extraer módulos de producción.
Rutas de aprendizaje recomendadas
Elige una ruta y síguela de forma secuencial para comprender más rápido.
Ruta A: fundamentos de comandos
slash-botcontext-menu-botguard-bot
Ruta B: UX intensiva en interacciones
components-botdynamic-botmodal-boti18n-components-bot
Ruta C: arquitectura de backend/integración
http-botwebhook-botsignal-botschedule-botsandbox
Ruta D: productos centrados en localización
i18n-boti18n-components-botsandbox
Cómo ejecutar un ejemplo
Desde la raíz del workspace:
pnpm install
pnpm --filter @spraxium/slash-bot build
pnpm --filter @spraxium/slash-bot startSustituye @spraxium/slash-bot por el paquete de la aplicación que quieras ejecutar.
Flujo práctico para estudiar ejemplos
Usa este ciclo al analizar cualquier aplicación:
- Lee
spraxium.config.tspara entender el wiring de módulos y hooks de runtime. - Lee primero los handlers en
src/, luego servicios/providers. - Ejecuta un comando/interacción de extremo a extremo e inspecciona logs.
- Modifica un comportamiento y vuelve a ejecutar de inmediato.
- Conserva experimentos exitosos y descarta rápido los experimentos ruidosos.
Esto mantiene tu aprendizaje enfocado en rutas de ejecución, no solo en lectura estática de código.
Notas de migración 0.2.0 para lectores de ejemplos
Si usaste revisiones antiguas de los ejemplos, ten en cuenta estos puntos:
- Los ejemplos de Component V2 ahora enfatizan el uso de builders asíncronos.
- Los flujos de componentes dinámicos se modernizaron para coincidir con los patrones actuales de payload.
- Los ejemplos HTTP/webhook están alineados con las interfaces más recientes de los paquetes.
- Los manifiestos de aplicaciones se normalizaron para consistencia de dependencias en el workspace.
Construir tu propia aplicación desde un ejemplo
Un enfoque seguro orientado a producción:
- Elige el ejemplo más cercano por comportamiento, no por tamaño.
- Copia solo módulos que puedas explicar línea por línea.
- Sustituye primero variables de entorno y secretos.
- Agrega guards, logging y manejo de errores antes de agregar funcionalidades.
- Agrega tests alrededor de tu primer comando crítico o flujo de interacción.
Los ejemplos están pensados como referencias de arquitectura, no como plantillas de producción listas para usar.