Advertisement
jensie1996

Gievaway command discord bot

Jul 6th, 2019
4,880
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const discord = require("discord.js");
  2.  
  3. module.exports.run = async (bot, message, args) => {
  4.  
  5.     // Argumenten die we later nodig hebben.
  6.     var item = "";
  7.     var time;
  8.     var winnerCount;
  9.  
  10.     // Nakijken als je perms hebt om dit command te doen.
  11.     if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("Sorry jij kan dit niet doen");
  12.  
  13.     // !giveaway aantalWinnaars seconden itemOmTeWinnen.
  14.  
  15.     // Aantal winnaars opvragen.
  16.     winnerCount = args[0];
  17.     // Tijd hoelang het moet duren.
  18.     time = args[1];
  19.     // Welke prijs men kan winnen.
  20.     item = args.splice(2, args.length).join(' ');
  21.  
  22.     // Verwijder het bericht dat net is gemaakt door de gebruiker.
  23.     message.delete();
  24.  
  25.     // Verval datum berekenen.
  26.     var date = new Date().getTime();
  27.     var dateTime = new Date(date + (time * 1000));
  28.  
  29.     // Maak embed aan.
  30.     var giveawayEmbed = new discord.RichEmbed()
  31.         .setTitle("🎉 **GIVEAWAY** 🎉")
  32.         .setFooter(`Vervalt: ${dateTime}`)
  33.         .setDescription(item);
  34.  
  35.     // Verzend embed en zet de reactie op de popper.
  36.     var embedSend = await message.channel.send(giveawayEmbed);
  37.     embedSend.react("🎉");
  38.  
  39.     // Zet een timeout die na het aantal seconden af gaat.
  40.     setTimeout(function () {
  41.  
  42.         // Argumenten die we nodig hebben.
  43.         var random = 0;
  44.         var winners = [];
  45.         var inList = false;
  46.  
  47.         // Verkrijg de gebruikers die gereageerd hebben op de giveaway.
  48.         var peopleReacted = embedSend.reactions.get("🎉").users.array();
  49.  
  50.         // Hier gaan we al de mensen over gaan en kijken als de bot er tussen staan
  51.         // De bot moeten we uit de lijst weghalen en dan gaan we verder.
  52.         for (var i = 0; i < peopleReacted.length; i++) {
  53.             if (peopleReacted[i].id == bot.user.id) {
  54.                 peopleReacted.splice(i, 1);
  55.                 continue;
  56.             }
  57.         }
  58.  
  59.         // Hier kijken we na als er wel iemand heeft meegedaan.
  60.         if (peopleReacted.length == 0) {
  61.             return message.channel.send("Niemand heeft gewonnen dus de bot wint.");
  62.         }
  63.  
  64.         // Tijdelijk kijken we na als er te wienig mensen hebben mee gedaan aan de wedstrijd.
  65.         if (peopleReacted.length < winnerCount) {
  66.             return message.channel.send("Er zijn te weinig mensen die mee deden daarom heeft de bot gewonnen.");
  67.         }
  68.  
  69.         // Voor het aantal winnaars dat we eerder hebben opgegeven gaan we een random nummer aanmaken en de user in een array zetten.
  70.         for (var i = 0; i < winnerCount; i++) {
  71.  
  72.             inList = false;
  73.  
  74.             // Aanmaken van een random getal zodat we een user kunnen kiezen.
  75.             random = Math.floor(Math.random() * peopleReacted.length);
  76.  
  77.             // Als een winnaar al voorkomt in de winnaars lijst dan moeten we opnieuw gaan zoeken naar een andere winnaar.
  78.             for (var y = 0; y < winners.length; y++) {
  79.                 // Nakijken als de geslecteerde winnaar al in de lijst zit.
  80.                 if (winners[y] == peopleReacted[random]) {
  81.                     // We zetten i 1 minder zodat we opnieuw kunnen doorgaan in de lijst.
  82.                     i--;
  83.                     // We zetten dit op true zodat we weten dat deze al in de lijst zit.
  84.                     inList = true;
  85.                     break;
  86.                 }
  87.             }
  88.  
  89.             // Zit deze niet in de lijst gaan we deze toevoegen.
  90.             if (!inList) {
  91.                 winners.push(peopleReacted[random]);
  92.             }
  93.  
  94.         }
  95.  
  96.         // Voor iedere winnaar gaan we een bericht sturen.
  97.         for (var i = 0; i < winners.length; i++) {
  98.             message.channel.send("Proficiat " + winners[i] + `! Je hebt gewonnen **${item}**.`);
  99.         }
  100.  
  101.     }, 1000 * time);
  102.  
  103.  
  104. }
  105.  
  106. module.exports.help = {
  107.     name: "giveaway",
  108.     description: "Start een giveaway"
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement