¡He hecho un bot en python para Discord! (y cómo arrancarlo en la nube)

Hacer un bot para Discord tiene partes de programación, que según tengo entendido pueden hacerse en varios lenguajes, y partes de configuración. Aquí voy a comentar las partes de configuración, que son comunes independientemente de en qué se programe el bot. Si queréis que hable un poco sobre las partes de programación solo tenéis que comentarmelo 🙂

CREAR EL BOT

En la página de Discord de aplicaciones https://discord.com/developers/applications , clickar en “New Application”

Darle un nombre a la aplicación, y crearla.

Dentro de la aplicción recién creada, ir a la sección “Bot” del menú de la izquierda, y clickar en “Add Bot”.

Se le puede poner el nombre que se quiera, que será su “username” en Discord. Dejar las opciones tal y como están. El bot será público (Public Bot marcado) y no requerirá autenticación (Require OAuth2Code Grant sin marcar).

Una vez creado el bot, copiar el token del bot. Se necesitará cuando nos pongamos con el código. El token es la “contraseña” del bot, así que mejor no compartirla con nadie.

AÑADIR EL BOT AL SERVIDOR DE DISCORD

Dentro de la aplicación que se ha creado al principio, ir a la sección “OAuth2” del menú de la izquierda. Bajo “OAuth2 Url Generator”, en la tabla de checkboxes, marcar “bot”.

Marcar los permisos que se vayan a necesitar para el usuario bot.

Una vez hecho esto, copiar la url generada y pegarla en un navegador. Aparecerá la lista de servidores a los que se puede invitar al bot. Seleccionar el que se quiera, y hacer click en “Authorize” (para añadir el bot, la cuenta con la que estés logada en Discord necesita el permiso “Manage Server”).

PROGRAMAR EL BOT

Como he comentado, este punto no lo voy a elaborar. He programado mi bot en python, pero me consta que como poco se puede programar también en javascript. Se puede ver el código de mi bot en este repositorio de github.

ARRANCAR EL BOT EN LA NUBE

Una opción para que el bot se ejecute constantemente en la nube es tener un hosting contratado, o contratar un espacio específico para ejecutar bots (como en Repl.it). La primera forma no la he investigado, y la segunda, para la envergadura de mi proyecto, no tiene mucho sentido.

Si se crea el código del bot usando Repl.it, se puede crear un servidor web que se ejecute incluso si se cierra la pestaña de la web. Este servidor se ejecuta durante una hora después de cada llamada, después de lo cual “se duerme”. El bot se despertará de nuevo cada vez que reciba otra llamada, pero esto conlleva unos retardos que quizá no sean deseables.

Para evitar que el bot se duerma, se puede usar otro servicio gratuito llamado Uptime Robot. Con este servicio podemos configurar un monitor que mande un ping al bot en el servidor web de Repl.it, de forma que el bot nunca se duerma.

Así que hay que añadir código al bot en Repl.it para que se cree un servidor web, y configurar Uptime Robot para que llame al servidor web periódicamente.

La forma de hacer lo primero, en python, está también en el código del repositorio de github, y lo podéis sacar de allí. En javascript no he investigado cómo hacerlo, si es que se pudiera.

Una vez añadido el código para crear un servidor web a Repl.it, y arrancado el bot, aparece una ventana nueva con una url. Esta url es la dirección del servidor web, y hay que copiarla para usarla en el siguiente paso.

Para lo segundo:

Crear una cuenta gratuita en Uptime Robot https://uptimerobot.com/.

Hacer click en “Add new monitor”

Seleccionar “HTTP(s)” para el tipo de monitor, y darle un nombre y un intervalo de tiempo por debajo de una hora. Pegar la url del servidor web de Repl.it, y hacer click en “Create Monitor”.

Y con esto, el bot debería quedarse en estado activo indefinidamente.

*************************************************************************************

Espero que este post os haya resultado de utilidad, y si no, aquí tenéis un gato para compensar por las molestias.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.