rhuntington

Patched Code for Atomatic

Jun 1st, 2020
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const { Client, MessageEmbed } = require('discord.js');
  2. const client = new Client();
  3. const token = require('./tokens.json').vote;
  4. client.on('ready', () => console.log(`${client.user.tag} has logged in.`));      
  5. client.login(token);
  6.  
  7. client.on('message', async message => {
  8.     if(message.author.bot) return;
  9.     if(!Authorized(message.guild.roles.cache)) return;
  10.     if(message.content.toLowerCase().startsWith('!createpoll')) {
  11.         let args = message.content.split(" ");
  12.         let time = args[1];
  13.         let question = args.slice(2).join(" ");
  14.         let regex = new RegExp(/^([0-9]{2}|[0-9]{1})[sSmM]$/);
  15.         if(regex.test(time)) {
  16.             if(time.toLowerCase().endsWith('s')) {
  17.                 time = parseInt(time.substring(0, time.indexOf('s')));
  18.                 time *= 1000;
  19.             }
  20.             else if(time.toLowerCase().endsWith('m')) {
  21.                 time = parseInt(time.substring(0, time.indexOf('m')));
  22.                 time *= 60 * 1000;
  23.             }
  24.             const embed = new MessageEmbed()
  25.                 .setTitle(question)
  26.                 .setDescription('React with šŸ‘ or šŸ‘Ž')
  27.                 .setTimestamp();
  28.             try {
  29.                 const polls = new Map();
  30.                 const userVotes = new Map();
  31.                 let filter = (reaction, user) => {
  32.                     if(user.bot) return false;
  33.                     if(['šŸ‘', 'šŸ‘Ž'].includes(reaction.emoji.name)) {
  34.                         if(polls.get(reaction.message.id).get(user.id))
  35.                             return false;
  36.                         else {
  37.                             userVotes.set(user.id, reaction.emoji.name);
  38.                             return true;
  39.                         }
  40.                     }
  41.                 }
  42.                 let msg = await message.channel.send(embed);
  43.                 await msg.react('šŸ‘');
  44.                 await msg.react('šŸ‘Ž');
  45.                 polls.set(msg.id, userVotes);
  46.                 let reactions = await msg.awaitReactions(filter, { time: time });
  47.                 let thumbsUp = reactions.get('šŸ‘');
  48.                 let thumbsDown = reactions.get('šŸ‘Ž');
  49.                 let thumbsUpResults = 0, thumbsDownResults = 0;
  50.                 if(thumbsUp)
  51.                     thumbsUpResults = thumbsUp.users.cache.filter(u => !u.bot).size;
  52.                 if(thumbsDown)
  53.                     thumbsDownResults = thumbsDown.users.cache.filter(u => !u.bot).size;
  54.                 const resultsEmbed = new MessageEmbed()
  55.                     .setTitle('Results')
  56.                     .setDescription(`šŸ‘ - ${thumbsUpResults} votes\n\nšŸ‘Ž - ${thumbsDownResults} votes\n`);
  57.                 await message.channel.send(resultsEmbed);
  58.             }
  59.             catch(err) {
  60.                 console.log(err);
  61.             }
  62.         }
  63.     }
  64. });
  65.  
  66. let Authorized = (roles) => {
  67.     return (roles.some(r => r.name === 'Head Admin') || roles.some(r => r.name === 'Admin') || (roles.some(r => r.name === 'Moderator') || (roles.some(r => r.name === 'Developer'))));
  68. };
Add Comment
Please, Sign In to add comment