Construyendo tu primer Bot para Discord.

in Develop Spanish2 years ago (edited)

Con este post comenzamos la serie de tutoriales sobre Bots para Discord. En este primer tutorial instalaremos y configuraremos lo necesario para crear un Bot que pueda conectarse a un servidor de Discord. La finalidad de esta serie de tutoriales es ir paso a paso hasta poder crear un Bot que interactué tanto con Discord como con Hive.

Consideraciones generales.

En este primer tutorial veremos algunas generalidades y crearemos un Bot muy sencillo. Aunque la idea es hacer lo suficientemente sencillo el tutorial para que cualquiera lo pueda seguir, es recomendable tener bases de programación, al menos nociones en torno a conceptos básicos como: variables, constantes, ciclos, funciones, módulos, etc; es decir aquellos conceptos comunes a la gran mayoría de lenguajes de programación.

La creación de un Bot en Discord se puede realizar a través de múltiples lenguajes y cada uno tendrá su sabor favorito. Por su sencillez, soporte y documentación tanto para Discord como Hive, utilizaremos Javascript, en particular utilizaremos el estandar ECMAScript para la importación de módulos.

Node.

Node es un entorno de ejecución que nos permite correr código en Javascript. Mediante node podremos ejecutar Javascript en modo servidor y servirá como backend para nuestro bot. Además, dicho entorno cuenta con librerías para interactuar con HIVE, nuestro Sistema Operativo y Bases de Datos que enriquecerán todas las funciones que podrá ejecutar nuestro Bot.

Node se puede instalar directamente del instalador en la página oficial, sin embargo en mi caso preferiré hacerlo mediante un administrador de versiones.

Un administrador de versiones permite tener varias instalaciones de Node y cambiar fácilmente entre ellas, esto es una ventaja ya que nos permitirá probar el código en versiones anteriores o nuevas que vayan saliendo. En particular esto no lo haremos a través de estos tutoriales, así que siéntanse libres de instalar Node como prefieran. Si desean instalar el administrador de versiones, podrá encontrar los instalables en el siguiente enlace ----> ENLACE

Solo deben descargar el archivo nvm-setup.exe y seguir el proceso cotidiano de instalación de cualquier paquete. Una vez instalado abriremos una terminal de Windows, en mi caso utilizaré PowerShell, debemos abrirla con permisos de administrador.

Si todo ha salido de la forma correcta cuando ejecutemos el comando:
nvm -v 
obtenedremos la versión de NVM que hemos instalado.

Para instalar la versión estable mas actual de Node podemos utilizar el comando:
nvm install lts
Del mismo modo podemos instalar varias versiones de Node, por ejemplo para instalar la última versión de Node usamos
nvm install latest
sin embargo, para este tutorial usaré la versión Estable, aunque no sea la última. Para ver las versiones de Node que hemos instalado, utilizamos el comando:
nvm list
Para decirle a nuestro administrador que versión deseamos utilizar, usaremos el comando:
nvm use [version]
Donde [version] es el número de versión que queremos.
Con esto terminamos la instalación de Node. Por el momento podemos cerrar nuestra terminal.

Visual Studio Code

Ahora requeriremos una editor de código, en mi caso usaré uno de los mas populares Visual Studio Code. Desde su página podemos descargar e instalar el instalador con el que seguiremos el procedimiento de cualquier otro programa en Windows.
Aunque no es necesario como sugerencia podemos instalar algunas extensiones para nuestro editor de código. Esto lo podemos hacer desde la sección de extensiones en nuestro VSC, basta buscar la extensión de nuestro interés y dar clic en instalar. En particular, para nuestro curso, serán útiles extensiones como:
  • Prettier: Para autoformatear nuestro código.
  • Path Intellisense: Autocompleta las direcciones y nombres de archivos.
  • IntelliCode: Nos brinda asistencia al codificar

Configurando e instalando los paquetes con NPM

Ya tenemos casi todo listo. Ahora crearemos una carpeta en es sitio de nuestra preferencia. Con la carpeta creada abriremos VSC y en la sección del explorador, elegiremos Abrir Carpeta y abriremos la carpeta que acabamos de crear.
Con la carpeta abierta, procederemos a a abrir una terminal. Si estan usando VSC pueden realizarlo desde el mismo editor. Tiene la ventaja que automáticamente se coloca en la carpeta que tenemos abierta en el mismo editor.
La terminal se abrirá en la parte inferior. Lo primero que haremos será configurar nuestra carpeta mediante el comando:
npm init -y
NPM es un administrador de paquetes enfocado en Node y Javascript. Se ha instalado de forma automática cuando instalamos Node y nos permitirá instalar y organizar fácilmente los distintos módulos de los que haremos uso. Tras el comando anterior, se creará en nuestra carpeta el archivo package.json, lo cual podremos corroborar en el explorador del editor.
Dando clic sobre el nombre del archivo podremos abrirlo en nuestro editor, el contenido debe ser muy similar al siguiente:
Volvemos a la terminal e ingresaremos el siguiente comando:
npm i discord.js dotenv
El comando anterior indica a NPM que debe instalar lo paquetes discord.js y dotenv. Discord.js contiene las librerías básicas para interacturar con la API de Discord. Dotenv es un módulo que nos permite configurar variables de ambiente en un archivo especial. En unos cuantos pasos veremos su uso en nuestro proyecto.

Si miramos el código que teníamos abierto notaremos que ha cambiado

