
Product
Introducing Pull Request Stories to Help Security Teams Track Supply Chain Risks
Socket’s new Pull Request Stories give security teams clear visibility into dependency risks and outcomes across scanned pull requests.
Framework para la libreria discord.js
frame-djs es un nuevo framework de la libreria discord.js la cual te permitira interactuar con discord de forma mas ordenada y sencilla.
npm install frame-djs --save
v1.11.0
v1.10.0
v1.7.0
v1.6.0
Client(opciones)
Este constructor servira para instanciar(crear) un bot, debes de usarlo como archivo principal para iniciar el bot.
Parametros | Descripcion |
---|---|
opciones | Esto es un objeto la cual debera de contener 3 propiedades obligatorias. |
opciones.token | Aqui deberas de poner el token de tu bot. |
opciones.comandos | Aqui deberás de poner la ubicacion donde se encuentra la carpeta de tus comandos (tambien detecta comandos en sub directorios), puedes colocar false si no tienes ninguno comando. |
opciones.eventos | Aqui deberás de poner la ubicacion de la carpeta donde estan los eventos, esto es obligatorio. |
Por ejemplo:
const Discord = require("frame-djs");
new Discord.Client({
token: "BOT_TOKEN", //obligatorio
comandos: "./comandos", //puedes colocar false si no tienes nada.
eventos: "./eventos" //obligatorio
})
Nuevos metodos del cliente
Se creó nuevos metodos para el client (client seria la instancia del bot, en otras palabras el bot) las cuales se mostraran a continuacion:
client.tiene_comando(nombre_comando)
Este metodo te permitirá verificar si existe un comando especifico.
En el caso de que tu comando contenga alias, tambien lo verificara.
Parametros | Descripcion |
---|---|
nombre_comando | Aqui deberá de ir el nombre del comando a verificar. |
true
— Si se encontró el comando (existe).false
— Si no se encontró el comando (no existe).client.obtener_comando(nombre_comando)
Este metodo te permitirá obtener un comando especifico.
En el caso de que tu comando contenga alias, tambien lo verificara.
Si no se coloca ningun valor en el parametro nombre_comando, esto regresara un array con los nombres de todos los comandos que actualmente dispones.
Parametros | Opcional | Default | Descripcion |
---|---|---|---|
nombre_comando | Si | none | Aqui deberá de ir el nombre del comando que se quiere obtener. |
object
— Regresa un objeto con las propiedades del comando obtenido, tales como el nombre y otras cosas mas las cuales tu puedes especificar en el constructor Comando.array
— Regresa un array con todos los nombres de los comandos que dispones.false
— Si no se obtuvo nada.Por ejemplo:
//Obteniendo un comando especifico
let comando = client.obtener_comando("ping")
console.log(comando) //{nombre: "ping", etc...}
//Obteniendo todos los comandos
let comandos = client.obtener_comando()
console.log(comandos) //["ping", "etc.."]
client.ejecutar_comando(nombre_comando, ...args)
Este metodo te permitirá ejecutar un comando especifico.
En el caso de que tu comando contenga alias, tambien lo verificara.
Parametros | Descripcion |
---|---|
nombre_comando | Aqui deberá de ir el nombre del comando que se va a ejecutar. |
...args | Aqui deberán de ir los parametros que quieres pasar al comando, es decir, los argumentos que seran usados al momento de evaluar el codigo del comando, los mas comunes son el client, message, args pero puedes colocar los que desees, no hay limites. |
Por ejemplo:
//ejemplo 1
client.ejecutar_comando("ping", client, message, args)
//ejemplo 2
client.ejecutar_comando("ping", client, message, args, prefix, etc)
none
— Esto no retorna nada.client.recargar_comando(nombre_comando)
Este metodo te permitirá recargar un comando especifico.
Si no se coloca ningun valor en el parametro nombre_comando, esto recargará todos tus comandos.
Parametros | Opcional | Default | Descripcion |
---|---|---|---|
nombre_comando | Si | none | Aqui deberá de ir el nombre del comando que se quiere recargar (no alias) |
Por ejemplo:
//ejemplo 1
client.recargar_comando("ping") //recarga el codigo del comando ping
//ejemplo 2
client.recargar_comando() //recarga todos los comandos
true
— Si el o los comandos fueron actualizados correctamente.false
— Si el comando no fue actualizado correctamente.client.tiene_cooldown(nombre_comando, message)
Este metodo te permitirá verificar si un usuario está dentro del cooldown del comando, es decir, si puede o no volver a ejecutar dicho comando.
En el caso de que tu comando contenga alias, tambien lo verificara.
Parametros | Descripcion |
---|---|
nombre_comando | Aqui deberá de ir el nombre del comando a verificar. |
message | Aqui deberá de ir el mensaje que se emite en el evento message. |
miliseconds
— El tiempo restante que le falta para volver a ejecutar el comando (regresa el tiempo en milisegundos).false
— Si el usuario no está dentro del cooldown (quiere decir que sí puede volver a ejecutar el comando).Comando(opciones)
Este constructor servira para crear un comando facilmente, debes de colocarlo en la carpeta donde especificaste la ubicacion de tus comando Client.
Parametros | Descripcion |
---|---|
opciones | Esto es un objeto la cual debera de contener 2 propiedades obligatorias (tambien puedes crear mas, no hay limites). |
opciones.nombre | Aqui deberas de poner el nombre del comando. |
opciones.ejecutar | Aqui deberás de poner una funcion la cual contendrá los parametros que se especificó en el metodo ejecutar_comando (...args). Dentro de esta funcion debes de colocar el codigo que quieres ejecutar. |
Ejemplo #1
//Ejemplo basico
const Discord = require("frame-djs");
module.exports = new Discord.Comando({
nombre: "ping",
ejecutar: (client, message, args) => {
let embed = new Discord.RichEmbed()
embed.setColor("RANDOM")
embed.setDescription(`API ms: ${client.ping}`)
return message.channel.send(embed)
}
})
Propiedades especiales
Se creó propiedades especiales de las cuales puedes hacer uso al momento de crear un comando, son opcionales.
Propiedad | Descripcion |
---|---|
alias | Puedes usar esta propiedad en caso de que quieras que tu comando tenga uno o mas alias, debes de colocar un array que contenga los alias del comando, tambien puedes dejarlo vacio en caso de que quieras que tu comando no contengan ninguno: []. |
disponible | Puedes usar esta propiedad en caso de que quieras deshabilitar un comando (nadie pueda usarlo), debes de colocar false para deshabilitarlo o true para habilitarlo (no es necesario usar esta propiedad en caso de que no quieras deshabilitar el comando). |
cooldown | Esto es un objeto, este objeto contiene 2 propiedades. |
cooldown.tiempo | Aqui deberás de poner el cooldown del comando, es decir, el tiempo de espera para que un usuario pueda volver a ejecutarlo (debes de poner el tiempo en segundos). |
cooldown.permisos | Esto debe ser un array con permisos (ADMINISTRATOR, MANAGE_ROLES, ETC), si el usuario que usó el comando tiene todos estos permisos podrá volver a ejecutar el comando normalmente (será ignorados por el cooldown y no tendrá que esperar). Este array tambien puedes dejarlo vacio []. |
Ejemplo #2
//Ejemplo basico
const Discord = require("frame-djs");
module.exports = new Discord.Comando({
nombre: "ping",
alias: ["ms", "botping"],
cooldown: {
tiempo: 10,
permisos: ["ADMINISTRATOR"]
},
ejecutar: (client, message, args) => {
let embed = new Discord.RichEmbed()
embed.setColor("RANDOM")
embed.setDescription(`API ms: ${client.ping}`)
return message.channel.send(embed)
}
})
Ejemplo #3
//Ejemplo basico
const Discord = require("frame-djs");
module.exports = new Discord.Comando({
nombre: "ping",
alias: ["ms", "botping"],
cooldown: {
tiempo: 10,
permisos: ["ADMINISTRATOR"]
},
disponible: false, //Deshabilitamos el comando, en mantenimiento...
ejecutar: (client, message, args) => {
let embed = new Discord.RichEmbed()
embed.setColor("RANDOM")
embed.setDescription(`API ms: ${client.ping}`)
return message.channel.send(embed)
}
})
Por ejemplo:
//Ejemplo basico
const Discord = require("frame-djs");
module.exports = new Discord.Comando({
nombre: "avatar",
alias: ["av", "foto"],
cooldown: {
tiempo: 5,
permisos: ["ADMINISTRATOR"]
},
descripcion: "Este comando te permite ver el avatar de un usuario.",
categoria: "Informacion",
ejemplo: "avatar @usuario",
ejecutar: (client, message, args) => {
let usuario = message.mentions.members.first() || message.member
let embed = new Discord.RichEmbed()
embed.setColor("RANDOM")
embed.setImage(usuario.user.displayAvatarURL)
return message.channel.send(embed)
}
})
Evento(opciones)
Este constructor servira para crear un evento facilmente, debes de colocarlo en la carpeta donde especificaste la ubicacion de tus eventos Client.
Parametros | Descripcion |
---|---|
opciones | Esto es un objeto la cual debera de contener 2 propiedades obligatorias. |
opciones.nombre | Aqui deberas de poner el nombre del evento. |
opciones.ejecutar | Aqui deberás de poner una funcion la cual contendrá como primer parametro el cliente (client), y luego los parametros que originalmente contiene el evento. En todos los eventos es obligatorio siempre usar el cliente (client) como primer parametro, pongamos de ejemplo el evento message, en su evento esto unicamente recibe el parametro (message), pero en esta version solo deberan de colocar el cliente antes: (client, message), lo mismo si usas otros eventos. |
Ejemplo #1
//Ejemplo basico
const Discord = require("frame-djs");
module.exports = new Discord.Evento({
nombre: "ready",
ejecutar: (client) => {
console.log(`Estoy listo en ${client.guilds.size} servidores!`)
}
})
Ejemplo #2
//Ejemplo basico
const Discord = require("frame-djs");
module.exports = new Discord.Evento({
nombre: "message",
ejecutar: (client, message) => {
if(message.author.bot || message.channel.type == "dm") return;
let prefix = "!!"
let args = message.content.slice(prefix.length).trim().split(/ +/g);
let comando = args.shift();
if(client.tiene_comando(comando)) {
return client.ejecutar_comando(comando, client, message, args)
}
}
})
DiscordUtils()
Este constructor contiene metodos con las cuales podras hacer muchas cosas, son de utilidad.
parse_tiempo(miliseconds, formato, len)
Este metodo te permitirá convertir un numero (debe ser en milisegundos) a un formato de texto donde se muestre el tiempo en formato de fecha, la fecha detecta (años, meses, dias, horas, minutos, segundos) dependiendo del tiempo colocado.
Parametros | Opcional | Default | Descripcion |
---|---|---|---|
miliseconds | Aqui deberá de ir el tiempo a convertir (debe ser en milisegundos). | ||
formato | Aqui deberá de ir un texto que se usará como identificador para colocar la fecha, la palabra reservada para colocar la fecha es {{tiempo}}, puedes colocarlo en el lugar que quieras. | ||
len | Si | "es" | Esto indica el idioma con el que la fecha sera puesta, por default está en "es" (español), si quieres que la fecha salga en ingles, coloca "en", |
string
— Regresa el texto del parametro formato con la fecha.Por ejemplo:
//En español
const Discord = require("frame-djs");
let utils = new Discord.DiscordUtils()
let tiempo = utils.parse_tiempo(65000, "Debes de esperar {{tiempo}} para usar este comando.")
//En ingles
const Discord = require("frame-djs");
let utils = new Discord.DiscordUtils()
let tiempo = utils.parse_tiempo(65000, "You must wait {{tiempo}} to use this command.", "en")
Por ejemplo:
//Ejemplo basico
const Discord = require("frame-djs");
module.exports = new Discord.Evento({
nombre: "message",
ejecutar: (client, message) => {
if(message.author.bot || message.channel.type == "dm") return;
let prefix = "!!"
let args = message.content.slice(prefix.length).trim().split(/ +/g);
let comando = args.shift();
if(client.tiene_comando(comando)) {
let coold = client.tiene_cooldown(comando, message)
if(!coold) { //Si puede volver a ejecutar el comando
return client.ejecutar_comando(comando, client, message, args)
}
//En el caso de que aun tenga que esperar, coold ahora contiene el tiempo de espera en milisegundos
let utils = new Discord.DiscordUtils()
return message.channel.send(utils.parse_tiempo(coold, "Necesitas esperar {{tiempo}} para volver a ejecutar el comando"))
}
}
})
obtener_rol(message, nombre_id)
Este metodo te permitirá obtener un rol ya sea mediante una mencion, nombre o ID.
En el caso de que quieras obtener un rol unicamente mediante una mencion, solo usa el parametro message.
En el caso de que quieras obtener un rol mediante una mencion, nombre o ID, usa el parametro nombre_id
Parametros | Opcional | Default | Descripcion |
---|---|---|---|
message | Aqui deberá de ir el message que se emite en el evento message, se verificará si el mensaje contiene una mencion, esto regresará al primer rol mencionado (si se encuentra). | ||
nombre_id | Si | none | Aqui deberá de ir el nombre o ID del rol, esto se evaluará unicamente si no se mencionó a ningun usuario en el mensaje. |
null
— Regresa null en caso de que no se encontró ningun rol.Por ejemplo:
//Ejemplo basico
const Discord = require("frame-djs");
module.exports = new Discord.Comando({
nombre: "roleinfo",
alias: ["role"],
cooldown: {
tiempo: 10,
permisos: ["ADMINISTRATOR"]
},
ejecutar: (client, message, args) => {
if(!args[0]) return message.channel.send("Menciona un rol o coloca su nombre o ID.")
let utils = new Discord.DiscordUtils()
let rol = utils.obtener_rol(message, args.join(" "))
if(!rol) return message.channel.send("No se encontró ningun rol")
let embed = new Discord.RichEmbed()
embed.setColor(rol.color)
embed.setDescription(`Nombre: ${rol.name}\nID: ${rol.id}`)
return message.channel.send(embed)
}
})
obtener_miembro(message, nombre_id, global)
Este metodo te permitirá obtener un miembro (GuildMember) ya sea mediante una mencion, nombre o ID.
En el caso de que quieras obtener un miembro unicamente mediante una mencion, solo usa el parametro message.
En el caso de que quieras obtener un miembro mediante una mencion, nombre o ID, usa el parametro nombre_id.
En el caso de que quieras obtener un usuario (User) ya sea mediante nombre o ID del cache del cliente, es decir, de la coleccion del client.users, usa el parametro global
Parametros | Opcional | Default | Descripcion |
---|---|---|---|
message | Aqui deberá de ir el message que se emite en el evento message, se verificará si el mensaje contiene una mencion, esto regresará al primer miembro mencionado (si se encuentra). | ||
nombre_id | Si | none | Aqui deberá de ir el nombre o ID del miembro, esto se evaluará unicamente si no se mencionó a ningun miembro en el mensaje. |
global | Si | false | Si quieres obtener a un User del cache del cliente (client.users), puedes colocar true |
null
— Regresa null en caso de que no se encontró ningun miembro/usuario.Por ejemplo:
//Ejemplo basico
const Discord = require("frame-djs");
module.exports = new Discord.Comando({
nombre: "userinfo",
alias: ["user"],
cooldown: {
tiempo: 10,
permisos: ["ADMINISTRATOR"]
},
ejecutar: (client, message, args) => {
if(!args[0]) return message.channel.send("Menciona un miembro o coloca su nombre o ID.")
let utils = new Discord.DiscordUtils()
let usuario = utils.obtener_miembro(message, args.join(" "))
if(!usuario) return message.channel.send("No se encontró ningun usuario.")
let embed = new Discord.RichEmbed()
embed.setColor("RANDOM")
embed.setDescription(`Nombre: ${usuario.user.username}\nID: ${usuario.id}`)
embed.setThumbnail(usuario.user.displayAVatarURL)
return message.channel.send(embed)
}
})
obtener_emoji(message, nombre_id, global)
Este metodo te permitirá obtener un emoji ya sea mediante un nombre o ID.
En el caso de que quieras obtener un emoji del mismo servidor donde se ejecutó el comando, solo usa el parametro message y nombre_id.
En el caso de que quieras obtener un emoji especifico ya sea mediante nombre o ID de la coleccion de todos los emojis a los que el cliente tiene acceso (client.emojis), usa el parametro global
Parametros | Opcional | Default | Descripcion |
---|---|---|---|
message | Aqui deberá de ir el message que se emite en el evento message. | ||
nombre_id | Aqui deberá de ir el nombre o ID del emoji. | ||
global | Si | false | Si quieres obtener un emoji de la coleccion (client.emojis), puedes colocar true |
null
— Regresa null en caso de que no se encontró ningun emoji.Por ejemplo:
//Ejemplo basico
const Discord = require("frame-djs");
module.exports = new Discord.Comando({
nombre: "emoji",
alias: ["em"],
cooldown: {
tiempo: 10,
permisos: ["ADMINISTRATOR"]
},
ejecutar: (client, message, args) => {
if(!args[0]) return message.channel.send("Coloca el nombre o ID de un emoji.")
let utils = new Discord.DiscordUtils()
let emoji = utils.obtener_emoji(message, args.join(" "), true)
if(!emoji) return message.channel.send("No se encontró ningun emoji.")
let embed = new Discord.RichEmbed()
embed.setColor("RANDOM")
embed.setDescription(`Nombre: ${emoji.name}\nID: ${emoji.id}`)
embed.setThumbnail(emoji.url)
return message.channel.send(embed)
}
})
obtener_canal(message, nombre_id, global)
Este metodo te permitirá obtener un canal ya sea mediante una mencion, nombre o ID.
En el caso de que quieras obtener un canal unicamente mediante una mencion, solo usa el parametro message.
En el caso de que quieras obtener un canal mediante una mencion, nombre o ID, usa el parametro nombre_id.
En el caso de que quieras obtener un canal de todos los canales a los que el cliente tiene acceso (client.channels), usa el parametro global
Parametros | Opcional | Default | Descripcion |
---|---|---|---|
message | Aqui deberá de ir el message que se emite en el evento message, se verificará si el mensaje contiene una mencion, esto regresará al primer canal mencionado (si se encuentra). | ||
nombre_id | Si | none | Aqui deberá de ir el nombre o ID del canal, esto se evaluará unicamente si no se mencionó a ningun miembro en el mensaje. |
global | Si | false | Si quieres obtener un canal de la coleccion (client.channels), puedes colocar true |
null
— Regresa null en caso de que no se encontró ningun canal.Por ejemplo:
//Ejemplo basico
const Discord = require("frame-djs");
module.exports = new Discord.Comando({
nombre: "canalinfo",
alias: ["canal"],
cooldown: {
tiempo: 10,
permisos: ["ADMINISTRATOR"]
},
ejecutar: (client, message, args) => {
if(!args[0]) return message.channel.send("Menciona un canal o coloca su nombre o ID.")
let utils = new Discord.DiscordUtils()
let canal = utils.obtener_canal(message, args.join(" "), true)
if(!canal) return message.channel.send("No se encontró ningun canal.")
let embed = new Discord.RichEmbed()
embed.setColor("RANDOM")
embed.setDescription(`Nombre: ${canal.name}\nID: ${canal.id}`)
return message.channel.send(embed)
}
})
permisos(permisos, miembro, len)
Este metodo te permitirá verificar que permisos le falta a un miembro tomando como referencia un array de permisos a verificar.
Esto regresará un array con los permisos faltantes, los nombres de los permisos estaran en español (puedes cambiarlo en el parametro len)
Parametros | Opcional | Default | Descripcion |
---|---|---|---|
permisos | Aqui deberá de ir un array que contenga los permisos que se verificara. | ||
miembro | Aqui deberá de ir un miembro (GuildMember), en el caso de que quieras comprobar los permisos del bot, puedes usar message.guild.me | ||
len | Si | "es" | Esto indica el idioma con el que se regresará el nombre de los permisos faltantes, por default estará en "es" (español), si quieres obtenerlos en ingles, coloca "en" |
array
— Regresa un array con el nombre de los permisos faltantes.Por ejemplo:
//En español
const Discord = require("frame-djs");
let utils = new Discord.DiscordUtils()
let perms = ["MANAGE_ROLES", "KICK_MEMBERS", "MANAGE_CHANNELS"]
if(!message.guild.me.hasPermission(perms)) {
let faltantes = utils.permisos(perms, message.guild.me)
return message.channel.send(`Me faltan tener estos permisos:\n\n${faltantes.join("\n")}`)
}
//En ingles
const Discord = require("frame-djs");
let utils = new Discord.DiscordUtils()
let perms = ["MANAGE_ROLES", "KICK_MEMBERS", "MANAGE_CHANNELS"]
if(!message.guild.me.hasPermission(perms)) {
let faltantes = utils.permisos(perms, message.guild.me, "en")
return message.channel.send(`I'm missing having these permissions:\n\n${faltantes.join("\n")}`)
}
esObject(elemento)
Este metodo te permitirá verificar si un elemento es un objeto.
Parametros | Descripcion |
---|---|
elemento | Aqui deberá de ir el elemento que se verificara. |
true
— Si es un objeto (object)false
— Si no es un objeto (object)Por ejemplo:
const Discord = require("frame-djs");
let utils = new Discord.DiscordUtils()
let elem = "frase del dia"
let elem2 = {
type: 1
}
console.log(utils.esObject(elem)) //retorna false
console.log(utils.esObject([])) //retorna false
console.log(utils.esObject(["1", {pedro: "12"}])) //retorna false
console.log(utils.esObject(5)) //retorna false
console.log(utils.esObject({type: 5})) //retorna true
console.log(utils.esObject(elem2)) //retorna true
esArray(elemento)
Este metodo te permitirá verificar si un elemento es un array.
Parametros | Descripcion |
---|---|
elemento | Aqui deberá de ir el elemento que se verificara. |
true
— Si es un arrayfalse
— Si no es un arrayPor ejemplo:
const Discord = require("frame-djs");
let utils = new Discord.DiscordUtils()
let elem = "frase del dia"
let elem2 = ["5", "5", ["asd2"]]
console.log(utils.esArray(elem)) //retorna false
console.log(utils.esArray([])) //retorna true
console.log(utils.esArray(5)) //retorna false
console.log(utils.esArray({type: 5})) //retorna false
console.log(utils.esArray(elem2)) //retorna true
esFloat(elemento)
Este metodo te permitirá verificar si un elemento es un flotante (numero).
Parametros | Descripcion |
---|---|
elemento | Aqui deberá de ir el elemento que se verificara. |
true
— Si es un flotantefalse
— Si no es un flotantePor ejemplo:
const Discord = require("frame-djs");
let utils = new Discord.DiscordUtils()
let elem = "frase del dia"
let elem2 = "12.6"
let elem3 = 1.6
console.log(utils.esFloat(elem)) //retorna false
console.log(utils.esFloat([])) //retorna false
console.log(utils.esFloat(5)) //retorna false
console.log(utils.esFloat({type: 5})) //retorna false
console.log(utils.esFloat(elem2)) //retorna true
console.log(utils.esFloat(elem3)) //retorna true
esNum(elemento)
Este metodo te permitirá verificar si un elemento es un numero.
Parametros | Descripcion |
---|---|
elemento | Aqui deberá de ir el elemento que se verificara. |
true
— Si es un numerofalse
— Si no es un numeroPor ejemplo:
const Discord = require("frame-djs");
let utils = new Discord.DiscordUtils()
let elem = "frase del dia"
let elem2 = "12.6"
let elem3 = 1.6
console.log(utils.esNum(elem)) //retorna false
console.log(utils.esNum([])) //retorna false
console.log(utils.esNum(5)) //retorna true
console.log(utils.esNum({type: 5})) //retorna false
console.log(utils.esNum(elem2)) //retorna true
console.log(utils.esNum(elem3)) //retorna true
console.log(utils.esNum(true)) //retorna false
console.log(utils.esNum(false)) //retorna false
unir_array(primero, ...args)
Este metodo te permitire unir los elementos de dos o mas arrays tomando como punto principal el primer array del parametro primero, esto te regresa un nuevo array sin modificar ninguno de ellos.
Parametros | Descripcion |
---|---|
primero | Aqui deberá de ir el array donde se uniran los elementos de los demas arrays. |
...args | Aqui deberá de ir los parametros(arrays) que quieres unir al array del parametro primero, no hay limite. |
array
— Regresa un nuevo array con todos los elementos.Por ejemplo:
const Discord = require("frame-djs");
let utils = new Discord.DiscordUtils()
let array1 = ["mario", "pedro", "juan"]
let array2 = [1, 2, 3, 4]
let array3 = [[2, 4], {type: 1}]
let nuevo_array = utils.unir_array(array, array2, array3)
console.log(nuevo_array) // ["mario", "pedro", "juan", 1, 2, 3, 4, [2, 4], {type: 1}]
console.log(array1) // ["mario", "pedro", "juan"]
console.log(array2) // [1, 2, 3, 4]
console.log(array3) // [[2, 4], {type: 1}]
unir_object(primero, ...args)
Este metodo te permitire unir las propiedades de dos o mas objetos tomando como punto principal el primer objeto del parametro primero, esto te regresa un nuevo objeto sin modificar ninguno de ellos.
Parametros | Descripcion |
---|---|
primero | Aqui deberá de ir el objeto donde se uniran las propiedades de los demas objetos. |
...args | Aqui deberá de ir los parametros(objetos) que quieres unir al objeto del parametro primero, no hay limite. |
object
— Regresa un nuevo objeto con todas las propiedades.Por ejemplo:
const Discord = require("frame-djs");
let utils = new Discord.DiscordUtils()
let objeto1 = {nombre: "MegaStar"}
let objeto2 = {juego: "paladins", nivel: 15}
let objeto3 = {items: {status: true}}
let nuevo_objeto = utils.unir_object(objeto1, objeto2, objeto3)
console.log(nuevo_objeto)
/*
{
"nombre": "MegaStar",
"juego": "paladins",
"nivel": 15,
"items": {
"status": true
}
}
*/
console.log(objeto1) // {"nombre": "MegaStar"}
console.log(objeto2) // {"juego": "paladins", "nivel": 15}
console.log(objeto3) // {"items": {"status": true}}
math(simbolo, ...args)
Este metodo te permite hacer una operacion matematica rapidamente.
Parametros | Descripcion |
---|---|
simbolo | Aqui deberá de ir el simbolo de la operacion que quieres hacer, el simbolo "*" es para multiplicar, el simbolo "+" para sumar, el simbolo "-" para restar y el simbolo "/" para dividir. |
...args | Aqui deberá de ir los parametros(numeros) que quieres usar en la operacion que especificaste en el parametro simbolo, en el caso de la division, solo se tomara 2 numeros, en el caso de la suma, restar y multiplicacion puedes usar los numeros que quieras, no hay limite. |
numero
— Regresa el resultado de la operacion empleada.Por ejemplo:
const Discord = require("frame-djs");
let utils = new Discord.DiscordUtils()
let suma = utils.math("+", 1, 10, "15", 2)
console.log(suma) //retorna 28
let resta = utils.math("+", 50, 4, "2", 9, 3)
console.log(resta) //retorna 32
let multiplicacion = utils.math("*", 5, 34, "13")
console.log(multiplicacion) //retorna 2210
let division = utils.math("/", 124, 12)
console.log(division) //retorna 10,3333333
verificar_array(elemento)
Este metodo te permitirá verificar si algun elemento se repite en un array.
Parametros | Descripcion |
---|---|
elemento | Aqui deberá de ir un array, se verificará si algun elemento de este array se repite. |
true
— Si un elemento del array se repite.false
— Si ningun elemento del array se repite.Por ejemplo:
const Discord = require("frame-djs");
let utils = new Discord.DiscordUtils()
let array1 = ["🍇", "🍎", "megastar", "🍎"]
let array2 = ["🍇", "🍎", "🍌", "🍏"]
let array3 = ["mario", "juan", "pedro", "moder"]
console.log(utils.verificar_array(array1)) //retorna true
console.log(utils.verificar_array(array2)) //retorna false
console.log(utils.verificar_array(array3)) //retorna false
split_texto(texto, longitud, caracter)
Este metodo te permitirá dividir una cadena de texto en una lontigud especifica, el texto sera dividido en la longitud que especificaste y las partes divididas seran almacenados en un array.
Esto puedes usarlo para mandar un texto con mas de 2000 lineas en un mensaje/embed.
Parametros | Opcional | Default | Descripcion |
---|---|---|---|
texto | Aqui deberá de ir el texto que sera dividido. | ||
longitud | Si | 1024 | Aqui deberá de ir la longitud(numero) maxima de caracteres por mensaje (por default es 1024). |
caracter | Si | \n | Aqui debera de ir el simbolo que se usara como identificador para separar la cadena de texto del parametro texto, por default es \n. |
Array
— Regresa un array ordenado con el texto dividio.Por ejemplo:
const Discord = require("frame-djs");
let utils = new Discord.DiscordUtils()
let lyric = `This was all you, none of it me
You put your hands on, on my body and told me
Mmm
You told me you were ready
For the big one, for the big jump
I'd be your last love everlasting you and me
Mmm
That was what you told me
I'm giving you up
I've forgiven it all
You set me free
Send my love to your new lover
Treat her better
We've gotta let go of all of our ghosts
We both know we ain't kids no more
Send my love to your new lover
Treat her better
We've gotta let go of all of our ghosts
We both know we ain't kids no more
I was too strong, you were trembling
You couldn't handle the hot heat rising (rising)
Mmm
Baby, I'm still rising
I was running, you were walking
You couldn't keep up, you were falling down (down)
Mmm
There's only one way down
I'm giving you up
I've forgiven it all
You set me free, oh
Send my love to your new lover
Treat her better
We gotta let go of all of our ghosts
We both know we ain't kids no more
Send my love to your new lover
Treat her better
We've gotta let go of all of our ghosts
We both know we ain't kids no more...`
let mensajes = utils.split_texto(lyric, 500)
console.log(mensajes)
/*
En el caso de que quieras mandar un mensaje que contenga mas de 2000 caracteres en un embed (setDescription solo puede contener 2024 caracteres)
puedes hacerlo de la siguiente manera:
let mensajes = utils.split_texto(lyric, 2000)
for(var texto of mensajes) {
let embed = new Discord.RichEmbed()
embed.setColor("GREEN")
embed.setDescription(texto)
message.channel.send(embed)
}
*/
snowflake(id)
Este metodo te permitirá obtener la fecha de creacion de una ID (snowflake).
Parametros | Descripcion |
---|---|
id | Aqui deberá de ir el ID a convertir. |
Object
— Regresa un objeto con 6 propiedades: (año, mes, dia, hora, minuto, segundo) y el valor de estas propiedades contienen la fecha en formato de numero.Por ejemplo:
const Discord = require("frame-djs");
let utils = new Discord.DiscordUtils()
let fecha = utils.snowflake("292092693377712128")
console.log(fecha)
/*
{
"año": "2017",
"mes": "03",
"dia": "17",
"hora": "00",
"minuto": "32",
"segundo": "04"
}
*/
console.log(`${fecha.dia}/${fecha.mes}/${fecha.año} - ${fecha.hora}:${fecha.minuto}:${fecha.segundo}`)
// 17/03/2017 - 00:32:04
PageEmbed(message, modo)
Este constructor contiene metodos con las cuales podras hacer paginas con embeds usando emojis ya sean del mismo discord o personalizados.
Parametros | Opcional | Default | Descripcion |
---|---|---|---|
message | Aqui deberá de ir el message que se emite en el evento message. | ||
modo | Si | "seleccion" | Aqui deberas de poner el modo de la pagina, el modo "seleccion" sirve para hacer que se muestre un embed especifico con un emoji correspondiente, el modo "pagina" sirve para hacer que se recorran varios embeds como si fueran una especie de libro (por default esto estarà en el modo "seleccion") |
Por ejemplo:
//Estilo "seleccion"
let pagina_estilo1 = new Discord.PageEmbed(message)
//Estilo "pagina"
let pagina_estilo2 = new Discord.PageEmbed(message, "pagina")
paginas(objeto)
Si el modo del constructor PageEmbed es "seleccion", el valor del parametro objeto debe ser un objeto, de lo contrario si el modo es "pagina", debe ser un array.
Parametros | Descripcion |
---|---|
objeto | Como se menciono anteriormente, en el caso de que el modo sea "seleccion", debes de colocar un objeto que contenga como clave(key) el emoji y como valor(value) el embed que se mostrará cuando se reaccione a ese emoji, el emoji puede ser del mismo discord o una ID de un emoji personalizado, el numero maximo de emojis/embeds es de 20. Si el modo es "pagina", debes de colocar un array la cual contenga los embeds que se mostraran (no hay limite de embeds). |
Por ejemplo:
//En el modo "seleccion"
const Discord = require("frame-djs");
let seleccion_p = new Discord.PageEmbed(message)
seleccion_p.paginas({
"🍇": embed1, //El embed lo puedes construir con el constructor RichEmbed()
"🍎": embed2, //El embed lo puedes construir con el constructor RichEmbed()
"600778889463201834": embed3 //El embed lo puedes construir con el constructor RichEmbed()
})
//En el modo "pagina"
const Discord = require("frame-djs");
let seleccion_p = new Discord.PageEmbed(message, "pagina")
seleccion_p.paginas([embed1, embed2, embed3, embed4]) //Los embeds puedes construirlo con el constructor RichEmbed()
emojis(array)
Este metodo unicamente funcionará si el modo del constructor PageEmbed es "pagina".
Parametros | Descripcion |
---|---|
array | Aqui deberá de ir un array con 3 emojis, el primero emoji se usará para retroceder una pagina, el segundo emoji se usará para eliminar las paginas(cancelar) y el tercer emoji se usará para avanzar de pagina, debes de colocar obligatoriamente 3 emojis, los emojis pueden ser del mismo Discord o una ID de un emoji personalizado. |
Por ejemplo:
//En el modo "pagina"
const Discord = require("frame-djs");
let seleccion_p = new Discord.PageEmbed(message, "pagina")
seleccion_p.paginas([embed1, embed2, embed3, embed4]) //Los embeds puedes construirlo con el constructor RichEmbed()
seleccion_p.emojis(["⬅", "607390384074653716", "➡"]) //Aqui tambien estoy usando una ID de un emoji.
//⬅ para retroceder de pagina
// 607390384074653716 para eliminar las paginas(cancelar)
//➡ para avanzar de pagina
tiempo(miliseconds)
Este metodo te permite ponerle un tiempo especifico a tus paginas que hiciste con los embeds, es decir, pasando el tiempo que especificaste, ya no se podra cambiar de pagina, practicamente esto le pone una duracion (por default el tiempo de duracion es de 60000 = 1 minuto)
Parametros | Descripcion |
---|---|
miliseconds | Aqui deberá de ir el tiempo de duracion que tendra tu pagina (el tiempo debe ser en milisegundos) |
Por ejemplo:
//En el modo "seleccion"
const Discord = require("frame-djs");
let seleccion_p = new Discord.PageEmbed(message)
seleccion_p.paginas({
"🍇": embed1,
"🍎": embed2,
"600778889463201834": embed3
})
seleccion_p.tiempo(30000) //Solo durará 30 segundos
//En el modo "pagina"
const Discord = require("frame-djs");
let seleccion_p = new Discord.PageEmbed(message, "pagina")
seleccion_p.paginas([embed1, embed2, embed3, embed4])
seleccion_p.emojis(["⬅", "607390384074653716", "➡"])
seleccion_p.tiempo(30000) //Solo durará 30 segundos
eliminar(boolean)
Este metodo te permite eliminar el mensaje que contiene las paginas una vez que la duracion haya terminado, por default esto está en false (no se eliminara)
Parametros | Descripcion |
---|---|
boolean | Puedes colocar true si quieres que el mensaje que contiene las paginas se eliminen una vez que el tiempo de duracion haya terminado, de lo contrario false (no es necesario usar este metodo si no quieres eliminar el mensaje) |
Por ejemplo:
//En el modo "seleccion"
const Discord = require("frame-djs");
let seleccion_p = new Discord.PageEmbed(message)
seleccion_p.paginas({
"🍇": embed1,
"🍎": embed2,
"600778889463201834": embed3
})
seleccion_p.tiempo(30000)
seleccion_p.eliminar(true) //El mensaje se eliminará cuando el tiempo haya terminado
//En el modo "pagina"
const Discord = require("frame-djs");
let seleccion_p = new Discord.PageEmbed(message, "pagina")
seleccion_p.paginas([embed1, embed2, embed3, embed4])
seleccion_p.emojis(["⬅", "607390384074653716", "➡"])
seleccion_p.tiempo(30000)
seleccion_p.eliminar(true) //El mensaje se eliminará cuando el tiempo haya terminado
enviar()
Este metodo servira para enviar el mensaje con las paginas, recuerda que siempre debe ir al final de todos los metodos nombrados anteriormente.
Por ejemplo:
//En el modo "seleccion"
const Discord = require("frame-djs");
let seleccion_p = new Discord.PageEmbed(message)
seleccion_p.paginas({
"🍇": embed1,
"🍎": embed2,
"600778889463201834": embed3
})
seleccion_p.tiempo(30000)
seleccion_p.eliminar(true)
return seleccion_p.enviar()
//En el modo "pagina"
const Discord = require("frame-djs");
let seleccion_p = new Discord.PageEmbed(message, "pagina")
seleccion_p.paginas([embed1, embed2, embed3, embed4])
seleccion_p.emojis(["⬅", "607390384074653716", "➡"])
seleccion_p.tiempo(30000)
seleccion_p.eliminar(true)
return seleccion_p.enviar()
Ejemplo usando el metodo "seleccion"
const Discord = require("frame-djs");
module.exports = new Discord.Comando({
nombre: "pagina1",
alias: [],
cooldown: {
tiempo: 10,
permisos: ["ADMINISTRATOR"]
},
ejecutar: (client, message, args) => {
let p_1 = new Discord.RichEmbed()
p_1.setDescription("Esta es la pagina 1")
p_1.setColor("GREEN")
p_1.setFooter("Hola mundo")
let p_2 = new Discord.RichEmbed()
p_2.setDescription("Esta es la pagina 2")
p_2.setColor("BLUE")
p_2.setFooter("MegaStar")
let p_3 = new Discord.RichEmbed()
p_3.setDescription("Esta es la pagina 3")
p_3.setColor("RED")
p_3.setFooter("usa frame-djs")
let seleccion_p = new Discord.PageEmbed(message)
seleccion_p.paginas({
"🍇": p_1,
"🍎": p_2,
"🍌": p_3
})
seleccion_p.tiempo(30000)
seleccion_p.eliminar(true)
return seleccion_p.enviar()
}
})
FAQs
framework de la libreria discord.js
We found that frame-djs demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket’s new Pull Request Stories give security teams clear visibility into dependency risks and outcomes across scanned pull requests.
Research
/Security News
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.