← Documentación  /  Guía del desarrollador

Crea un plugin

La referencia completa del SDK para desarrolladores de plugins — Python en sandbox, entregado como zip, distribuido a través del marketplace.

These docs are publicly viewable. To publish a plugin you'll need a YourBot account: sign in to access the Dev Portal.
SDK v0.9.0

Los plugins son procesos Python en sandbox. Escribe un handler, declara tus capacidades, envía un zip — lo ejecutamos en un contenedor Docker restringido y transmitimos eventos de Discord mediante JSON-RPC.

¿Qué es un plugin?

Un plugin es un pequeño programa que escucha eventos en un servidor de Discord y reacciona a ellos.

  • Alguien se une a tu servidor → tu plugin envía un mensaje de bienvenida.
  • Alguien escribe /leaderboard → tu plugin responde con los 10 primeros usuarios.
  • Alguien reacciona a un mensaje → tu complemento cuenta el voto y actualiza el recuento.

Tú escribes Python. Importas el SDK. Decoras una función con @plugin.on_event("member_join") y escribes lo que debería ocurrir. La plataforma se encarga del resto.

Lo que la plataforma hace por ti

  • Se conecta a Discord. Nunca tienes que lidiar con gateways WebSocket, sharding, intents ni límites de velocidad. La plataforma entrega los eventos a tus handlers, y una sola llamada a ctx.discord.send_message(…) responde.
  • Aloja tu código. Sin servidores que alquilar, sin Docker que gestionar, sin despliegues a las 2 AM. Sube tu código — la plataforma lo ejecuta en un sandbox aislado.
  • Se comunica con el mundo exterior. Llama a APIs externas con ctx.http, mantén conexiones activas abiertas con ctx.ws y deja que la plataforma inyecte claves API desde secretos cifrados para que tu código nunca las toque. Consulta HTTP de salida.
  • Gestiona los pagos. Establece un precio o distribúyelo gratis. Los clientes pagan a través de Stripe y tú conservas el 70–85% de los ingresos (el nivel depende de tu volumen de los últimos 30 días), pagado a tu banco automáticamente después de un período de retención. Consulta Vender tu complemento.
  • Le da a cada instalación una página de configuración. Declara algunos widgets en JSON y los administradores obtienen una página de panel temático para tu complemento — tarjetas de estadísticas, gráficos, formularios de configuración — sin que escribas una línea de interfaz. Ver Paneles.
  • Envía tus actualizaciones. Publica una versión nueva y las instalaciones la recogen automáticamente (los propietarios pueden fijar una versión para optar por no participar). Sin correos de migración, sin "por favor vuelve a invitar al bot". Ver actualizaciones y reversión.
  • Escala por ti. Una instalación o un millón — la plataforma gestiona la concurrencia, los reintentos y las cuotas.

Lo que tú haces

Escribir la lógica que convierte los eventos de Discord en acciones. Eso es todo. El flujo es el siguiente:

Flow diagram: a Discord event such as a message or slash command goes to the YourBot gateway, then to your plugin's handler (the part you write), then YourBot sends the result back to Discord.

En qué se diferencia un plugin de un "framework de bot de Discord"

AspectoPlugin (esta plataforma)Bot autoalojado (discord.py, etc.)
Conectarse a DiscordLa plataforma lo haceLo haces tú
Servidor para alojar el códigoLa plataforma lo proporcionaTú lo alquilas / gestionas
Pagos / StripeLa plataforma lo gestionaLo construyes tú mismo
Instalación por clienteUn clic para el clienteGuías a cada cliente a través de OAuth
Escalado / cuotas / reintentosLa plataforma lo gestionaTú lo gestionas
Reseñas / visibilidadMarketplace integradoTú promocionas tu bot por tu cuenta
Superficie de la API de DiscordControlada por capacidades (declara lo que necesitas)Acceso completo (tu responsabilidad)

