OffshoreVps
Tutoriales7 oct 20265 min de lecturaPor el equipo de OffshoreVps

Cómo alojar un bot de Discord en un VPS

Crea un bot de Discord, despliega un bot de discord.js en un VPS Linux y mantenlo en línea con systemd, con consejos sobre el token y los intents.

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.

Ventana de terminal en un VPS que muestra los comandos usados para alojar un bot de Discord, empezando por “curl -fsSL https://deb.nodesource.com/setup_22.x”
El tipo de comandos que ejecutarás en tu servidor en esta guía.

¿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

  1. Abre el Discord Developer Portal y crea una aplicación nueva.
  2. Añade un Bot, copia su token y mantenlo en secreto.
  3. En OAuth2, genera un enlace de invitación con los scopes bot y applications.commands y 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
Los pasos de esta guía en orden: 1. ¿Qué tamaño de VPS?; 2. crea el bot en Discord; 3. instala Node.js; 4. mantén el token fuera del código; 5. ejecútalo con systemd; 6. Buenos hábitos
Los pasos de esta guía, en orden.

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.