Alojar un bot de Discord en Python (discord.py)
Aloja tu bot de discord.py las 24 horas: sube el proyecto, guarda el token cifrado, invita el bot a tu servidor y compruébalo desde el panel de SolumeCore.
Para alojar un bot de Discord hecho en Python (discord.py) las 24 horas en SolumeCore, sube tu proyecto a un plan de apps de Python, guarda el token del bot como una variable cifrada, enciende la app e invita el bot a tu servidor. El asistente de bot de Discord del panel verifica el token con Discord y te da el enlace de invitación, así que el bot sigue en marcha aunque tu computadora esté apagado.
Antes de empezar
- Un plan de apps de SolumeCore con Python. Los planes disponibles están en la página de programación.
- Un proyecto de bot con un archivo principal (los ejemplos usan
main.py) y unrequirements.txt. - Una cuenta de Discord para crear la aplicación del bot en el portal de desarrolladores.
Paso 1: Prepara el código del bot
Lee el token desde una variable de entorno en lugar de escribirlo en el archivo. Este bot de ejemplo responde al comando de barra /ping, que es una forma rápida de comprobar que el bot funciona:
# main.py
import os
import discord
from discord import app_commands
class MiBot(discord.Client):
def __init__(self):
super().__init__(intents=discord.Intents.default())
self.tree = app_commands.CommandTree(self)
async def setup_hook(self):
await self.tree.sync()
bot = MiBot()
@bot.tree.command(name="ping", description="Comprueba que el bot está vivo")
async def ping(interaction: discord.Interaction):
await interaction.response.send_message("¡Pong!")
@bot.event
async def on_ready():
print(f"Sesión iniciada como {bot.user}", flush=True)
bot.run(os.environ["DISCORD_TOKEN"])Y su requirements.txt:
discord.py>=2.3Instala discord.py, no el paquete antiguo discord. En tu código sigues escribiendo import discord.
Si tu bot lee el texto de los mensajes, activa intents.message_content = True en el código y también Message Content Intent en el portal de desarrolladores (paso 3).
Paso 2: Lleva tu código a la app
Un repositorio de Git es el camino más fiable: tú defines los comandos de build y de arranque, y cada actualización es un clic.
- Abre tu app en el panel, entra en la pestaña Código y abre Deploy.
- Pulsa Conectar repositorio. Elige Repositorio público (enlace HTTPS) o Repositorio privado (enlace SSH más la llave de solo lectura que te muestra el asistente).
- En el paso Comandos, escribe en Comando de build la sugerencia de Python que ofrece el panel,
pip install -U --prefix .local -r requirements.txt, y en Comando de arranquepython -u main.py. - Pulsa Guardar y desplegar.
La opción -u hace que Python muestre cada línea al instante, de modo que tus mensajes aparecen enseguida en la consola en lugar de llegar a golpes. El recorrido completo con Git, con repositorios privados y deploys automáticos, está en Desplegar una app desde GitHub o GitLab.
¿No usas Git? Abre Archivos, usa Subir > Subir archivos (o SFTP) y deja tu proyecto en la carpeta principal. Sin repositorio, la app arranca con el comando por defecto de su entorno de Python; revisa lo que ejecuta en Ajustes > Arranque. Un requirements.txt en la carpeta principal se instala cuando arranca la app.
El primer arranque puede fallar por falta del token (KeyError: 'DISCORD_TOKEN'). Es normal: guardarás el token en el siguiente paso.
Paso 3: Crea el bot y guarda el token
- En Código > Deploy, busca la tarjeta Asistente de bot de Discord y pulsa Abrir asistente. También puedes abrirlo desde Código > Variables > Importar / exportar > Asistente de bot de Discord.
- En Crear el bot, abre el portal de desarrolladores de Discord, pulsa New Application y ponle nombre a tu bot. En la pestaña Bot pulsa Reset Token y copia el token.
- Si el bot lee el contenido de los mensajes, activa Message Content Intent en la misma pestaña Bot.
- Pega el token en Token del bot. Se guarda cifrado como
DISCORD_TOKEN, la variable que el ejemplo lee conos.environ["DISCORD_TOKEN"].
Trata el token como una contraseña: mantenlo fuera de tu código, de tu repositorio y de cualquier captura de pantalla. Si alguna vez se filtra, pulsa Reset Token en el portal y guarda el nuevo.
Paso 4: Conecta, invita y verifica
- En el paso Conectar, espera a que aparezcan el nombre y el ID de tu bot. Corrige cualquier comprobación en rojo: pulsa Reiniciar si la app aún no tiene el token, o Encender si está apagada, y después Verificar de nuevo.
- En el paso Invitar, elige Básico, Moderación, Música o Administrador y pulsa Invitar a mi servidor. Autoriza el bot en tu servidor de Discord y pulsa Listo.
- Abre Consola > Consola en vivo. Deberías ver
Sesión iniciada como ...y tu bot aparecerá en línea en Discord. - Escribe
/pingen tu servidor. El bot responde¡Pong!. Los comandos de barra pueden tardar un momento en aparecer la primera vez.
Elige la versión de Python
Tu app usa la versión de Python seleccionada en Código > Paquetes > Versión del lenguaje. Elige una versión actual de Python 3 y reinicia la app para aplicarla. La pantalla Paquetes también lista las librerías de tu requirements.txt y te permite añadirlas, actualizarlas o quitarlas; si tu app se despliega desde Git, haz el cambio en tu repositorio para que el siguiente deploy no lo sobrescriba.
Solución de problemas
ModuleNotFoundError: No module named 'discord': no se instalaron las librerías. Comprueba querequirements.txtesté en la carpeta principal y que el Comando de build lo instale; después vuelve a desplegar.KeyError: 'DISCORD_TOKEN': la app todavía no leyó el token. Pulsa Reiniciar para aplicar en Código > Variables, o comprueba que el nombre de la variable coincida con el de tu código.PrivilegedIntentsRequired: activa el intent correspondiente en la pestaña Bot del portal de desarrolladores y reinicia.- No sale nada en la consola: usa
python -u main.pycomo comando de arranque, oflush=Trueen tusprint. - Sigue desconectado: lee Por qué tu bot de Discord aparece desconectado.
Preguntas frecuentes
¿Cómo mantengo un bot de discord.py encendido 24/7 sin dejar el PC encendido?
Despliégalo en una app de Python de SolumeCore. La app funciona en nuestros servidores a todas horas, se reinicia cuando tú lo pides y te deja ver su consola desde el panel.
¿Dónde guardo el token del bot en una app de Python?
En Código > Variables, o con el asistente de bot de Discord, con el nombre DISCORD_TOKEN. Léelo con os.environ["DISCORD_TOKEN"] y nunca lo escribas directamente en el código.
¿Puedo usar un archivo .env con python-dotenv?
Puedes, pero las variables de entorno son más seguras. Si necesitas un archivo .env, la pantalla Variables tiene un interruptor para escribirlo por ti, con un aviso: cualquiera con acceso a los archivos de la app puede leerlo.
¿Cómo actualizo el bot después de cambiar el código?
Sube los cambios a tu repositorio y pulsa Desplegar ahora en Código > Deploy, o activa Desplegar solo con cada push para que ocurra automáticamente.
Artículos relacionados
- Cómo alojar un bot de Discord 24/7
- Desplegar un bot de Discord con Node.js (discord.js)
- Variables de entorno de tu app o bot
- Ver los logs y la consola de tu app
¿Quieres tu bot en línea a todas horas? Mira los planes de apps de Python y Node.js.