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).
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:
!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!.