Dónde invertirás tu tiempo

  1. Conectando eventos a controladores. Decoradores como @plugin.on_event("message_create") o @plugin.on_slash_command("hello").
  2. Almacenando estado. Las configuraciones por servidor, contadores y tablas de clasificación viven en ctx.kv (clave-valor, cada complemento lo tiene) o ctx.sql (SQL completo, una capacidad que solicitas y que se otorga después de la revisión del personal). De cualquier manera, no hay base de datos que administrar.
  3. (Opcional) Una página de configuración. Añade un manifiesto JSON y los clientes obtendrán una página del panel desde la que pueden configurar tu plugin. No se requiere código de frontend.

Puedes crear y enviar tu primer complemento en una tarde. Las primeras versiones de nuevos desarrolladores pasan por una revisión breve del personal antes de aparecer en el mercado; los desarrolladores establecidos que publican desde repositorios públicos suelen saltarse la cola. Haz clic en "Primeros pasos" arriba cuando estés listo para escribir código. ¿Prefieres no empezar con un archivo en blanco? El Constructor de complementos escribe un primer borrador funcional a partir de una descripción, y la CLI de yourbot lo ejecuta localmente antes de que subas nada.

El viaje completo de un vistazo

Cada complemento pasa por los mismos cinco puntos, y estos documentos están organizados en el mismo orden — la barra de pestañas anterior los agrupa en Entender → Crear → Enviar → Referencia. Cada punto enlaza con la sección que lo cubre:

Bueno saberlo antes de construir

  • Tu código no tiene acceso de red directo. Todo HTTP va a través de ctx.http a dominios que declares; las conexiones activas van a través de ctx.ws.
  • Nada persiste en el disco. Los contenedores se limpian entre reinicios. El estado duradero pertenece en ctx.kv o ctx.sql.
  • Los recursos tienen límites. 64 MB de memoria y una fracción de vCPU por trabajador. Los números completos se encuentran en Límites y cuotas.
  • Los temporizadores no se ejecutan por sí solos. Los complementos de Marketplace están orientados a eventos: el trabajo periódico se basa en tráfico de eventos con un período de enfriamiento. Consulta Modo de grupo.
  • Leer lo que escribe la gente es una capacidad de privacidad. El texto del mensaje llega vacío a menos que solicites events:message_content y el servidor lo apruebe. Consulta el catálogo de capacidades.
  • Tu primera versión es revisada por una persona. Planifica una breve espera antes de que se publique. Consulta Publicar y revisar.

Pregunta frecuente existente

Salta directamente a la sección que responde tu pregunta. El cuadro de filtro anterior solo busca en la pestaña en la que te encuentras.

Quiero…Ve al
Reaccionar cuando alguien se une, publica o hace clicTodos los eventos
comando de barraComandos de barra
Mensajes nuevosevents:message_content
Almacenar configuración por servidor o contadoresAlmacén clave-valor
Mantener una clave API sin codificarlaUsuarios con acceso
Ejecutar consultas SQL realesAlmacenamiento e I/O: SQL en caja de arena
Llamar a una API externaSimular HTTP saliente
Mantener una conexión en vivo a un servidor de juegoAlmacenamiento e I/O: WebSockets
Hacer algo en un horarioProgramaciones cron
Abre un formulario emergente (modal)Crear: Diálogos modales
Actualiza un mensaje cuando se hace clic en un botónCrear: Botones y menús
Agrega un enfriamiento o límite de velocidad a un comandoAlmacenamiento e E/S: Estado efímero
Ver configuraciónManifiesto del panel (JSON)
Crea una interfaz de panel completamente personalizadaPaneles: Modo iframe
Probar mi complemento antes de cargarloPrimeros pasos
Escribe pruebas unitarias para mis controladoresProducción: Pruebas
Maneja errores del SDK sin fallarProducción: Manejo de errores
Entiende por qué se reinician los globales del móduloProducción: Modo grupo
Ver qué puede tocar mi complementoReferencia: Catálogo de capacidades
Verificar cada límite de tamaño y velocidadReferencia: Límites y cuotas
Eliminar PluginNombra tu plugin
Publicar & revisarPublicar & revisar
Ve qué cambió en cada versión del SDKReferencia: registro de cambios del SDK

SDK v0.9.0 · Última actualización: julio de 2026 · Volver al Portal de desarrolladores