MyBot Guía

Inicio/Bienvenida

Instalación y uso de un editor de código

Creación de su cuenta App y de Bot

Instalación de Discord.js y Node.js

En marcha su primer Bot

Usando un prefix ◄

Usando mensajes Embeds

Usando Argumentos

Ejemplos

Usando Eventos

Usando Colecciones

Usando Roles

Introducción a un Bot de musica/audio


Uso de un prefix

Usted puede ser que haya notado que muchos de los bots responden a los comandos con un prefix específico. Ya sea un signo de exclamación (!), Un punto (.), Un signo de interrogación (?) u otro carácter. Esto es útil para dos cosas.


En primer lugar, si no utiliza un prefix único y tiene más de un bot en un servidor, ambos responderán a los mismos comandos.

En segundo lugar, en el ejemplo anterior el bot responden cuando el mensaje comienza con ping que son 4 caracteres, esto significa que la siguiente frase provocará la respuesta del bot.

Para evitar esto vamos a crear un prefix, así como la capacidad de cambiar el prefix cuando guste desde un solo lugar.


Bien, hay dos formas de poder crear y usar una variable como prefix:

1. Creando una variable dentro del mismo archivo mybot.js como prefix.

2. Dividir en partes la configuración de variables, creando un archivo .JSON.


Vamos por la forma mas recomendada, crear un archivo .JSON para la configuración.


Agregar un archivo .JSON a su bot


Ahora que ya hemos creado el archivo de configuracion hay 3 cosas que podemos agregar al archivo, son:

Entre otras cosas mas.


Copiar y pegar el siguiente ejemplo en el archivo de configuración .JSON.

{
"token":"tokensecreto",
"prefix":"-",
"IdOwner":"tuIdDiscord"           
}
        

Despues de copiar el codigo de config usted puede cambiar el prefix a cual mejor le paresca para el ejemplo usare el simbolo "-" como prefix, tambien copie el token de su bot correspondiente y su ID de usuario de Discord si no sabe cual es dejelo tan como esta y continue, mas adelate veremos esa parte.

Guardar el cambio usando (CONTROL + S).



Referenciando el archivo .JSON

En la parte superior de su archivo del bot mybot.js, agregamos una línea para llamar al archivo config.json mediante una variable.

const Discord = require("discord.js");
const  client = new Discord.Client();
//AGREGRE LA SIGUIENTE LINEA DE CONFIG AL ARCHIVO DEL BOT
const config = require("./config.json");
        

Nombre Descripción
config Es la variable que representa la configuración instanciada de config.json

Significa que ahora usted utilizara config como objeto de configuración para llamar los datos del archivo.



Usando config en su código

Vamos a usar la variable config que representa el archivo de configuración, primero cambiamos el token llamando directamente a la variable.


La linea de nuestro bot se ve así:

        
client.login("TokenSecreto-SFASfasFWf#f3KKsds51.sDSd");
        

Y simplemente tenemos que cambiarlo a esto:

        
client.login(config.token);
        

Listo, la otra linea que tenemos que agregar es el prefix, vamos a la linea de nuestro codigo y agregamos el prefix creando una nueva variable para los comandos. Despues de agregar el prefix a los comandos esto se deberia de ver así:

const Discord = require("discord.js");
const  client = new Discord.Client();
const config = require("./config.json");

client.on("ready", () => {
   console.log("Estoy listo!");
});
var prefix = config.prefix;

client.on("message", (message) => {
  if (message.content.startsWith(prefix + "ping")) {
    message.channel.send("pong!");
  } else
  if (message.content.startsWith(prefix + "hola")) {
    message.channel.send("Hola que tal?");
  }
});
client.login(config.token);     
        

Luego del cambiar y agregar, guardar todo usando (CONTROL + S).


NOTA: He agregado un nuevo comando "hola" y el bot simplemente respondera con un: Hola que tal?, pero esta vez debe utilizar el prefix creado.



Vamos a activar el bot nuevamente y comprobar los cambios con el prefix.


Genial!, el bot responde las consultas atravez del prefix creado.


NOTA: Ahora el bot solo responde iniciando el prefix creado, "-" es el prefix creado para el ejemplo.



Prevención del bucle infinito

Hay una última cosa de la que quiero hablar: ¿los bots se contestan? ¡si! y esto se debe a que si usted tiene 2 bots con el mismo prefix en su servidor y cada uno debe responder a la orden del mismo prefix, "-help". Ahora si una persona escribe -help en un canal y ambos bots responden, y un bot verá la respuesta como una consulta y se contestarán a cada momento. A eso se le denomina como un bucle infinito: "repetir la misma consulta sin detenerse."


Para evitar que esto ocurra, debemos agregar dos condiciónes dentro de nuestro codigo, en el inicio del evento (message) :

        
 if (!message.content.startsWith(prefix)) return;
 if (message.author.bot) return;
        

NOTA: Significa que si no hay un prefix o el autor de la consula es un bot, deje de procesar.



El código final del bot debe de verse así:

const Discord = require("discord.js");
const  client = new Discord.Client();
const config = require("./config.json");

client.on("ready", () => {
   console.log("Estoy listo!");
});
var prefix = config.prefix;

client.on("message", (message) => {
  if (!message.content.startsWith(config.prefix)) return;
  if (message.author.bot) return;
  
  if (message.content.startsWith(prefix + "ping")) {
    message.channel.send("pong!");
  } else
  if (message.content.startsWith(prefix +"hola")) {
    message.channel.send("Hola que tal?");
  }
});
client.login(config.token);     
        

Entonces, tenemos un bot que sólo responde a 2 comandos ¿Es esto un bot básico completo? ¡Por supuesto!. Vayamos al Siguiente capítulo.


Si tiene alguna pregunta y/o duda después de leer esta guía, ingrese al servidor guía en Discord: MyBOT - Server guía.

Sitio web github/Crater