Cómo mantener tu bot de Discord en línea 24/7
Por qué tu bot se desconecta cuando apagas el PC y cómo tenerlo siempre activo: opciones de alojamiento, reinicio automático, reconexión y registros de errores.
Por el equipo de Voriam Technologies3 min de lectura
Casi todos los bots de Discord empiezan igual: funcionan perfecto mientras la terminal está abierta en tu ordenador y se desconectan en cuanto lo apagas, se va la luz o el PC entra en suspensión. Un bot es un programa que mantiene una conexión abierta con Discord; si el programa se detiene, el bot aparece como desconectado.
Para que esté disponible las 24 horas necesitas tres cosas: un equipo que no se apague, algo que vuelva a arrancar el bot si se cae y una forma de saber por qué se cayó.
Dónde alojar el bot
| Opción | Ventajas | Inconvenientes |
|---|---|---|
| Tu propio PC | Gratis y sencillo para probar. | Depende de tu luz, tu internet y de no apagarlo nunca. |
| Planes gratuitos de plataformas web | Sin coste. | Suelen dormir los procesos inactivos, limitar horas al mes o reiniciar sin aviso. |
| VPS | Control total. | Tienes que instalar y mantener el sistema, la seguridad y las actualizaciones. |
| Hosting de bots gestionado | Siempre encendido, con panel, consola y reinicio automático. | Tiene un coste mensual, normalmente bajo. |
Una Raspberry Pi en casa es un punto intermedio interesante, pero sigues dependiendo de tu conexión y de tu suministro eléctrico.
Reinicio automático cuando el proceso se cae
Aunque el código sea bueno, tarde o temprano habrá una excepción no controlada, un corte de red o una actualización del sistema. Lo importante es que el bot vuelva solo. En un VPS lo habitual es usar un gestor de procesos:
Para bots en Node.js, PM2 es la herramienta más usada:
npm install -g pm2
pm2 start index.js --name mi-bot
pm2 save
pm2 startup # sigue la instrucción que imprime para arrancar al encender el servidorPara bots en Python (o en cualquier lenguaje) en Linux puedes crear un servicio de systemd:
[Unit]
Description=Mi bot de Discord
After=network-online.target
[Service]
WorkingDirectory=/home/bot/mi-bot
ExecStart=/home/bot/mi-bot/.venv/bin/python main.py
Restart=always
RestartSec=5
User=bot
[Install]
WantedBy=multi-user.targetGuárdalo en /etc/systemd/system/mi-bot.service y actívalo con sudo systemctl enable --now mi-bot.
Que el código aguante los errores
Las librerías modernas (discord.js, discord.py, JDA) ya se reconectan solas si se corta la conexión con Discord. Lo que suele tumbar un bot es un error en tu código que nadie captura. Dos reglas básicas:
- Envuelve en
try/catch(otry/except) cada comando y cada llamada a APIs externas. Un fallo en un comando no debe apagar el bot entero. - Registra los errores globales en vez de dejar que el proceso muera en silencio.
// discord.js: que un error inesperado quede registrado
process.on('unhandledRejection', (err) => {
console.error('Promesa rechazada sin capturar:', err);
});
client.on('error', (err) => console.error('Error del cliente:', err));Logs: saber qué pasó
Cuando un bot falla de madrugada, los registros son la única pista. Escribe en consola con fecha y hora, y guarda esa salida: PM2 lo hace con pm2 logs, systemd con journalctl -u mi-bot, y los paneles de hosting muestran la consola en vivo.
Un paso más es que el propio bot avise de sus errores en un canal privado de tu servidor de Discord mediante un webhook. Así te enteras antes que tus usuarios.
Lista de comprobación
- El bot corre en un equipo que no se apaga.
- Hay un gestor (PM2, systemd o el panel) que lo reinicia si se cae y al arrancar el servidor.
- El token está en una variable de entorno, no en el código. Lo explicamos en cómo proteger el token de tu bot.
- Los comandos capturan sus propios errores.
- Los logs se guardan y sabes dónde mirarlos.
