Centro de ayudaHelp center
Construye tu bot, paso a pasoBuild your bot, step by step
Recorrido: de cero a bot conectadoWalkthrough: from zero to connected bot
Necesitas una cuenta de Discord, un servidor donde puedas añadir bots y unos cinco minutos. Bot Builder nunca necesita tu contraseña de Discord.You need a Discord account, a server where you can add bots, and about five minutes. Bot Builder never needs your Discord password.
Crea la aplicación en DiscordCreate the application in Discord
Abre el Developer Portal, pulsa New Application, escribe el nombre de tu bot y acepta.Open the Developer Portal, press New Application, enter your bot's name, and accept.
Crea el usuario bot y copia el tokenCreate the bot user and copy its token
Dentro de tu aplicación entra en Bot. Pulsa Reset Token, confirma y copia el valor. Discord solo lo muestra una vez; si lo pierdes, genera otro.Inside your application, open Bot. Press Reset Token, confirm, and copy the value. Discord shows it once; if you lose it, generate another.
Activa los intents necesariosEnable the required intents
En la misma pestaña Bot, activa Server Members Intent. Activa también Message Content Intent si usarás comandos con prefijo como !hola. Guarda los cambios.On the same Bot tab, enable Server Members Intent. Also enable Message Content Intent if you will use prefix commands such as !hello. Save changes.
Invita el bot a tu servidorInvite the bot to your server
Abre OAuth2 → URL Generator. Marca bot y applications.commands, selecciona al menos View Channels y Send Messages, abre la URL generada y elige tu servidor.Open OAuth2 → URL Generator. Select bot and applications.commands, grant at least View Channels and Send Messages, open the generated URL, and choose your server.
Conéctalo en Bot BuilderConnect it in Bot Builder
Crea o abre un espacio de trabajo de Discord, pulsa Crear bot, pega el token y elige modo de comandos, prefijo y cómo compartir módulos. Esas decisiones se pueden consultar desde la consola; el token nunca vuelve a mostrarse.Create or open a Discord workspace, press Create bot, paste the token, and choose command mode, prefix, and module sharing. You can review those choices from the console; the token is never shown again.
Listo cuando:You are done when: la consola muestra Conectado, aparece al menos un servidor y el bot figura en línea en Discord.the console shows Connected, at least one server appears, and the bot is online in Discord.
Crear el token de tu botCreate your bot's token
El token es lo que le pegas a Bot Builder para conectar tu bot. Lo genera Discord, no Bot Builder, así que se saca desde su portal de desarrolladores:The token is what you paste into Bot Builder to connect your bot. Discord issues it, not Bot Builder, so you get it from Discord's developer portal:
- Entra a discord.com/developers/applications con tu cuenta de Discord.Go to discord.com/developers/applications with your Discord account.
- New Application, ponle un nombre (será el nombre visible del bot).New Application, give it a name (it becomes the bot's visible name).
- Entra a la pestaña Bot y pulsa Reset Token (o Copy la primera vez) para revelarlo. Discord solo lo muestra esa vez.Open the Bot tab and press Reset Token (or Copy the first time) to reveal it. Discord only shows it that once.
- En esa misma pestaña, activa los Privileged Gateway Intents que tu bot necesite: Message Content Intent si vas a usar comandos con prefijo (
!comando), Server Members Intent si necesitas la lista de miembros (por ejemplo, bienvenida). Sin esto el bot se conecta pero Discord le corta la conexión con un error de "intent no permitido".On that same tab, turn on the Privileged Gateway Intents your bot needs: Message Content Intent for prefix commands (!command), Server Members Intent if you need the member list (e.g. welcome messages). Without this the bot connects but Discord drops it with a "disallowed intent" error. - Ve a OAuth2 → URL Generator, marca el scope
bot(yapplications.commandssi usarás comandos de barra), elige los permisos que el bot va a necesitar en el servidor, y copia la URL generada al final.Go to OAuth2 → URL Generator, check thebotscope (andapplications.commandsfor slash commands), pick the permissions your bot needs on the server, and copy the generated URL at the bottom. - Abre esa URL, elige tu servidor y autoriza. El bot ya está invitado.Open that URL, pick your server and authorize. The bot is now invited.
- Volvé a Bot Builder y pega el token en Crear bot o en Reemplazar token de la consola del bot.Back in Bot Builder, paste the token into Create bot or the bot console's Replace token.
ComandosCommands
Un comando responde a un mensaje o a una barra (/) en Discord. Puede llamarse con un prefijo configurable (por ejemplo !saludo) o como comando de barra, y admite alias.A command replies to a message or a slash (/) in Discord. It can be called with a configurable prefix (e.g. !hello) or as a slash command, and supports aliases.
Tipos de respuesta:Reply types:
- Texto: un mensaje fijo.Text: a fixed message.
- Texto aleatorio: elige una entre varias opciones cada vez.Random text: picks one of several options each time.
- Embed: mensaje con color, imagen, miniatura, footer y hasta 25 campos.Embed: a message with color, image, thumbnail, footer and up to 25 fields.
Opciones y restriccionesOptions & restrictions
Cada comando puede activar, de forma independiente, cualquiera de estas funciones extra:Each command can independently turn on any of these extra features:
| FunciónFeature | Qué haceWhat it does |
|---|---|
| CooldownCooldown | Tiempo mínimo entre usos por persona, con mensaje opcional (normal o por DM) cuando alguien lo excede.Minimum time between uses per person, with an optional message (normal or DM) when someone exceeds it. |
| Canales excluidosExcluded channels | El comando no responde en los canales elegidos.The command does not respond in the chosen channels. |
| Roles excluidosExcluded roles | El comando no responde a los roles elegidos.The command does not respond to the chosen roles. |
| Responder por DMReply by DM | La respuesta llega al autor por privado en vez del canal.The reply reaches the author by DM instead of the channel. |
| Borrar mensaje del autorDelete the author's message | Borra el mensaje que invocó el comando apenas se ejecuta.Deletes the message that triggered the command as soon as it runs. |
| Borrar respuesta del botDelete the bot's reply | Borra la respuesta del bot 5 segundos después de enviarla.Deletes the bot's reply 5 seconds after sending it. |
| Reemplazar respuestaOverride the reply | Cambia lo que el comando responde (texto o embed) sin tocar su configuración principal — útil para probar un cambio rápido.Changes what the command replies (text or embed) without touching its main configuration — handy for a quick test. |
| Expulsar y prohibir / expulsar / aislar al mencionadoBan / kick / timeout the mentioned member | El comando aplica esa acción de moderación a la persona que se mencione al usarlo (aislar pide una duración). Solo una se aplica por comando.The command applies that moderation action to whoever is mentioned when it is run (timeout asks for a duration). Only one applies per command. |
| Mensaje si falta a quién mencionarMessage when no one was mentioned | Se envía si el comando necesita una mención (para banear/expulsar/aislar) y no se dio ninguna.Sent when the command needs a mention (to ban/kick/timeout) and none was given. |
| Mensaje si la acción fallaMessage when the action fails | Se envía si el bot no pudo banear/expulsar/aislar (por ejemplo, su rol está por debajo del de esa persona).Sent when the bot could not ban/kick/timeout (for example, its role sits below that person's). |
| Opciones tipadasTyped options | Parámetros de canal, rol o texto que funcionan tanto de barra como con prefijo — con prefijo se dan mencionando (canal:#general rol:@Mod) o dejando que el bot las complete en orden.Channel, role or text parameters that work both as slash and prefix — with a prefix they are given by label (channel:#general role:@Mod) or filled in order automatically. |
Variables
Se usan escribiendo {nombre} dentro de un texto o embed, y se reemplazan al enviarse. Una variable mal escrita se muestra tal cual ({typo}), para que el error se note.Used by writing {name} inside a text or embed, replaced when sent. A misspelled variable is shown as-is ({typo}), so the mistake is visible.
De contexto, siempre disponibles:Context variables, always available:
| Variable | ResultadoResult |
|---|---|
{user} | Menciona a quien ejecutó el comando.Mentions whoever ran the command. |
{user.tag} | Su nombre de usuario.Their username. |
{channel} | El canal donde se ejecutó.The channel it ran in. |
{server} | El nombre del servidor.The server's name. |
{command.args} | Todo lo escrito después del comando; {command.arg.1} toma solo la primera palabra.Everything typed after the command; {command.arg.1} takes only the first word. |
{date}, {time}, {random} | Fecha, hora y un número aleatorio.Date, time and a random number. |
Propias del bot ({variables.clave}), las creas tú: eligen un entorno — Global (un solo valor para todo, en todos los entornos) o una plataforma (Discord por ahora; después Telegram, WhatsApp…) — y, en una plataforma, un alcance: global (un valor compartido por todos tus bots), por bot, por servidor o por persona; con los tres últimos, cada uno guarda su propio valor o solo uno concreto tiene la variable. Además llevan un tipo, texto o número. Una de número puede ser mutable: cada vez que un comando se ejecuta puede fijarla, sumarle o restarle un valor. Es la base para contadores, puntos o una economía simple sin escribir código. Elige además si el valor persiste (PostgreSQL) o solo dura mientras el bot sigue encendido (sesión).Your own bot variables ({variables.key}): you create them, pick an environment — Global (one value for everything, in every environment) or a platform (Discord for now; later Telegram, WhatsApp…) — and, in a platform, a scope: global (one value shared by all your bots), per bot, per server or per person; with the last three each one keeps its own value, or only one specific one has the variable. They also have a type, text or number. A number one can be mutable: every time a command runs it can set it, or add or subtract a value. It's the base for counters, points or a simple economy with no code. You also choose whether the value persists (PostgreSQL) or only lasts while the bot stays up (session).
Abrir el explorador completo de variables →Open the complete variable explorer →
PlantillasTemplates
Guarda un mensaje o embed una vez y reutilízalo en varios comandos, en lugar de copiarlo y pegarlo. Cambiar la plantilla actualiza todos los comandos que la usan.Save a message or embed once and reuse it across several commands, instead of copying and pasting it. Changing the template updates every command that uses it.
Ver la guía para crear plantillas y variables →Read the template and variable creation guide →
Módulos y MarketplaceModules & Marketplace
Un módulo agrupa comandos y comportamiento listos para instalar (bienvenida, anuncios, sugerencias, y más). Se instalan por bot desde el Marketplace y cada servidor conserva su propia configuración, aunque compartan el mismo módulo.A module bundles ready-made commands and behavior (welcome, announcements, suggestions, and more). They are installed per bot from the Marketplace, and each server keeps its own configuration even when they share the same module.
Logs
Cuando algo falla (un comando, un permiso faltante, un límite alcanzado) queda registrado y agrupado por tipo, con quién puede verlo definido por rol. Se conservan 30 días.When something fails (a command, a missing permission, a limit reached) it is recorded and grouped by type, with who can see it defined by role. They are kept for 30 days.
Seguridad del tokenToken security
El token de tu bot se guarda cifrado y la app nunca lo vuelve a mostrar una vez pegado. Puedes reemplazarlo cuando quieras desde la consola del bot; la app te sugiere hacerlo cada tres meses como buena práctica, aunque no es obligatorio.Your bot's token is stored encrypted, and the app never shows it again once pasted. You can replace it at any time from the bot console; the app suggests doing so every three months as good practice, though it is not required.
Estados, errores y cómo resolverlosStatus, errors, and how to fix them
La consola distingue un bot pausado, un problema de credenciales y un problema de permisos. Mira primero el estado y después abre Actividad o Logs para ver el detalle más reciente.The console distinguishes a paused bot, a credential problem, and a permission problem. Check status first, then open Activity or Logs for the latest detail.
El bot está conectado pero no respondeThe bot is connected but does not reply
- Prueba en un canal que el bot pueda ver y donde pueda enviar mensajes.Test in a channel the bot can view and send messages in.
- Para prefijos, confirma Message Content Intent y que el prefijo escrito coincida.For prefixes, confirm Message Content Intent and that the typed prefix matches.
- Para slash, espera unos segundos tras guardar; Bot Builder sincroniza los comandos del servidor.For slash commands, wait a few seconds after saving; Bot Builder syncs the server commands.
- Comprueba canales y roles excluidos, cooldown y si la respuesta se configuró por DM.Check excluded channels and roles, cooldown, and whether the reply was configured as a DM.
- Abre Logs. Un fallo de comando, permiso o conexión queda agrupado allí para no repetir ruido.Open Logs. Command, permission, and connection failures are grouped there to avoid repeated noise.
Qué ocurre con tus datos y la APIWhat happens to your data and the API
La app móvil es el panel; la API de Bot Builder valida permisos y guarda la configuración; el worker mantiene la conexión con Discord y ejecuta comandos. Esta separación permite cerrar la app sin apagar el bot.The mobile app is the control panel; the Bot Builder API validates permissions and stores configuration; the worker maintains the Discord connection and executes commands. This separation lets you close the app without stopping the bot.
| Dato o acciónData or action | Qué hace Bot BuilderWhat Bot Builder does |
|---|---|
| ConfiguraciónConfiguration | Guarda bots, comandos, variables, módulos y permisos por espacio de trabajo. PostgreSQL es la fuente de verdad.Stores bots, commands, variables, modules, and permissions per workspace. PostgreSQL is the source of truth. |
| Token | Se cifra antes de guardarlo, no vuelve en las respuestas de API y solo el worker lo usa para iniciar sesión en Discord.Encrypted before storage, never returned in API responses, and used only by the worker to sign in to Discord. |
| CambiosChanges | Al guardar, la API avisa al worker para aplicar la configuración sin reiniciar el bot.When you save, the API notifies the worker to apply configuration without restarting the bot. |
| Datos de DiscordDiscord data | Servidores y datos estables se sincronizan y reutilizan para reducir llamadas y respetar límites de Discord.Servers and stable data are synced and reused to reduce requests and respect Discord limits. |
| EquipoTeam | Cada petición comprueba el espacio de trabajo y el rol OWNER, EDITOR o VIEWER antes de leer o cambiar datos.Every request checks the workspace and OWNER, EDITOR, or VIEWER role before reading or changing data. |
wiki.html?lang=es en un WebView. Cada tema tiene un enlace directo, por ejemplo wiki.html?lang=es#estados. No requiere framework, cookies ni recursos externos.To use this guide inside the app: open wiki.html?lang=en in a WebView. Every topic has a direct link, such as wiki.html?lang=en#estados. It needs no framework, cookies, or external assets.FAQ
¿Necesito saber programar?Do I need to know how to code?
No. Los módulos, comandos y plantillas se configuran desde la app.No. Modules, commands and templates are configured in the app.
¿Puedo usar comandos con prefijo y de barra al mismo tiempo?Can I use prefix and slash commands at the same time?
Sí, un mismo comando puede responder a ambos, y las opciones tipadas funcionan en los dos casos.Yes, the same command can answer to both, and typed options work in either case.
¿Qué pasa si mi bot excede los límites de Discord?What happens if my bot exceeds Discord's limits?
Bot Builder aplica un límite propio de envíos por canal y por bot, pensado solo para frenar un bucle o un pico anómalo, no el uso normal — no deberías notarlo en el día a día.Bot Builder applies its own limit on sends per channel and per bot, meant only to stop a loop or an abnormal spike, not normal use — you should not notice it day to day.
¿Por qué un comando de banear/expulsar/aislar no hace nada?Why does a ban/kick/timeout command do nothing?
El bot necesita el permiso correspondiente en el servidor y un rol por encima del de la persona mencionada. Si falla, se envía el mensaje de "acción falló" (si lo configuraste) y queda registrado en Logs.The bot needs the matching permission on the server and a role above the mentioned person's. If it fails, the "action failed" message is sent (if you set one) and it is recorded in Logs.