ACLClouds
ACLClouds

Alojar un bot de Discord en Python con discord.py

requirements.txt, archivo de inicio, logs: los pasos para poner en línea un bot de discord.py y entender por qué se detiene.

Un bot escrito con discord.py se compone de unos pocos archivos: el código, la lista de dependencias y un archivo de inicio. Cuando los tres están listos, alojarlo consiste en subirlos, instalar las dependencias, arrancar el bot y leer los logs si algo falla.

  • Un bot de discord.py se compone de tres archivos: el código, requirements.txt y el archivo de inicio.
  • El token nunca debe estar en el código ni en Git.
  • Los logs indican la causa: lea la última excepción antes de reiniciar.

Preparar los archivos

El bot debe caber en una carpeta sencilla. Mantenga el token fuera del código (vea el artículo sobre variables de entorno) y enumere las dependencias en un archivo requirements.txt, que la instalación lee línea a línea.

  • bot.py: el archivo de inicio, el que crea el cliente y llama a client.run().
  • requirements.txt: un paquete por línea, por ejemplo discord.py>=2.3 como versión mínima que haya probado.
  • Un archivo .env en local, solo para sus pruebas: nunca debe llegar al servidor ni a Git.

Instalar y arrancar

En un entorno Python, el comando para instalar las dependencias es el mismo que en su PC. Cuando los paquetes están instalados, el bot arranca desde su archivo de inicio.

  • pip install -r requirements.txt: instala los paquetes enumerados.
  • python bot.py: arranca el bot en local para comprobar que se conecta.
  • Si la consola indica un archivo de inicio que no encuentra, lo busca en las subcarpetas y propone una corrección con un clic.

Leer los registros

Los logs son el primer sitio donde mirar. Un bot que se detiene casi siempre deja rastro: una excepción de Python, un inicio de sesión rechazado o un error de token.

  • Un Traceback seguido del nombre de una excepción: el archivo y la línea indicados son el código que hay que corregir.
  • discord.errors.LoginFailure: el token falta o no es válido, vea el artículo sobre errores frecuentes de los bots de Discord.
  • Intents privilegiados: Message Content debe estar activado en el portal de desarrolladores de Discord si su código lee el texto de los mensajes.

Por qué ACLClouds para un bot con discord.py

El plan gratuito ofrece 1 bot, 315 MB de RAM, 0,25 vCPU y 715 MB de almacenamiento. ffmpeg, yt-dlp y deno ya vienen instalados, y cada bot tiene su propio acceso SFTP.

  • Plan gratuito: 1 bot, 315 MB de RAM, 0,25 vCPU, 715 MB de almacenamiento, envíos de hasta 100 MB.
  • La imagen de Python incluye ffmpeg, yt-dlp y deno.
  • Acceso SFTP por bot en el puerto 2222, para subir sus archivos con FileZilla.

Preguntas frecuentes

¿Qué versión de Python necesita discord.py?

discord.py 2.x necesita Python 3.8 o posterior. En un proyecto nuevo, use una versión reciente que siga mantenida.

¿Por qué el bot se conecta pero no responde a los mensajes?

Compruebe que el intent Message Content está activado en el portal de desarrolladores y que el bot puede leer y enviar mensajes en el canal.

¿Puede el bot funcionar con mi PC apagado?

Sí, para eso sirve el alojamiento: el bot se ejecuta en el servidor. Revise los logs igualmente después de cada cambio en el código.