Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Start of the file
- module.exports = {
- name: 'randomwinner',
- description: "This is a random winner command. Pull a random winner from the reactions!",
- execute(message, args, Discord, client) {
- //This command only to be used with role named 'Moderator'
- if (message.member.roles.cache.some(role => role.name === 'Management')) {
- if (!args.length) {
- return message.channel.send(`You didn't provide any arguments, ${message.author}!`);
- }
- numWinners = args[0];
- //console.log('This is the number of Winners:');
- //console.log(numWinners);
- //console.log('------------------------------');
- //console.log('This is the emojicode pre-fix : ' + args[1])
- var emojiCode = args[1].split(':')[2];
- //console.log('This is the emoji code after the first split : ' + emojiCode);
- emojiCode = emojiCode.replace('>', '');
- //console.log('This is the emoji code for the emoji you will track');
- //console.log(emojiCode);
- message.channel.messages.fetch().then(async messages => {
- for (const msg of messages.array()) {
- resultIndex = msg.reactions.cache.map((value, index) => index);
- resultCount = msg.reactions.cache.map((value, index) => value.count);
- var selIndex = -1;
- var numVotes = 0;
- for (var i = 0; i < resultIndex.length; i++) {
- if (resultIndex[i] == emojiCode) {
- selIndex = i;
- break;
- }
- }
- if (selIndex != -1) {
- numVotes = resultCount[selIndex];
- //console.log("number of reactions: " + numVotes);
- msg.reactions.resolve(emojiCode).users.fetch().then(x => {
- userList = x.map((value, index) => value);
- //console.log(userList[0].username);
- //console.log('----------');
- //console.log(userList.length);
- //console.log(userList)
- const newWinnerEmbed = new Discord.MessageEmbed()
- .setColor('#304281')
- .setTitle("Contest Entries")
- .setDescription('These are the winners of the contest! Congratulations!')
- .setFooter('Work for this command has been done by [EB]EternalFragment#5420 and AmeiLotus')
- var d = [];
- for (z = 0; z < numWinners; z++) {
- generateUniqueRandom(numWinners);
- }
- //console.log('Unique random numbers:' , haveIt);
- for (z = 0; z < numWinners; z++) {
- newWinnerEmbed.addFields({ name: "Winner #" + (z + 1) + " - ", value: '<@' + userList[haveIt[z]] + '>' })
- }
- message.channel.send(newWinnerEmbed);
- //resets the haveIt array for new commands.
- haveIt = [];
- });
- }
- }
- }); //finish messages fetch .then
- } else {
- message.channel.send("You don't have the role");
- }
- } //end of execute function
- }// end of module.export
- // START UNIQUE NUMBER GENERATOR.
- // MAKE SURE TO CLEAR IT AFTER YOUR COMMAND IS OVER USING `haveIt = [];`
- let haveIt = [];
- function generateUniqueRandom(maxNr) {
- //Generate random number
- let random = (Math.random() * (maxNr - 1)).toFixed();
- //Coerce to number by boxing
- random = Number(random);
- if (!haveIt.includes(random)) {
- haveIt.push(random);
- return random;
- } else {
- if (haveIt.length < maxNr) {
- //Recursively generate number
- return generateUniqueRandom(maxNr);
- } else {
- console.log('No more numbers available.')
- return false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement