Uso de un prefix (simbolo indentificador)

Usted puede ser que haya visto en muchos bots que responden a los comandos con un prefix unico y específicio. Ya se un signo de exclamación !, un signo de +, un signo de interrogación ? u otros carácteres. Esto es muy útil para:

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 basico su 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 todo estos casos se usa un prefix unico, 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 varible dentro del mismo archivo de su bot como prefix.
  • 2. Dividir en partes la configuración de variables, creando un archivo json

Vamos por la forma mas recomendada, en crear un archivo .json para nuestra configuración de variables.


Creando un archivo json para nuestra variables

Crear un nuevo archivo dentro de la carpeta del bot y darle el nombre de config.json (.json es la extención del archivo).

config.json para las variables

JSON, son notaciones de objetos para javascript, mas información en json.org


Ahora que ya hemos creado el archivo de configuración hay 2 cosas de inicio que podemos agregar al archivo, son:

  • El token de su BOT
  • El prefix de su BOT

Asi como otros datos que considere de prioridad unica durante el desarrollo.

Agregar las siguientes lineas de configuración dentro del archivo json creado.


Despues de agregar usted puede cambiar el objeto prefix con el simbolo para el prefix de su BOT, para el ejemplo usare el simbolo - como prefix. Tambien copie el token de su BOT en el objeto token del archivo de configuración.

Guarde la configuración usando CONTROL +S

Referenciando el archivo de configuración json

Nos dirigimos a la parte superior del archivo de su BOT (mybot.js), agregamos una nueva línea de codigo para referenciar al archivo config.json mediante una variable.

Descripción del codigo agregado
const crea una variable con el nombre config para referenciar al archivo de configuración config.json creado anteriormente.

Ahora usted utilizara la variable config para llamar a los objetos que estan dentro del archivo de configuración config.json.

  • Para llamar o utilizar el objeto prefix escribimos: config.prefix
  • Para llamar o utilizar el objeto token escribimos: config.token

Usando la variable de configuración 'config'

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

La linea de nuestro bot se ve así:

Usando config y el objeto token seria así:

Listo, la otra linea que tenemos que agregar es el objeto prefix, vamos a la linea de nuestro codigo debajo de config y agregamos el prefix creando una nueva variable para los comandos, de esta forma


Despues de agregar y referenciar nuestro archivo de configuración config.json a nuestro BOT, esto se deberia de ver así:


Ahora agregamos un nuevo comando de ejemplo basico para probar con el nuevo prefix

NOTA: Los nuevos comandos que agregemos deben estar dentro del evento message y siempre debe de abrir y cerrar las llaves '{ }', es importate para que pueda interactuar con los mensajes de un servidor a travez de condiciones y funciones agregadas.

Ejemplo: 1 Creamos una nueva condicion if() debajo de nuestro primer comando ping


Despues de agregar, la estructura de su BOT se deberia de ver así:

Luego de agregar, guardar todo usando (CONTROL + S).

Como hemos visto agregamos el nuevo comandos dentro del evento message con una condicion if donde se describe de esta manera: Si el contenido del mensaje enviado en el servidor empieza con el prefix mas hola (-hola), devuelveme: hola que tal?.

Vamos a activar nuevamente su BOT y comprobar los cambios con el nuevo prefix agregado. Pero antes, para desactivar o apagar un BOT en consola es presionando CONTROL + C

Prueba:

uso de un prefix

!Genial¡ , su BOT ahora responde a los comandos atravez del prefix creado.


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, ejemplo -help. Ahora si una persona escribe -help en un canal y ambos bots responden, y uno de los bots verá la respuesta como una consulta y se contestarán a cada momento. A eso se le denomina como un bucle infinito: "repetir lo mismo sin detenerse."

Para evitar que esto ocurra, debemos agregar dos condiciónes dentro del evento message, al inicio (arriba de tu primer comando):

Descripción del codigo agregado
La primera condicion nos dice que si el contenido del mensaje no empieza con nuestro prefix, retorne nada o detenga las funciones.
La segunda condicion nos dice que si el contenido del mensaje fue enviado por un BOT, retorne nada. Esto es importante para evitar los bucles infinitos.

Entonces, luego de agregar nuestro archivo de configuración y las condiciones de prevención tenemos un BOT que sólo responde a 2 comandos con nuestro prefix, ¿Es esto un bot básico completado? ¡Por supuesto!.