Objetivos de aprendizaje
Después de leer este artículo podrás:
- Entender qué es un bot de Discord y qué puede hacer
- Saber cómo se conectan el Gateway, la API REST, los intents y los slash commands
- Conocer los límites de la plataforma y lo que necesita un bot para seguir en línea
En esta página
- ¿Qué es un bot de Discord?
- ¿Cómo funciona un bot de Discord por dentro?
- ¿Qué son los intents y por qué importan?
- ¿Cómo es el código de un bot sencillo?
- ¿Para qué sirven los bots de Discord?
- ¿Qué límites tiene que respetar un bot?
- ¿Qué necesita un bot para estar en línea 24/7?
- Cómo hacerlo en Square Cloud
- Preguntas frecuentes
Casi todo servidor grande de Discord tiene al menos un bot: uno que reparte roles, otro que pone música, otro que borra spam o responde dudas. Para quien los usa, parecen miembros normales con una etiqueta junto al nombre. Detrás hay programas que alguien escribió y mantiene en ejecución.
Entender cómo ese programa habla con Discord te ayuda a crear el tuyo, a elegir dónde hospedarlo y a descubrir por qué un bot desaparece o deja de responder. Las reglas citadas aquí vienen de la documentación oficial para desarrolladores de Discord, donde puedes consultar los valores actuales.
¿Qué es un bot de Discord?#
Un bot de Discord es un programa vinculado a una cuenta de bot. Creas una aplicación en el Portal de Desarrolladores de Discord, el portal genera un usuario bot y un token, y tu código usa ese token para autenticarse. A partir de ahí, el programa recibe eventos (alguien entró, alguien envió un mensaje, alguien usó un comando) y actúa mediante la API (envía un mensaje, da un rol, crea un canal).
Lo que confunde a los principiantes: Discord no ejecuta tu código. Solo entrega eventos y acepta órdenes. El código vive en tu computadora, en un servidor o en un hosting, y el bot solo aparece en línea mientras ese proceso está encendido y conectado.
El token funciona como una contraseña. Quien tiene el token controla el bot, así que debe quedar fuera del código y de Git. Mira cómo obtener y proteger el token del bot.
¿Cómo funciona un bot de Discord por dentro?#
Dos vías de comunicación trabajan juntas:
- Gateway (entrada). Es una conexión WebSocket persistente entre el bot y Discord. Por ella llegan los eventos en tiempo real. Al conectarse, Discord envía un mensaje
Hellocon el intervalo de heartbeat, y el bot tiene que enviar un heartbeat a ese ritmo. Si los heartbeats dejan de llegar, la conexión se cae y el bot tiene que reanudar la sesión. - API REST (salida). Para hacer algo, el bot llama a endpoints HTTP: enviar un mensaje, responder a un comando, editar un rol. Cada llamada lleva el token en el encabezado
Authorization.
Un ciclo completo queda así: el usuario escribe /ping; Discord envía un evento de interacción por el Gateway; el bot lo procesa y llama a la API para responder; la respuesta aparece en el canal. Con una buena red, el ciclo completo tarda unos pocos cientos de milisegundos.
Como el Gateway es un WebSocket, el proceso del bot tiene que estar encendido todo el tiempo. Por eso un bot se desconecta cuando apagas tu computadora: la conexión se cierra junto con el programa.
¿Qué son los intents y por qué importan?#
Los intents son filtros que el bot declara al conectarse al Gateway. Cada intent activa un grupo de eventos: servidores, miembros, mensajes, reacciones, estados de voz. Sin el intent, el bot no recibe esos eventos, aunque tenga permisos en el servidor.
Tres intents son privilegiados: GUILD_MEMBERS (lista de miembros), GUILD_PRESENCES (estado y actividad) y MESSAGE_CONTENT (texto de los mensajes). Tienes que activarlos en el portal antes de pedirlos en el código. Si el código pide un intent privilegiado que no está habilitado, el Gateway cierra la conexión con el código 4014. Las apps con menos de 10.000 usuarios pueden activarlos directamente en el portal; por encima de eso, Discord exige una revisión.
En la práctica, esto explica por qué tantos bots pasaron de los comandos con prefijo (!ayuda) a los slash commands: el comando llega como una interacción, sin necesidad de leer el texto de todos los mensajes.
¿Cómo es el código de un bot sencillo?#
Con discord.js v14 (que pide una versión reciente de Node.js), un bot que responde a /ping cabe en pocas líneas:
import { Client, Events, GatewayIntentBits } from "discord.js";
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once(Events.ClientReady, async (c) => {
// Registra el comando /ping. En producción, regístralo con un script aparte.
await c.application.commands.set([
{ name: "ping", description: "Responde con pong" },
]);
console.log(`En línea como ${c.user.tag}`);
});
client.on(Events.InteractionCreate, async (interaction) => {
if (!interaction.isChatInputCommand()) return;
if (interaction.commandName === "ping") {
await interaction.reply(`pong (${client.ws.ping} ms)`);
}
});
client.login(process.env.DISCORD_TOKEN);client.login abre el Gateway; InteractionCreate es el evento que llega por él; interaction.reply es una llamada a la API REST. El token viene de una variable de entorno. En Python, la biblioteca equivalente es discord.py 2.x. El paso a paso completo, del portal a la invitación, está en cómo crear un bot de Discord.
¿Existe un bot de Discord sin Gateway?#
Existe, para un caso concreto. Discord puede entregar las interacciones (slash commands, botones, menús) de dos formas, y son mutuamente excluyentes: por el Gateway o por HTTP, a una Interactions Endpoint URL que configuras en el portal. En modo HTTP, cada comando llega como una solicitud POST a tu servidor, y no hace falta mantener un WebSocket abierto.
En los dos modos, la respuesta inicial a una interacción tiene que salir en un máximo de 3 segundos, y el token de la interacción vale 15 minutos para respuestas posteriores. Si el procesamiento tarda más, el bot responde con un estado de "pensando" (deferred) y edita el mensaje después.
El modo HTTP sirve para bots que solo responden a comandos. Un bot que necesite reaccionar a mensajes, entradas de miembros o voz sigue dependiendo del Gateway.
¿Para qué sirven los bots de Discord?#
Los usos más comunes:
- Moderación: borrar spam, aplicar aislamientos, registrar acciones en un canal de logs.
- Utilidades: roles por reacción, bienvenidas, recordatorios, encuestas, tickets de soporte.
- Música y audio: reproducir pistas en canales de voz, muchas veces con un servidor de audio aparte como Lavalink.
- Integraciones: avisar de deploys, transmisiones en vivo, ventas o alertas de otros sistemas.
- Juegos y economía: monedas virtuales, rankings, minijuegos.
- IA: responder preguntas con un modelo de lenguaje.
Si solo quieres publicar avisos automáticos en un canal, quizá ni necesites un bot: un webhook lo resuelve. Mira la diferencia en webhook o bot de Discord.
¿Qué límites tiene que respetar un bot?#
- Rate limit de la API: hasta 50 solicitudes por segundo por bot, además del límite de cada ruta. Si te pasas, recibes un error 429. Detalles en error 429 en Discord.
- Conexiones al Gateway: como máximo 1.000 identificaciones (
IDENTIFY) cada 24 horas. Un bot que se reinicia en bucle puede agotar ese límite, y Discord entonces cierra sus sesiones y restablece el token. - Sharding: cada conexión (shard) atiende como máximo 2.500 servidores. A partir de ahí, el bot tiene que repartir la carga en varios shards.
- Verificación: los bots en 100 servidores o más tienen que ser verificados por Discord.
¿Qué necesita un bot para estar en línea 24/7?#
Necesita un proceso que no se detenga, una conexión a internet estable y un reinicio automático si el programa falla. En tu propia computadora eso dura hasta que la apagas. Para un bot de verdad, las opciones son un VPS que configuras tú mismo o un hosting de aplicaciones que ya ofrece el proceso siempre encendido. La comparación está en cómo mantener un bot de Discord en línea 24/7, y la estimación de precio en cuánto cuesta hospedar un bot de Discord.
Cómo hacerlo en Square Cloud#
En Square Cloud, tu bot se ejecuta en un contenedor aislado, siempre encendido, sin modo de suspensión y con reinicio automático (activado por defecto en el deploy desde el panel) cuando el proceso termina con error. La conexión con el Gateway sigue abierta aunque apagues tu computadora, y la latencia media hasta el Gateway de Discord es de unos 30 ms. Puedes usar discord.js, discord.py, JDA, Discord.Net u otra biblioteca de Gateway, con sharding y voz, y FFmpeg ya viene en el contenedor.
Despliegas con un ZIP en el panel, con la CLI, desde GitHub o con la extensión de VS Code. El token va en una variable de entorno de la aplicación, fuera del código. El archivo squarecloud.app es opcional: el panel genera el runtime, la memoria y el archivo principal en el deploy, y escribirlo en la raíz del proyecto es la alternativa.
Todos los planes son de pago. Hobby empieza en R$12,49 al mes con 1 GB de RAM, y la RAM del plan se reparte entre tus aplicaciones, con un mínimo de 256 MB por bot. Mira los detalles en hosting de bots de Discord.
Hosting de bots
Tu bot en línea 24/7, con reinicio automático
Preguntas frecuentes
¿Un bot de Discord es lo mismo que un webhook?
No. Un webhook solo envía mensajes a un canal y no recibe nada. Un bot tiene su propia cuenta, recibe eventos y responde a los comandos de los usuarios.
¿El bot se conecta solo después de crearlo en el portal?
No. Crear la app en el Portal de Desarrolladores solo genera la cuenta y el token. El bot aparece en línea únicamente mientras tu programa está en ejecución y conectado al Gateway.
¿Necesito saber programar para tener un bot?
Para un bot propio, sí. Escribes el código con una biblioteca como discord.js (JavaScript) o discord.py (Python). Sin programar, la alternativa es añadir a tu servidor un bot ya hecho por otra persona.
¿Un bot de Discord puede leer todos los mensajes?
Solo si el intent privilegiado Message Content está activado en el portal y se pide en el código. Sin él, el bot recibe el evento del mensaje, pero el texto llega vacío, salvo en menciones y mensajes directos al bot.
Más en Bots
Ver los 33 artículos- ¿Cuánto cuesta hospedar un bot de Discord?El costo de hospedar un bot de Discord depende de la RAM, el tiempo en línea, la base de datos y los servicios externos. Aprende a estimar el tuyo.
- Correr un bot en el celular (Termux) o en tu PC vs hospedarloUn bot en tu PC o celular (Termux) se cae cuando el equipo se apaga, se suspende o pierde la red. Compara las tres opciones y cuándo sirve cada una.
- Cómo mantener tu bot de Discord en línea 24/7Para mantener un bot de Discord en línea 24/7, ejecuta el proceso en una máquina siempre encendida con reinicio automático. Compara PC, VPS con pm2 o systemd.
- Por qué tu bot de Discord se apaga o aparece offlineUn bot de Discord aparece offline cuando el proceso se cae, el token es inválido, falta una intent o se acaba la memoria. Diagnostica y corrige cada causa.