economía: gestionar monedas

Mostrar los datos de economía de un usuario:

Usamos la función verMonedas() para obtener los datos de economía del usuario.

if(command === 'monedas') {
dg.economia.verMonedas(message.author.id, (monedas) => {
message.channel.send('Tienes '+ monedas.cantidad+ ' monedas.');
});
}

Agregar monedas a un usuario mencionado:

Usamos la función editMonedas() para editar y aumentar las monedas de un usuario mencionando.

if(command === 'agregar') {
//validamos el comando para que solo sea usado por los usuarios con la
//jerarquia mas alta dentro de un servidor 'ADMINISTRATOR', y el creador del servidor.
let permiso = message.member.hasPermission("ADMINISTRATOR");
// si el usuario no tiene los permisos suficientes retorna un mensaje
if (!permiso) return message.channel.send('No tienes permisos suficientes.');
let mencionado = message.mentions.members.first();
if (!mencionado) return message.channel.send('Debe mencionar a un usuario.');
// creamos una variable para obtener los argumentos despues del usuario mencionado.
let cantidad = args.slice(1).join(' ');
if (!cantidad) return message.channel.send('Debe ingresar una cantidad.')
dg.economia.editMonedas(mencionado.id, cantidad, (nCantidad) => {
message.channel.send(mencionado.user.username+' ahora tienes '+ nCantidad+ ' monedas.')
})
}

Quitar monedas a un usuario mencionado:

Usamos la función editMonedas() para editar y restar las monedas de un usuario mencionado.

if(command === 'quitar') {
//validamos el comando para que solo sea usado por los usuarios con la
//jerarquia mas alta dentro de un servidor 'ADMINISTRATOR', y el creador del servidor.
let permiso = message.member.hasPermission("ADMINISTRATOR");
// si el usuario no tiene los permisos suficientes retorna un mensaje
if (!permiso) return message.channel.send('No tienes permisos suficientes.');
let mencionado = message.mentions.members.first();
if (!mencionado) return message.channel.send('Debe mencionar a un usuario.');
// creamos una variable para obtener los argumentos despues del usuario mencionado.
let cantidad = args.slice(1).join(' ');
if (!cantidad) return message.channel.send('Debe ingresar una cantidad.')
dg.economia.editMonedas(mencionado.id, -cantidad, (nCantidad) => {
message.channel.send(mencionado.user.username+' ahora tienes '+ nCantidad+ ' monedas.')
})
}

Listar a los usuarios con mayor cantidad de monedas:

Listamos a los usuarios con mayor cantidad de monedas en el tipo de mensaje embed según la cantidad solicitada.

if(command === 'tmonedas'){
let text = args.join(' ');
let cantidad = text;
let userv = '';
if (!text) { // si la cantidad a listar no fue enviado, el listado sera de 10 filas.
cantidad = 10
}
let embed = new Discord.RichEmbed()
dg.economia.verTop(cantidad, (lista) =>{
let user = client.users.get(lista.id);
// verificamos si el usuario fue encontrado.
if (!user) {
userv = `${lista.id} no encontrado.`
} else {
userv = user.tag
}
// por cada fila solicitada se agregara un fila nueva del embed con los datos
// encontrados de un usuario.
embed.addField(userv, 'Monedas: '+ lista.cantidad)
});
// Como usamos 'callback' para retornar los datos por filas
// no tienen un orden de ejecución y en algunos casos puede dar el resultado vacio.
// para evitar ese resultado, usamos setTimeout(), con el tiempo de un segundo
// para que envie la lista ya recargada con los datos en el embed.
setTimeout(() => {
message.channel.send(embed)
}, 1000);
}

Transferir monedas de un usuario a otro mencionando:

Usamos la función transferirMonedas() para transferir monedas de un usuario a otro mencionándolo.

if(command === 'transferir'){
let mencionado = message.mentions.members.first();
if (!mencionado) return message.channel.send('Debe mencionar a un usuario.')
let cantidad = args.slice(1).join(' ');
if (!cantidad) return message.channel.send('Debe ingresar una cantidad.')
dg.economia.transferirMonedas(message.author.id, mencionado.id, cantidad, (resp) => {
if(resp){
//si la transferencia fue correcta al usuario mencionado, retornara verdadero.
message.channel.send('La transferencia fue un exito.')
} else {
// si la cantidad del usuario a trasferir es menor a su cantidad actual de sus monedas, retornara falso.
message.channel.send('Tienes pocas monedas.')
}
});
}

Monedas diarias por usuario:

Usamos la función monedasDiarias() para otorgar monedas adicionales por usuario.

if(command === 'diario'){
dg.economia.monedasDiarias(message.author.id, 100, (resp, tiempo) =>{
if (resp) {
message.channel.send('Listo recogiste tus 100 monedas diarias.')
} else {
//El parametro (tiempo) retorna 3 objetos:
// 'horas', 'minutos' y 'segundos' del tiempo restante.
message.channel.send('Te faltan: '+ tiempo.horas+' horas '+tiempo.minutos+' minutos y '+ tiempo.segundos+' segundos, para recibir tus monedas diarias nuevamente')
}
});
}