iblazingx-commands

2.2.8 • Public • Published

Package Size Paypal Twitter

NPM

Un paquete que te facilita crear comandos para bots de discord.js (Se requiere URI de mongodb)

En la actualización 2.1.1 se añadio el constructor de eventos y se mejoraron algunas cosas...

Contenido

Setup (Código principal)

/* ... client login ... */

client.on("ready", () => {
  const Constructor = require('iblazingx-commands')
  Constructor(client, {
    mongodb: 'mongodb://myDBReader:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin', // REQUERIDO: URI para connectar a la base de datos MongoDB
    commands_folder: 'commands', // REQUERIDO: Carpeta de comandos (path)
    events_folder: 'events', // REQUERIDO: Carpeta de comandos (path)
    owner: '707462458360463451', // REQUERIDO: Creador del bot (discord id)
    prefix: '!', // OPCIONAL: Prefijo por defecto del bot
    extra_commands: [ // OPCIONAL: Comandos construidos por defecto a añadir en la carpeta de comandos
      "config", // OPCIONAL: Añade esto si quieres añadir este comando a la carpeta de comandos (Te permite modificar las configuraciónes de los comandos)
      "prefix", // OPCIONAL: Añade esto si quieres añadir este comando a la carpeta de comandos (Te permite modificar el prefijo del bot)
      "help" // OPCIONAL: Añade esto si quieres añadir este comando a la carpeta de comandos (Te permite ver todos los comandos y su información)
    ],
    _del: false, // OPCIONAL: Define si borrará el mensaje enviado al ejecutar un comando ( true: si lo borra | false: no lo borra )
    force_prefix: false // OPCIONAL: Define si el prefijo siempre sera el mismo que se defina aquí o no ( true: si lo será | false: no lo será )
   })
 })

Setup (Comandos)

Notas: Los parametros no son necesarios, están puestos ahí para que el autocompletado del editor de codigó te ayude. La variable 'default' y todo lo de adentro es opcional. La variable 'permanent_defaults' y todo lo de adentro es opcional.

ping.js

const { Message, Client } = require('discord.js')

