Divulgación: soy Antonin Courtadon, fundador de ACLClouds.
Tu bot funciona en tu ordenador, pero deja de responder en cuanto apagas la máquina o cierras la terminal. Un hosting gratuito resuelve eso, pero antes de elegir conviene entender qué significa «gratis» en cada oferta: casi siempre hay un límite de tiempo, de recursos o de ambos.
Esta guía usa como ejemplo la oferta gratuita de ACLClouds, cuyas cifras conozco, y termina con una lista de comprobación válida para cualquier proveedor.
Qué necesita un bot para estar «24/7»
Un bot es un programa que mantiene una conexión con Discord y espera eventos: un mensaje, un miembro nuevo, un comando slash. Solo responde mientras su proceso está en marcha. Para que siga en línea hacen falta tres cosas:
- que el proceso arranque;
- que el proceso sobreviva a caídas y picos de memoria;
- que el periodo de hosting siga vigente.
El tercer punto es el que más se olvida. Muchas ofertas gratuitas caducan. Si el plazo termina sin renovación, el bot se detiene aunque el código sea correcto.
Las cifras de la oferta gratuita de ACLClouds
Estos son los valores del plan gratuito de bot de Discord en el momento de escribir este artículo. Compruébalos en la página de tu bot antes de depender de ellos.
- 1 bot
- 315 MB de RAM
- 0,25 vCPU
- 715 MB de almacenamiento
- Subidas de hasta 100 MB
- 4 días gratis, renovables sin coste desde la página del bot. Puedes renovar en los 2 días previos a la caducidad o cuando el bot esté suspendido.
Cada bot tiene su propio acceso SFTP (puerto 2222, usuario bot- seguido de 8 caracteres), una tarjeta para el token de Discord, consola con registros y detección automática del archivo de inicio. Las imágenes de Node.js y Python incluyen ffmpeg, yt-dlp y deno, útiles si tu bot reproduce audio o descarga contenido.
Son recursos modestos: bastan para un bot de moderación, de bienvenida, de tickets o de utilidades con pocos comandos. No bastan si el bot guarda en caché miles de miembros, carga un modelo de IA grande o transcodifica vídeo sin parar.
Tabla: qué comprobar antes de elegir
| Criterio | Por qué importa | Plan gratuito de ACLClouds |
|---|---|---|
| Duración y renovación | Un plazo caducado detiene el bot sin aviso | 4 días, renovable desde la página del bot |
| RAM | Los bots de Node.js y Python crecen con la caché | 315 MB |
| CPU | Bucles largos, imágenes y audio consumen CPU | 0,25 vCPU |
| Almacenamiento | Registros, descargas y cachés llenan el disco | 715 MB |
| Tamaño de subida | El código y las dependencias pasan por el panel | Hasta 100 MB |
| Acceso a archivos | Corregir sin redesplegar todo | SFTP en el puerto 2222, una cuenta por bot |
| Registros | Para entender un fallo a las 3 de la madrugada | Registros y consola por bot |
| Archivo de inicio | Un punto de entrada no encontrado hace perder tiempo | Detección automática |
| Paso a plan de pago | Evita migrar todo cuando el bot crece | Planes de pago: de 1 a 4 vCPU por bot |
Si un proveedor no te da estas cifras, pídelas antes de desplegar. Un proveedor serio las muestra en su página de planes.
Paso a paso: un bot mínimo en discord.py
El procedimiento es parecido en discord.js. Este bot responde «pong» al comando !ping.
1. Crea la aplicación en el portal de desarrolladores de Discord. En la sección Bot, genera el token y cópialo. Nunca lo pegues en el código, en un repositorio ni en un chat. Activa también Message Content Intent: sin esa opción, message.content llega vacío.
2. Escribe el bot en bot.py:
import os import discord intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_ready(): print(f"Conectado como {client.user}") @client.event async def on_message(message: discord.Message): if message.author.bot: return if message.content.strip() == "!ping": await message.channel.send("pong") client.run(os.environ["DISCORD_TOKEN"]) Y un requirements.txt con la línea discord.py>=2.3,<3.
3. Pruébalo en tu ordenador. En Linux o macOS: export DISCORD_TOKEN="tu-token" y después python bot.py. Cuando aparezca «Conectado como...», escribe !ping en un servidor de pruebas.
4. Súbelo al hosting. En el panel de ACLClouds:
- crea un bot (el plan gratuito incluye uno);
- sube tus archivos desde el panel o por SFTP, en el puerto 2222;
- pega el token en la tarjeta de token de Discord. El panel rechaza un valor que parece un nombre de variable, por ejemplo el texto
DISCORD_TOKENescrito en lugar del token; - revisa el archivo de inicio (
bot.pyoindex.js); - arranca el bot y abre la pestaña de registros.
No subas node_modules, ni entornos virtuales, ni el archivo .env. Mantente dentro de los 100 MB de subida y los 715 MB de almacenamiento.
5. Lee los registros. El primer arranque es donde aparecen los errores:
| Mensaje | Causa probable | Solución |
|---|---|---|
| Error de intents privilegiados | Message Content Intent desactivado | Actívalo en el portal y reinicia |
LoginFailure / token inválido | Token incorrecto o regenerado | Copia de nuevo el token en la tarjeta |
ModuleNotFoundError | Dependencias no instaladas | Comprueba que requirements.txt se haya subido |
| El bot se reinicia en bucle | Excepción al arrancar | Lee la primera línea del rastro, no la última |
Mantener el bot en línea
El plazo gratuito caduca. Anota la fecha de inicio y renueva desde la página del bot dentro de la ventana permitida: en los 2 días previos a la caducidad, o cuando el bot esté suspendido. Un bot sin renovar se detiene, aunque su código sea perfecto.
Guarda también tu código fuera del proveedor, en un repositorio Git privado. Así puedes volver a desplegarlo en minutos si algo falla.
Límites que conviene conocer
- Un bot gratuito no es un servicio en el que puedas confiar sin mantenimiento: depende de la renovación y de los límites del plan.
- 315 MB de RAM y 0,25 vCPU son poco. Escribe el código pensando en esos límites o contrata más.
- 715 MB de almacenamiento bastan mientras los registros estén controlados. Un bot que escribe registros sin rotarlos llenará el disco.
- La renovación es responsabilidad tuya.
Cuándo pasar a un plan de pago
Conviene pagar cuando el bot está en varios servidores y responde todo el día, cuando necesita más de 315 MB de RAM, cuando añades tareas en segundo plano o un panel web, o cuando otras personas dependen de él. En ACLClouds, los planes de pago fijan los vCPU por bot: Starter 1, Pro 2, Advanced 3 y Business 4. Los precios están en la página de planes.
Si necesitas un servidor completo y no solo un bot, nuestros VPS Linux empiezan en 16 GB de RAM y 4 vCPU.
Preguntas frecuentes
¿El hosting gratuito de bots es realmente gratis?
Sí, dentro de sus límites. La oferta de ACLClouds incluye un bot con 315 MB de RAM y 0,25 vCPU durante 4 días, renovables sin coste desde la página del bot. Gratis no significa desatendido: la renovación es lo que mantiene el bot activo.
¿Mi bot puede funcionar 24/7 en el plan gratuito?
Funciona mientras el periodo esté vigente y lo renueves en la ventana prevista. La disponibilidad continua sin renovaciones requiere un plan de pago. Revisa las condiciones antes de que otros dependan del bot.
¿Por qué mi bot se desconecta tras unos días?
La causa más habitual es un periodo caducado sin renovar. La segunda es superar la memoria asignada. Los registros te dirán cuál ha sido.
¿Necesito activar la intención de contenido de mensajes?
Sí, si tu bot lee el texto de los mensajes, por ejemplo con comandos con prefijo. Se activa en el portal de desarrolladores de Discord. Es una norma de Discord, no del proveedor.
¿Puedo pasar a un plan de pago más adelante?
Sí. Mantén tu código en Git y el cambio será una modificación de configuración, no una reescritura.
Más información
Puedes ver la oferta de bots en https://aclclouds.com/en/ (inglés) y la versión en francés en https://aclclouds.com/fr/.
Antonin Courtadon, fundador de ACLClouds · https://aclclouds.com


