const { Client, MessageEmbed } = require('discord.js'); const client = new Client(); const token = require('./tokens.json').vote; client.on('ready', () => console.log(`${client.user.tag} has logged in.`)); client.login(token); client.on('message', async message => { if(message.author.bot) return; if(!Authorized(message.guild.roles.cache)) return; if(message.content.toLowerCase().startsWith('!createpoll')) { let args = message.content.split(" "); let time = args[1]; let question = args.slice(2).join(" "); let regex = new RegExp(/^([0-9]{2}|[0-9]{1})[sSmM]$/); if(regex.test(time)) { if(time.toLowerCase().endsWith('s')) { time = parseInt(time.substring(0, time.indexOf('s'))); time *= 1000; } else if(time.toLowerCase().endsWith('m')) { time = parseInt(time.substring(0, time.indexOf('m'))); time *= 60 * 1000; } const embed = new MessageEmbed() .setTitle(question) .setDescription('React with šŸ‘ or šŸ‘Ž') .setTimestamp(); try { const polls = new Map(); const userVotes = new Map(); let filter = (reaction, user) => { if(user.bot) return false; if(['šŸ‘', 'šŸ‘Ž'].includes(reaction.emoji.name)) { if(polls.get(reaction.message.id).get(user.id)) return false; else { userVotes.set(user.id, reaction.emoji.name); return true; } } } let msg = await message.channel.send(embed); await msg.react('šŸ‘'); await msg.react('šŸ‘Ž'); polls.set(msg.id, userVotes); let reactions = await msg.awaitReactions(filter, { time: time }); let thumbsUp = reactions.get('šŸ‘'); let thumbsDown = reactions.get('šŸ‘Ž'); let thumbsUpResults = 0, thumbsDownResults = 0; if(thumbsUp) thumbsUpResults = thumbsUp.users.cache.filter(u => !u.bot).size; if(thumbsDown) thumbsDownResults = thumbsDown.users.cache.filter(u => !u.bot).size; const resultsEmbed = new MessageEmbed() .setTitle('Results') .setDescription(`šŸ‘ - ${thumbsUpResults} votes\n\nšŸ‘Ž - ${thumbsDownResults} votes\n`); await message.channel.send(resultsEmbed); } catch(err) { console.log(err); } } } }); let Authorized = (roles) => { 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')))); };