module.exports = {
  default: { // Acá dentro podras establecer los valores por defecto que utilizara para crear la información del comandos en la base de datos (Siempre y cuando esta información no exista)
    aliases: [], // Los aliases del comando, EJ: ["png", "p"] (El comando podra ejecutarse usando: '#ping', '#png' o '#p', '#': prefix del bot)
    description: 'A command', // La descripción que tendra el comando
    arguments: [], // Los argumentos que necesitara el comando, EJ 'tipo:nombre': ["<>:user_id", "[]:comment"] (Tipos: '<>' Argumento requerido | '[]' Argumento opcional)
    disabled_guilds: [], // Los servidores el los que el comando no se podra usar
    enabled_guilds: [], // Los servidores el los que el comando si se podra usar (dejar vacio para que cualquiera lo pueda usar siempre y cuando la dista de 'disabled_guilds' este vacia)
    guilds: {
      disabled: false, // Define si el comando esta 'activo' o 'desactivado'
      cooldown: '-1', // Define el cooldown que te dara el comando al usarlo
      permissions: ['ADMINISTRATOR'], // Define los permisos que te dejaran usar el comando (Si 'permissions', 'roles' y 'users' no continen nada cualquiera podrá usar el comando) (https://discord.com/developers/docs/topics/permissions#permissions-bitwise-permission-flags) 
      roles: [], // Define los roles que te dejaran usar el comando (Si 'permissions', 'roles' y 'users' no continen nada cualquiera podrá usar el comando)
      users: [], // Define los usuarios que podrán usar el comando (Si 'permissions', 'roles' y 'users' no continen nada cualquiera podrá usar el comando)
      whitelisted: [], // Define en que canales se puede usar el comando (Si 'whitelisted' no contiene nada se podrá usar en cualquier canal que no este blacklisteado)
      blacklisted: [], // Define los canales donde no se podrá usar el comando
      bypass_cooldown: [] // Define los usuarios que no les afectara el cooldown
    }
  },

  permanent_defaults: { // Acá podras definir que variables por defecto establecidas anteriormente se mantendran por siempre al momento de actualizar la información del comando en la base de datos.
    aliases: false, // Si esta en true y existe en dentro de la variable 'default' de arriba se mantendra la configuración en el comando por siempre
    description: false, // Si esta en true y existe en dentro de la variable 'default' de arriba se mantendra la configuración en el comando por siempre
    arguments: false, // Si esta en true y existe en dentro de la variable 'default' de arriba se mantendra la configuración en el comando por siempre
    disabled_guilds: false, // Si esta en true y existe en dentro de la variable 'default' de arriba se mantendra la configuración en el comando por siempre
    enabled_guilds: false, // Si esta en true y existe en dentro de la variable 'default' de arriba se mantendra la configuración en el comando por siempre
    guilds: {
      disabled: false, // Si esta en true y existe en dentro de la variable 'default' de arriba se mantendra la configuración en el comando por siempre
      cooldown: false, // Si esta en true y existe en dentro de la variable 'default' de arriba se mantendra la configuración en el comando por siempre
      permissions: false, // Si esta en true y existe en dentro de la variable 'default' de arriba se mantendra la configuración en el comando por siempre
      roles: false, // Si esta en true y existe en dentro de la variable 'default' de arriba se mantendra la configuración en el comando por siempre
      users: false, // Si esta en true y existe en dentro de la variable 'default' de arriba se mantendra la configuración en el comando por siempre
      whitelisted: false, // Si esta en true y existe en dentro de la variable 'default' de arriba se mantendra la configuración en el comando por siempre
      blacklisted: false, // Si esta en true y existe en dentro de la variable 'default' de arriba se mantendra la configuración en el comando por siempre
      bypass_cooldown: false // Si esta en true y existe en dentro de la variable 'default' de arriba se mantendra la configuración en el comando por siempre
    }
  },

  /**
   * @param {Object} data
   * 
   * @param {(user, guild, command)} data.__SetCooldown - Add user to cooldown
   * 
   * @param {Object[]} data.__cooldowns
   * @param {String} data.__cooldowns[].id - User id
   * @param {Object[]} data.__cooldowns[].cooldowns - User cooldowns
   * @param {String} data.__cooldowns[].cooldowns[].id - Server id
   * @param {String} data.__cooldowns[].cooldowns[].command - Command name
   * @param {String} data.__cooldowns[].cooldowns[].time_left - Cooldown left
   * 
   * @param {Object[]} data.__commands
   * @param {String} data.__commands[].name - Command name
   * @param {String} data.__commands[].description - Command description
   * @param {Array} data.__commands[].aliases - Command aliases
   * @param {Array} data.__commands[].arguments - Command arguments
   * @param {Array} data.__commands[].disabled_guilds - Guilds ids
   * @param {Array} data.__commands[].enabled_guilds - Guilds ids
   * @param {Object} data.__commands[].guilds - Guild data
   * @param {String} data.__commands[].guilds.id - Command guild
   * @param {Boolean} data.__commands[].guilds.disabled - Command disabled
   * @param {String} data.__commands[].guilds.cooldown - Command cooldown
   * @param {Array} data.__commands[].guilds.permissions - Permissions allow use command
   * @param {Array} data.__commands[].guilds.roles - Roles allow use command
   * @param {Array} data.__commands[].guilds.users - Users allow use command
   * @param {Array} data.__commands[].guilds.whitelisted - Channels whitelisted
   * @param {Array} data.__commands[].guilds.blacklisted - Channels blacklisteds
   * @param {Array} data.__commands[].guilds.bypass_cooldown - Userss bypass cooldown
   * 
   * @param {Object} data.__command
   * @param {String} data.__command.name - Command name
   * @param {String} data.__command.description - Command description
   * @param {Array} data.__command.aliases - Command aliases
   * @param {Array} data.__command.arguments - Command arguments
   * @param {Array} data.__command.disabled_guilds - Guilds ids
   * @param {Array} data.__command.enabled_guilds - Guilds ids
   * @param {Object} data.__command.guilds - Guild data
   * @param {String} data.__command.guilds.id - Command guild
   * @param {Boolean} data.__command.guilds.disabled - Command disabled
   * @param {String} data.__command.guilds.cooldown - Command cooldown
   * @param {Array} data.__command.guilds.permissions - Permissions allow use command
   * @param {Array} data.__command.guilds.roles - Roles allow use command
   * @param {Array} data.__command.guilds.users - Users allow use command
   * @param {Array} data.__command.guilds.whitelisted - Channels whitelisted
   * @param {Array} data.__command.guilds.blacklisted - Channels blacklisteds
   * @param {Array} data.__command.guilds.bypass_cooldown - Users bypass cooldown
   * 
   * @param {String} data.__prefix - Bot prefix
   * @param {String} data.__owner - Bot owner
   * @param {String} data.__name - Runned command name
   * @param {String[]} data.__args - Special arguments
   * 
   * @param {Client} data.client - Client bot
   * @param {Message} data.message
   * @param {String[]} data.arguments - Command arguments
   */
  callback: async ({
    __SetCooldown,
    __cooldowns,
    __commands,
    __command,
    __prefix,
    __owner,
    __name,
    __args,
    client,
    message,
    args,
  }) => {
    message.channel.send('Pong!')
    
    // NO BORRAR: esto te activa el cooldown del comando al usuario que lo ejecuto (si no esta en la lista que no les afecta el cooldown)
    // NO BORRAR: esto te activa el cooldown del comando al usuario que lo ejecuto (si no esta en la lista que no les afecta el cooldown)
    // NO BORRAR: esto te activa el cooldown del comando al usuario que lo ejecuto (si no esta en la lista que no les afecta el cooldown)
    __SetCooldown(message.author.id, message.guild.id, __command)
  }
}

