Skip to content

Un bot de Discord desarrollado con Node y MongoDB. Este bot gestiona perfiles de usuario, tablas de clasificación (ELO), asignación de medallas, entre otras funcionalidades interactivas.

License

Notifications You must be signed in to change notification settings

carlosfsmontoya/MageMuse-DiscordBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MAGEMUSE-DISCORDBOT-logo

MageMuse

❯ DiscordBot

license last-commit repo-top-language repo-language-count

Built with the tools and technologies:

JavaScript sharp Axios ESLint JSON



Estructura

└── MageMuse-DiscordBot/
    ├── LICENSE
    ├── README.md
    ├── eslint.config.js
    ├── index.js
    ├── keep_alive.js
    ├── package.json
    └── src
        ├── commands
        ├── config
        ├── font
        ├── jobs
        ├── middlewares
        ├── models
        ├── scripts
        └── utils

Comandos


Comandos de Administrador


/set-channel

Descripción: Configura el ID de un canal específico.

  • Opciones:
    • channeltype (requerido): El tipo de canal a configurar. Opciones:
      • log
      • register
      • lobby
      • ladder
    • channel (requerido): El canal a configurar.
  • Funcionalidad:
    • Actualiza el tipo de canal especificado con el ID del canal proporcionado.
    • Crea una nueva entrada si el tipo de canal o el canal no existen.
  • Permisos: Solo administradores.

/set-role

Descripción: Configura el ID de un rol específico.

  • Opciones:
    • roletype (requerido): El tipo de rol a configurar. Opciones:
      • leader
      • elite
    • role (requerido): El rol a configurar.
  • Funcionalidad:
    • Actualiza el tipo de rol especificado con el ID del rol proporcionado.
    • Crea una nueva entrada si el tipo de rol o el rol no existen.
  • Permisos: Solo administradores.

/set-elo

Descripción: Establece el ELO (rating) de un usuario.

  • Opciones:
    • usuario (requerido): El usuario al que se le establecerá el ELO.
    • elo (requerido): El nuevo valor de ELO.
  • Funcionalidad:
    • Actualiza el ELO del usuario especificado en la base de datos.
    • Mensaje adecuado si el usuario no existe o el ELO no se proporciona.
  • Permisos: Solo administradores.

/set-gym-leader

Descripción: Asigna un tipo y un nombre de medalla a un usuario.

  • Opciones:
    • user (requerido): El usuario al que se le asignará la medalla.
    • badgetype (requerido): El tipo de medalla a asignar.
    • badgename (requerido): El nombre de la medalla a asignar.
  • Funcionalidad:
    • Asigna una medalla al usuario especificado y actualiza su perfil en la base de datos.
    • Responde con un mensaje confirmando la asignación de la medalla.
  • Permisos: Solo administradores.

/ban-ladder

Descripción: Banea a un usuario para que no pueda recibir desafíos.

  • Opciones:
    • user (requerido): El usuario a banear.
  • Funcionalidad:
    • Banea al usuario configurando su campo allowChallenges a false.
    • Mensaje adecuado si el usuario no existe o ya está baneado.
  • Permisos: Solo administradores.

/unban-ladder

Descripción: Desbanea a un usuario para que pueda recibir desafíos.

  • Opciones:
    • user (requerido): El usuario a desbanear.
  • Funcionalidad:
    • Desbanea al usuario configurando su campo allowChallenges a true.
    • Mensaje adecuado si el usuario no existe o ya está desbaneado.
  • Permisos: Solo administradores.

Comandos de Líder

/set-badge

Descripción: ¡Otorga una medalla a un entrenador!

  • Opciones:
    • user (requerido): El usuario que recibirá la medalla.
  • Funcionalidad:
    • Verifica el perfil del usuario y si está registrado en la liga.
    • Verifica que el usuario haya realizado menos de dos intentos en el día.
    • Otorga una medalla y actualiza el perfil del líder.
    • Otorga tickets adicionales si el usuario obtiene la medalla número 8 o 10.
  • Permisos: Solo para usuarios con el rol de líder.
  • Canal: Solo en el canal de registro especificado.

/set-win-leader

Descripción: ¡Registra una victoria!

  • Opciones:
    • user (requerido): El usuario que ha perdido.
  • Funcionalidad:
    • Verifica el perfil del usuario y si está registrado en la liga.
    • Verifica que el usuario haya realizado menos de dos intentos en el día.
    • Registra la victoria del líder y actualiza el perfil del usuario perdedor.
  • Permisos: Solo para usuarios con el rol de líder.
  • Canal: Solo en el canal de registro especificado.

Comandos de Alto Mando

/set-win-elite

