diff --git a/karma.js b/karma.js deleted file mode 100644 index a6cb923..0000000 --- a/karma.js +++ /dev/null @@ -1,137 +0,0 @@ -const Enmap = require('enmap'); -const { ReactionUserManager } = require('discord.js'); -const client = require('./index').client; - -// Stores the karma and coins of users -const karma = require('./index').karma; -const coins = require('./index').coins; - -const upvoteID = '719181283393142786'; -const downvoteID = '719181283774955540'; - -// Awards -const awards = { - "731192828415443116": { - name: "Silver", - cost: 100, - give: 0, - role: "733407208536277113" - }, - "731192829262692372": { - name: "Gold", - cost: 500, - give: 100, - role: "733407216199008416" - }, - "731192942080950333":{ - name: "Platinum", - cost: 1800, - give: 700, - role: "733407213900660807" - }, - "731508866273247252": { - name: "Argentium", - cost: 20000, - give: 2500, - role: "733407211178557583" - }, - "739266335128944683": { - name: "Argentobamium", - cost: 100000, - give: 69420, - role: "739266563038904421" - } -} - - -client.on('messageReactionAdd', async function(reaction, user) { - // Fetch reaction and user if they are partial - if (reaction.partial) reaction = await reaction.fetch(); - if (user.partial) reaction = await user.fetch(); - - if (reaction.message.author.bot) return; // Dont give karma to bots - - await addToDatabase(reaction.message.author.id); // Add the user to the database - - if (!reaction.emoji.id) return; // Return when emoji has no ID (is a "default" emoji) - if (user.bot) return; // Don't accept reactions from bots. - if (!reaction.message.guild) return; // Don't accept reactions from DMs - - const message = reaction.message; // The message object the reaction was added to - - if (reaction.emoji.id == upvoteID) { - karma.inc(message.author.id); - return; - } - else if (reaction.emoji.id == downvoteID) { - karma.dec(message.author.id); - return; - } else if (awards[reaction.emoji.id]) { - let award = awards[reaction.emoji.id]; - if (coins.get(user.id) < award.cost) { - message.channel.send(`${user}, you don't have sufficient coins to use this award.`); - reaction.users.remove(user.id); - return; - } - if (message.author.id == user.id) { - //reaction.remove(); - reaction.users.remove(user.id); - return message.channel.send(`${user}, why would you give an award to yourself? smh my head`); - } - coins.set(user.id, (coins.get(user.id) - award.cost)); - coins.set(message.author.id, (coins.get(message.author.id) + award.give)); - message.channel.send(`${user} just gave the ${client.emojis.cache.get(reaction.emoji.id).toString()} ${award.name} award (Price: ${award.cost} coins) to ${message.author}${award.give > 0 ? `. ${message.author.username} has received ${award.give} coins` : ''}!`); - require('./karma').updateRoles(user.id); - require('./karma').updateRoles(message.author.id); - } -}); - -client.on('messageReactionRemove', async function(reaction, user) { - // Fetch reaction and user if they are partial - if (reaction.partial) reaction = await reaction.fetch(); - if (user.partial) reaction = await user.fetch(); - - await addToDatabase(reaction.message.author.id); // Add the user to the database - - if (!reaction.emoji.id) return; // Return when emoji has no ID (is a "default" emoji) - if (user.bot) return; // Don't accept reactions from bots. - if (!reaction.message.guild) return; // Don't accept reactions from DMs - - const message = reaction.message; // The message object the reaction was added to - - if (reaction.emoji.id == upvoteID) { - karma.dec(message.author.id); - return; - } - else if (reaction.emoji.id == downvoteID) { - karma.dec(message.author.id); - return; - } -}); - -// Milestones for reaching certain karma values -function milestone(id) { - -} - -// Reset a user's coin/karma count when its not of type number -async function addToDatabase(id) { - if (!id) return; - if (typeof karma.get(id) != 'number') karma.set(id, 0); - if (typeof coins.get(id) != 'number') coins.set(id, 100); - return; -} - -module.exports.updateRoles = function(id) { - let member = client.guilds.cache.get('653568812578373643').members.cache.get(id); - let membercoins = coins.get(member.id); - Object.keys(awards).forEach(awardid => { - let award = awards[awardid]; - - if (member.roles.cache.has(award.role)) { - if (membercoins < award.cost) member.roles.remove(award.role); - } else { - if (membercoins >= award.cost) member.roles.add(award.role); - } - }); -} \ No newline at end of file