Se han agregado discord.js y dotenv a las dependencias. Además notarás que se han agregado dos nuevos elementos en el explorador, la carpeta node_modules y el archivo package-lock.json.
La carpeta node_modules contiene todos los módulos que han sido instalados tras nuestra indicación a NPM. Cuando indicamos instalar discord.js este a su vez depende de muchos otros módulos. NPM nos facilita la tarea e instala automáticamente todas las dependencias necesarias de cada módulo que le indiquemos instalar, por ello si desplegamos la carpeta node_modules, veremos que no solo contiene discordjs y dotenv, también contendrá todas aquellas dependencias que necesita este par para funcionar correctamente. Por su parte el archivo package-lock.json contiene el árbol completo de dependencias que fueron instaladas, a diferencia del archivo package.json que solo contiene la referencia de las que indicamos de forma explícita.

Creando nuestra aplicación en Discord

El siguiente paso es crear la aplicación en Discord, para ello iremos al portal de desarrolladores de Discord, cabe mencionar que previamente deber tener una cuenta de Discord y haberte logueado. Con ello mediante el siguiente enlace accedemos al portal.

PORTAL


Daremos clic en New Application y posteriormente pondremos nombre a nuestra aplicación y aceptaremos los términos de servicio y políticas de desarrolladores, claro después de leerlas ;).


Después de dar clic en "Create" obtendremos la información general de nuestra aplicación. Entre otras cosas podemos agregarle una descripción, cambiarle el nombre y elegir un ícono para la misma.

Después de realizar los cambios que deseemos iremos a la sección "Bot" del menú izquierdo y damos clic sobre el botón Add Bot. Posteriormente damos clic en Yes, do it.

Con ello hemos creado nuestro bot. Pero tranquilo aun falta un par de pasos.

Configurando nuestro Bot


Lo primero será dar clic sobre el botón Reset Token y nuevamente Yes, do it!.

Tras esto se desplegará el Token de nuestro bot. Lo copiamos, podemos hacerlo dando clic en Copy.

imagen.png

Antes de continuar es importante decirte que este Token no debe compartirlo NUNCA, es la llave de acceso de tu BOT y cualquier persona en posesión de este Token podrá dominar tu Bot, si este tiene acceso a privilegios administrativos en alguna sala, puede hacer destrozos irreparables. NO LO COMPARTAS, el token que yo muestro será inmediatamente cambiado, previo a la publicación de este tutorial.

Volvemos a nuestro editor de código. Creamos un nuevo archivo, para ello con el cursor en explorador, aparecerán varios botones, damos clic en el que tiene una hoja con un símbolo de "+". Escribiremos el nombre ".env". Automáticamente se abrirá nuestro archivo.

Como contenido escribiremos:

token = [el token que copiamos> 

Invitando nuestro Bot a las salas de Discord

Nuevamente pasemos a la página de Discord Developers. En la parte izquierda iremos al menú OAuth2. Del mismo lado izquierdo elegiremos la sección URL Generator. Posteriormente del lado derecho elegimos la opción bot. Después debemos elegir los permisos que otorgaremos al Bot mediante la invitación que generemos. Deberíamos ser cuidadosos con las elecciones, pero ya que vamos con prisa, le daremos simplemente Administrator para no tener limitaciones en entregas posteriores de este tutorial.

Dando clic en Copy o copiando el vínculo que aparece hasta la parte inferior, podremos pegar la dirección en nuestro navegador, mediante ella podremos invitar a nuestro Bot a los Servidores para las que tenemos permiso de invitación o somos dueños. Te recomiendo antes de ingresar al link haber creado un Servidor para realizar las pruebas de tu Bot. Eso lo puedes hacer directamente en la App de Discord al final de la lista de salas a las que perteneces, verá un círculo con el símbolo "+".

Después de crear tu sala, al acceder al link que generamos previamente podrás elegirla de la lista de salas e invitar a tu bot a ingresar a tu servidor.

Tras autorizar, tu Bot ingresará al servidor, sin embargo se encontrará desconectado.

Dando vida a nuestro Bot


Volvemos al editor. Haremos un pequeño cambio a nuestro archivo package.json agregamos al línea antes de las dependencias.
"type": "module",

Debe quedar así:

Ahora crearemos el archivo index.js con el siguiente contenido.

import dotenv from "dotenv";
import { Client, GatewayIntentBits } from "discord.js";
dotenv.config();
const token = process.env.token;
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.login(token);

Ahora en nuestra terminal ejecutamos el comando

node index.js
Si realizamos todo de forma correcta, ¡Nuestro Bot estará cobrará vida!

Bueno creo que ha sido bastante por ahora. En la próxima entrega, explicaremos las líneas que introdujimos en nuestro archivo index.js y veremos como podemos hacer que nuestro bot se comunique, tanto "escuchando", como escribiendo en nuestro servidor. Cualquier duda no reparen en dejarla en los comentarios.

¡Saludos!

Sort:  

Genial el tutorial, gracias por compartirlo, ya te sigo porque está muy interesante esto del bot

Su post ha sido valorado por @goya

¡Muchas Gracias!

Congratulations @zenkly! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)

You received more than 30000 upvotes.
Your next target is to reach 35000 upvotes.

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Check out our last posts:

LEO Power Up Day - December 15, 2022
HiveBuzz World Cup Contest - Semifinals - Recap of Day 2
The Hive Gamification Proposal Renewal
Support the HiveBuzz project. Vote for our proposal!