Cómo hacer un bot de Discord en JavaScript (discord.js), paso a paso
Un bot de Discord es un programa que se conecta a Discord con su token y responde a lo que pasa en tu servidor. Con Node.js y la librería discord.js, el primero se hace en un cuarto de hora: este tiene dos comandos con barra, /hola y /dado.
1. Crea el bot en Discord
Crea la aplicación
Entra en discord.com/developers/applications, pulsa «New Application» y ponle nombre. Es tu bot.
Saca el token
En la pestaña «Bot», pulsa «Reset Token» y copia el token. Es la contraseña del bot: quien lo tenga lo controla, así que no lo compartas ni lo subas a GitHub.
Invítalo a tu servidor
En «OAuth2» → «URL Generator», marca «bot» y «applications.commands», elige los permisos (para empezar, «Send Messages») y abre el enlace que sale para añadirlo a tu servidor de Discord.
¿Prefieres no montarlo tú? Servidores de Bots de Discord desde 1,50 € al mes, sin permanencia y con devolución íntegra en 72 horas. O crea un servidor de Bots de Discord gratis, sin tarjeta.
2. El código
Tres ficheros en una carpeta. En package.json van las librerías; en .env, el token (sin comillas); y en index.js, el bot.
{
"name": "mi-bot",
"version": "1.0.0",
"main": "index.js",
"dependencies": {
"discord.js": "^14.16.0",
"dotenv": "^16.4.0"
}
}DISCORD_TOKEN=pega-aquí-tu-tokenrequire("dotenv").config(); // lee el token del fichero .env
const { Client, Events, GatewayIntentBits, SlashCommandBuilder } = require("discord.js");
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
const comandos = [
new SlashCommandBuilder().setName("hola").setDescription("Te saluda"),
new SlashCommandBuilder().setName("dado").setDescription("Tira un dado de 6 caras"),
];
client.once(Events.ClientReady, async (c) => {
await c.application.commands.set(comandos.map((x) => x.toJSON())); // publica /hola y /dado
console.log(`Conectado como ${c.user.tag}`);
});
client.on(Events.InteractionCreate, async (i) => {
if (!i.isChatInputCommand()) return;
if (i.commandName === "hola") await i.reply(`¡Hola, ${i.user}!`);
if (i.commandName === "dado") await i.reply(`🎲 Ha salido un ${1 + Math.floor(Math.random() * 6)}`);
});
client.login(process.env.DISCORD_TOKEN);3. Pruébalo en tu ordenador
Con Node.js 20 o más nuevo: abre una terminal en la carpeta, instala las librerías con «npm install» y arráncalo con «node index.js». Cuando diga «Conectado como…», escribe /hola en tu servidor. Los comandos con barra pueden tardar unos minutos en aparecer la primera vez.
4. Déjalo encendido siempre (gratis)
Mientras el programa esté abierto en tu ordenador, el bot funciona; al apagarlo, se desconecta. Para tenerlo siempre encendido hace falta alojarlo en un servidor.
En NapNodes: crea el bot gratis, deja Node.js en «Arranque», sube los tres ficheros en «Archivos» (o pon tu repositorio de GitHub, sin el .env) y pulsa «Encender». Las librerías de package.json se instalan solas al arrancar e index.js es el fichero de inicio que viene puesto.
El bot gratis de NapNodes tiene 256 MB, de sobra para un bot como este, y solo hay que renovarlo con un clic cada semana. Si crece, Mini (512 MB) cuesta 1,50 € al mes.
Preguntas frecuentes
¿Qué necesito para hacer un bot de Discord en JavaScript?
Node.js 20 o más nuevo, la librería discord.js y una aplicación creada en el portal de desarrolladores de Discord, de la que sacas el token.
¿Por qué no aparecen los comandos con barra?
La primera vez Discord puede tardar unos minutos en enseñarlos. Comprueba también que al invitar al bot marcaste «applications.commands».
¿Dónde pongo el token del bot?
En un fichero .env que el bot lee al arrancar. Nunca en el código que subas a GitHub: quien tenga el token controla el bot.
¿Cómo tengo el bot encendido siempre?
Alojándolo en un servidor. En NapNodes hay un bot gratis de 256 MB que solo hay que renovar con un clic cada semana.
¿Lo montamos?
Servidores de Bots de Discord desde 1,50 € al mes, sin sobreventa: tu RAM es solo tuya. Y si quieres empezar sin pagar, tienes un servidor de Bots de Discord gratis, sin tarjeta.