Un bot de Discord se conecta al gateway de Discord y permanece conectado, por lo que necesita una máquina siempre encendida. Un VPS pequeño es barato, se mantiene en línea y no depende de tu internet doméstico. Esta guía despliega un bot de Node.js con discord.js y lo mantiene vivo con systemd.
¿Qué tamaño de VPS?
1 vCPU y de 1 a 2 GB de RAM bastan para la mayoría de los bots. Los bots más grandes que cachean muchos servidores o procesan audio necesitan más. Consulta el hosting para bots de Discord para ver los planes.
Paso 1: crea el bot en Discord
- Abre el Discord Developer Portal y crea una aplicación nueva.
- Añade un Bot, copia su token y mantenlo en secreto.
- En OAuth2, genera un enlace de invitación con los scopes
botyapplications.commandsy añade el bot a tu servidor.
Paso 2: instala Node.js
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
node -v
sudo adduser --disabled-password --gecos "" discord
Paso 3: escribe el bot
sudo -iu discord
mkdir ~/bot && cd ~/bot
npm init -y
npm install discord.js
// index.js
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once('ready', () => console.log('Logged in as ' + client.user.tag));
client.on('interactionCreate', async (i) => {
if (i.isChatInputCommand() && i.commandName === 'ping') await i.reply('Pong!');
});
client.login(process.env.DISCORD_TOKEN);
Registra el comando slash /ping una sola vez con el método de la guía de discord.js.
Paso 4: mantén el token fuera del código
echo "DISCORD_TOKEN=your-token-here" > ~/bot/.env
chmod 600 ~/bot/.env
Paso 5: ejecútalo con systemd
[Unit]
Description=Discord bot
After=network-online.target
[Service]
User=discord
WorkingDirectory=/home/discord/bot
EnvironmentFile=/home/discord/bot/.env
ExecStart=/usr/bin/node index.js
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now discordbot
journalctl -u discordbot -f
Llama al archivo /etc/systemd/system/discordbot.service.
Buenos hábitos
- Usa solo los intents que necesites. Los intents privilegiados deben activarse en el portal.
- Si alguna vez se filtra un token, restablécelo de inmediato en el portal.
- El reinicio ante fallos está configurado arriba. Añade monitorización si el bot es importante para una comunidad.