B-Baka Bot

logo

B-BAKA BOT for Discord

B-Baka Bot es un bot multipropósito de Discord diseñado en JavaScript cuyo objetivo es ofrecer diferentes funcionalidades además de servir como herramienta de aprendizaje. En este proyecto se ha profundizado en el uso de APIs , librerías y scrapping junto con aprendizaje del entorno de desarrollo para la plataforma Discord.




COMMANDS

!runes [champion_name] [role] Devuelve las runas de un campeón para cierto rol
!opgg [summoner_name] Retorna el perfil de Opgg seleccionado
!definition [word_or_phrase] Busca la información en el Urban Dictionary de la palabra o frase elegida
!wordoftheday Muestra la definición de la palabra del dia en Urban Dictionary
!coinflip Lanza una moneda al aire que devuelve cara o cruz
!help Muestra una lista con todos los comandos disponibles
!bloodtrail Se imprime en el canal el emote Bloodtrail



TECH

Para la consulta de palabras específicas con el comando !definition se ha usado la API pública proporcionada por Urban Dictionary a través de la cual se obtiene una estructura JSON con los diferentes datos. Se ha necesitado realizar un estudio del formato para de peticiones a la API además de obtener los conocimientos necesarios para tratar los JSON y los datos proporcionados.
Con respecto a OPGG actualmente contamos con la función de obtención del perfil del invocador así como de las runas para un determinado campeón con los comandos !opgg y !runes respectivamente. Se ha realizado un estudio de los diferentes formatos de URLs que utiliza la página así como los numerosos casos especiales tales como nombres con carácteres especiales y con varias palabras entre otros. Para la obtención del perfil de invocador se ha realizado scrapping para la búsqueda de la foto correspondiente al perfil y para las runas de un campeón se ha investigado el formato de URLS para las fotos de los campeones usadas en la página oficial de League of Legends.
Para la simulación de un cliente web para la realización de consultas HTTP se ha empleado la libreria AXIOS. Una vez realizada la consulta se intercepta y transforma automáticamente al formato JSON. Esta tecnología ha sido usada para obtener el código HTML de las diferentes webs para posteriormente realizar el scrapping necesario.
Para la integración con Discord se ha utilizado la librería DiscordJs junto con el portal para desarrolladores ofrecido por Discord. Se ha necesitado aprender el funcionamiento interno del envío y recepción de mensajes en un servidor para el correcto tratamiento de estos mediante las funciones que nos ofrece la librería. Los mensajes embebidos han sido cruciales para poder enviar al usuario un texto formateado y con gran cantidad de opciones y herramientas tales como fotos adjuntas, miniaturas, footers y colores personalizados.
JavaScript ha sido el lenguaje empleado paralelamente con la libreria DiscordJs para la implementación del bot. Se han usado características tales como la API Promise, operaciones asíncronas, formateo de datos a JSON, tratamiento de cadenas, carga de base de datos local y modularización de las diferentes funciones ofrecidas por el bot.