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
6
Readme
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) } }