La función \_\_SetCooldown tiene que estar puesta en la parte final del codigo como muestra el ejemplo del comando ping.js, esto esta echo así para que puedas añadir tus propios errores individuales por comando y que el cooldown no se active hasta que el comando se ejecute sin errores. (Se muestran ejemplos mas abajo)

Ejemplos

Como usar la variable __commands (En este caso para un help)

help.js

module.exports = {
  default: {
    description: 'Un comando que enviara su información a la consola.',
    arguments: [
      "<>:command"
    ],
    guilds: {
      cooldown: '20s'
    }
  },

  permanent_defaults: {
    guilds: {
      cooldown: true
    }
  },
  
  callback: async ({
    __commands,
    client,
    message,
    args,
  }) => {
    var command = args[0]
    
    if (!command) {
      message.reply('Ingresa un comando porfavor.')
    
      return // Esto hara que si no ingreso un comando para ver su información no continue con el codigo, en consecuencia el cooldown del comando no se activara.
    } else if (!__commands.find(cmd => cmd.name === command)) {
      message.reply('El comando ingresado no existe.')
    
      return // Esto hara que si el comando ingresado no existe no continue con el codigo, en consecuencia el cooldown del comando no se activara.
    }
    
    message.channel.send(`Se envio la información del comando '${command}' a la consola!`)
    console.log(__commands.find(cmd => cmd.name === command))
    
    // NO BORRAR: esto te activa el cooldown del comando al usuario que lo ejecuto (si no esta en la lista que no les afecta el cooldown)
    // NO BORRAR: esto te activa el cooldown del comando al usuario que lo ejecuto (si no esta en la lista que no les afecta el cooldown)
    // NO BORRAR: esto te activa el cooldown del comando al usuario que lo ejecuto (si no esta en la lista que no les afecta el cooldown)
    __SetCooldown(message.author.id, message.guild.id, __command)
  }
}

Readme

Keywords

none

Package Sidebar

Install

npm i iblazingx-commands

Weekly Downloads

1

Version

2.2.8

License

ISC

Unpacked Size

111 kB

Total Files

21

Last publish

Collaborators

  • iblazingx