npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

iblazingx-commands

v2.2.8

Published

Un paquete para facilitar la construcción de comandos en discord.js. ESTE PAQUETE NO ESTA CONSTRUIDO PARA USO PUBLICO, ES MÁS PARA USO PERSONAL, SI LO USAN IGUALMENTE SERA BAJO SU RESPONSABILIDAD.

Downloads

4

Readme

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%[email protected]: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)
  }
}