Descripción: ¡Registra una victoria del alto mando!

  • Opciones:
    • user (requerido): El usuario que ha perdido.
  • Funcionalidad:
    • Verifica el perfil del usuario, registro en la liga y si tiene intentos disponibles (tryEF).
    • Reduce los intentos y guarda los cambios en la base de datos.
    • Envía un mensaje confirmando la derrota y el gasto de un boleto.
  • Permisos: Solo para usuarios con el rol de alto mando.
  • Canal: Solo en el canal de registro especificado.

Comandos de Usuario

/set-pokemon

Descripción: ¡Añade un Pokémon a tu equipo!

  • Funcionalidad:

    • Agrega un nuevo Pokémon al equipo del usuario si no está registrado en la liga.
    • Verifica que el Pokémon exista utilizando la API de PokéAPI.
    • Verifica que el equipo del usuario no exceda el límite de 12 Pokémon.
    • Actualiza el equipo del usuario en la base de datos.
    • Responde con un mensaje de confirmación y el nuevo equipo del usuario.
  • Solo puede ser usado en el canal lobby configurado con el comando set-channel.


/remove-pokemon

Descripción: ¡Remueve un Pokémon de tu equipo!

  • Funcionalidad:

    • Elimina un Pokémon del equipo del usuario si no está registrado en la liga.
    • Verifica que el Pokémon a eliminar esté en el equipo del usuario.
    • Actualiza el equipo del usuario en la base de datos.
    • Responde con un mensaje de confirmación y el nuevo equipo del usuario.
  • Solo puede ser usado en el canal lobby configurado con el comando set-channel.


/register-team

Descripción: Registra tu equipo de Pokémon para participar en la liga.

  • Funcionalidad:

    • Verifica si el usuario ya está registrado o si tiene un equipo de Pokémon.
    • Envía la información del equipo del usuario a un canal de registro específico en Discord.
    • Marca al usuario como registrado en la base de datos.
  • Solo puede ser usado en el canal lobby configurado con el comando set-channel.


/set-ladder-result

Descripción: ¡Registra el resultado de la batalla!

  • Funcionalidad:

    • Registra el resultado de una batalla entre dos usuarios especificando un ganador y un perdedor.
    • Verifica que el enlace de la repetición sea válido y que el ganador y el perdedor no sean la misma persona.
    • Actualiza el Elo de ambos usuarios en función del resultado.
    • Publica un mensaje en Discord con los detalles del resultado, incluyendo el cambio de Elo y un enlace a la repetición.
  • Opciones:

    • ganador (requerido): El usuario ganador de la batalla.
    • perdedor (requerido): El usuario perdedor de la batalla.
    • replay (requerido): El enlace de la repetición de la batalla en Showdown.
  • Solo puede ser usado en el canal de ladder configurado con el comando set-channel.


/log-leader

Descripción: Muestra el rendimiento de los líderes de gimnasio.

  • Funcionalidad:

    • Obtiene y muestra una lista de los líderes de gimnasio con sus respectivos rendimientos en batallas (ganadas y perdidas).
    • Ordena a los líderes por el total de batallas (ganadas + perdidas) en orden descendente.
    • Publica un mensaje en Discord con el rendimiento de cada líder.
  • Este comando no tiene ninguna restriccioń de rol o canal.


/showdown-nick

Descripción: Ingresa tu nick de Showdown para que puedas ser retado por otros entrenadores.

  • Funcionalidad:

    • Actualiza el nick de Showdown del usuario en la base de datos.
    • Responde con un mensaje de confirmación que muestra el nuevo nick de Showdown del usuario.
  • Este comando no tiene ninguna restriccioń de rol o canal.


/profile

Descripción: Obtiene información de un entrenador.

profile-command

  • Funcionalidad:

    • Muestra información del perfil del usuario, incluyendo medallas obtenidas y Pokémon en el equipo.
    • Crea una imagen personalizada del perfil usando canvas.
    • Guarda la imagen en Google Cloud Storage y la muestra en un mensaje embed en Discord.
  • Este comando no tiene ninguna restriccioń de rol o canal.


/leaderboard

Descripción: Obtiene la tabla de clasificación del servidor.

profile-command

  • Funcionalidad:

    • Obtiene los 10 usuarios con mayor puntaje de ELO.
    • Crea una imagen de la tabla de clasificación usando canvas.
    • Guarda la imagen en Google Cloud Storage y la muestra en un mensaje embed en Discord.
  • Este comando no tiene ninguna restriccioń de rol o canal.


Nota

Si tienes alguna sugerencia, mejora o simplemente quieres que te explique algo, no dudes en abrir un issue o enviar un pull request. ¡Agradeceré tu contribución!


About

Un bot de Discord desarrollado con Node y MongoDB. Este bot gestiona perfiles de usuario, tablas de clasificación (ELO), asignación de medallas, entre otras funcionalidades interactivas.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published