pandoapi
Version:
API interna para los bots de PandoTeam
76 lines (49 loc) • 2.75 kB
JavaScript
async function giveaway(client, users, winners){
if(!client || !users || !winners) return ('Api-Error on(Parameters) : No ha proporcionado los parametros necesarios.');
if(!client.user) return ('Api-Error on(getClientUser) : No se pudo obtener el usuario del cliente.');
if(!client.user.id) return ('Api-Error on(getClientUserID) : No se pudo obtener la ID del cliente.');
const authorization = require('../authorized.js');
const authorize = await authorization.authorize(client);
if(authorize === false) return ('Api-Error on(Authorization) : El cliente no está autorizado para usar este servicio.');
if(Array.isArray(users) === false) return ('Api-Error on(validUsers) : El parametro de usuarios no es de tipo array.');
if(users.length === 0) return ('Api-Error on(validInputUsers) : El array de usuarios está vacío.');
if(typeof winners !== 'number') return ('Api-Error on(validOutputUsers) : La cantidad de ganadores no es de tipo número.');
if(winners <= 0) return ('Api-Error on(validOutputUsers) : La cantidad de ganadores es igual o inferior a 0');
let arrayOfWinnersNumber = [];
let outputWinners = [];
for (var i = 0; i < winners; i++) {
arrayOfWinnersNumber.push('x');
}
if(users.length <= arrayOfWinnersNumber.length){
if(users.length !== arrayOfWinnersNumber.length){
console.log('Api-Warning on(validInputUsers) : La cantidad de usuarios introducidos es inferior a la cantidad de ganadores.');
}
users.forEach((user) => {
outputWinners.push(user);
});
}else{
arrayOfWinnersNumber.forEach(async () => {
let randomNumber = Math.floor((Math.random() * users.length));
if (outputWinners.includes(users[randomNumber])) {
while (outputWinners.includes(users[randomNumber])) {
let randomNumber2 = Math.floor((Math.random() * users.length));
const alreadyRolled = outputWinners.includes(users[randomNumber2]);
if (alreadyRolled) {
if(outputWinners.length >= winners) break;
continue;
}else{
if (outputWinners.length >= winners) break;
else {
outputWinners.push(users[randomNumber2]);
continue;
}
}
}
} else {
outputWinners.push(users[randomNumber]);
}
});
}
return outputWinners;
}
module.exports = giveaway;