Advertisement
atm959

a

Apr 21st, 2020
1,011
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var discord = require("discord.io");
  2. var logger = require("winston");
  3. var auth = require("./auth.json");
  4.  
  5. logger.remove(logger.transports.Console);
  6. logger.add(new logger.transports.Console, {
  7.     colorize: true
  8. });
  9. logger.level = "debug";
  10.  
  11. var bot = new discord.Client({
  12.     token: auth.token,
  13.     autorun: true
  14. });
  15.  
  16. bot.on("ready", function(event){
  17.     logger.info("Connected");
  18.     logger.info("Logged in as: ");
  19.     logger.info(bot.username + " - (" + bot.id + ")");
  20. });
  21.  
  22. var numEmoteNames = [
  23.     "one",
  24.     "two",
  25.     "three",
  26.     "four",
  27.     "five",
  28.     "six",
  29.     "seven",
  30.     "eight",
  31.     "nine",
  32. ];
  33.  
  34. var numEmoteCodes = [
  35.     "701685482098262036",
  36.     "701685482098262036",
  37.     "701685482098262036",
  38.     "701685482098262036",
  39.     "701685482098262036",
  40.     "701685482098262036",
  41.     "701685482098262036",
  42.     "701685482098262036",
  43.     "701685482098262036",
  44. ];
  45.  
  46. var lastBotMessage =  0;
  47. var reactNum = 0;
  48. var numPollOptions = 0;
  49.  
  50. function getReaction(channelID, j){
  51.     return new Promise(function(resolve, reject){
  52.         bot.getReaction({
  53.             channelID: channelID,
  54.             messageID: lastBotMessage,
  55.             reaction: (j + 1) + "\u20e3"
  56.         }, function(err, res){
  57.             var voteAmountForReaction = res.length - 1;
  58.             resolve(voteAmountForReaction);
  59.         });
  60.     });
  61. }
  62.  
  63. bot.on("message", async function(user, userID, channelID, message, evt){
  64.     try {
  65.         var isInPollChannel = false;
  66.         if(channelID == 701657588701462680) {
  67.             isInBotTestChannel = true;
  68.         }
  69.        
  70.         var messageParts = message.split(" ");
  71.        
  72.         if(messageParts[0] == "!createpoll"){
  73.             if(isInBotTestChannel){
  74.                 var secondPart = "";
  75.                 var i = 0;
  76.                 for(i = 12; i < message.length; i++){
  77.                     secondPart += message[i];
  78.                 }
  79.                
  80.                 var pollOptions = secondPart.split("|");
  81.                
  82.                 if(pollOptions.length > 9) {
  83.                     bot.sendMessage({
  84.                         to: channelID,
  85.                         embed: {
  86.                             title: "Error!",
  87.                             description: "Polls can only have up to 9 options!",
  88.                             color: 16751145,
  89.                             footer: {
  90.                                 text: "PollBot by atm959"
  91.                             }
  92.                     }
  93.                     });
  94.                     return;
  95.                 }
  96.                
  97.                 numPollOptions = pollOptions.length;
  98.                
  99.                 var args = "\n";
  100.                
  101.                 var i = 0;
  102.                 for(i = 0; i < numPollOptions; i++){
  103.                     args += "<:" + numEmoteNames[i] + ":" + numEmoteCodes[i] + "> " + pollOptions[i] + "\n";
  104.                 }
  105.                
  106.                 bot.sendMessage({
  107.                     to: channelID,
  108.                     embed: {
  109.                         title: "A poll is now active!",
  110.                         description: "Use the reactions to vote!",
  111.                         color: 16751145,
  112.                         fields: [
  113.                             {
  114.                                 name: "Available Options:",
  115.                                 value: args
  116.                             }
  117.                         ],
  118.                         footer: {
  119.                             text: "PollBot by atm959"
  120.                         }
  121.                     }
  122.                 }, function (err, res){
  123.                     lastBotMessage = res.id;
  124.                     var i = 0;
  125.                     for(i = 0; i < numPollOptions; i++){
  126.                         setTimeout(function(){
  127.                             bot.addReaction({
  128.                                 channelID: channelID,
  129.                                 messageID: res.id,
  130.                                 reaction: (reactNum + 1) + "\u20e3"
  131.                             });
  132.                             reactNum++;
  133.                         }, 500 * i);
  134.                     }
  135.                     reactNum = 0;
  136.                 });
  137.             }
  138.         } else if(messageParts[0] == "!endpoll"){
  139.             var numVotes = [];
  140.            
  141.             console.log("numVotes.length: " + numVotes.length);
  142.            
  143.             var i = 0;
  144.             for(i = 0; i < numPollOptions; i++){
  145.                 var n = await getReaction(channelID, i);
  146.                 numVotes.push(n);
  147.                 console.log("numVotes.length after push #" + (i + 1) + ": " + numVotes.length);
  148.                 console.log("Votes for " + (i + 1) + ": " + numVotes[i]);
  149.             }
  150.            
  151.             console.log("numVotes.length: " + numVotes.length);
  152.            
  153.             var numVoteText = "";
  154.            
  155.             var k = 0;
  156.             for(k = 0; k < numPollOptions; k++){
  157.                 numVoteText += k + ": " + numVotes[k] + "\n";
  158.             }
  159.            
  160.             bot.sendMessage({
  161.                 to: channelID,
  162.                 embed: {
  163.                     title: "Number of votes",
  164.                     description: "Just to debug!",
  165.                     color: 16751145,
  166.                     fields: [
  167.                         {
  168.                             name: "AAAAA",
  169.                             value: numVoteText
  170.                         }
  171.                     ],
  172.                     footer: {
  173.                         text: "PollBot by atm959"
  174.                     }
  175.                 }
  176.             });
  177.         }
  178.            
  179.     } catch(error){
  180.         bot.sendMessage({
  181.             to: channelID,
  182.             message: "`" + error + "`"
  183.         });
  184.     }
  185. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement