From 18b559a867a5a01278b0786576013ad485bbf4f1 Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Sun, 6 Mar 2022 18:41:29 +0000 Subject: [PATCH] Restyled by prettier --- src/commands/credits/addons/balance.js | 57 ++-- src/commands/credits/addons/gift.js | 109 ++++---- src/commands/credits/addons/give.js | 57 ++-- src/commands/credits/addons/redeem.js | 167 ++++++------ src/commands/credits/addons/settings.js | 56 ++-- src/commands/credits/addons/transfer.js | 101 ++++--- src/commands/credits/addons/work.js | 71 ++--- src/commands/credits/index.js | 290 ++++++++++----------- src/events/guildCreate.js | 16 +- src/helpers/database/models/guildSchema.js | 76 +++--- 10 files changed, 476 insertions(+), 524 deletions(-) diff --git a/src/commands/credits/addons/balance.js b/src/commands/credits/addons/balance.js index 75c3c5b..5f3907f 100644 --- a/src/commands/credits/addons/balance.js +++ b/src/commands/credits/addons/balance.js @@ -9,38 +9,35 @@ module.exports = async (interaction) => { const user = await interaction.options.getUser('user'); await credits - // eslint-disable-next-line max-len - .findOne({ - userId : user ? user.id : interaction.user.id, - guildId : interaction.member.guild.id - }) - .then(async (data) => { - if (!data) { - const embed = { - title : 'Balance', - description : `${user} has no credits.`, - color : config.colors.success, - timestamp : new Date(), - footer : - {iconURL : config.footer.icon, text : config.footer.text}, - }; - - return interaction.editReply( - {embeds : [ embed ], ephemeral : true}); - } - const {balance} = data; - + // eslint-disable-next-line max-len + .findOne({ + userId: user ? user.id : interaction.user.id, + guildId: interaction.member.guild.id, + }) + .then(async (data) => { + if (!data) { const embed = { - title : 'Balance', - description : - `${user ? `${user} has` : 'You have'} ${creditNoun(balance)}.`, - color : config.colors.success, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Balance', + description: `${user} has no credits.`, + color: config.colors.success, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return interaction.editReply({embeds : [ embed ], ephemeral : true}); - }) - .catch(async (err) => logger.error(err)); + + return interaction.editReply({ embeds: [embed], ephemeral: true }); + } + const { balance } = data; + + const embed = { + title: 'Balance', + description: `${user ? `${user} has` : 'You have'} ${creditNoun(balance)}.`, + color: config.colors.success, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, + }; + return interaction.editReply({ embeds: [embed], ephemeral: true }); + }) + .catch(async (err) => logger.error(err)); } catch { await logger.error(); } diff --git a/src/commands/credits/addons/gift.js b/src/commands/credits/addons/gift.js index 837d6cb..91ddf15 100644 --- a/src/commands/credits/addons/gift.js +++ b/src/commands/credits/addons/gift.js @@ -11,59 +11,57 @@ module.exports = async (interaction) => { const amount = await interaction.options.getInteger('amount'); const reason = await interaction.options.getString('reason'); // eslint-disable-next-line max-len - const data = await credits.findOne( - {userId : interaction.user.id, guildId : interaction.member.guild.id}); + const data = await credits.findOne({ + userId: interaction.user.id, + guildId: interaction.member.guild.id, + }); if (user.id === interaction.user.id) { const embed = { - title : 'Gift failed', - description : "You can't pay yourself.", - color : 0xbb2124, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Gift failed', + description: "You can't pay yourself.", + color: 0xbb2124, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return await interaction.editReply( - {embeds : [ embed ], ephemeral : true}); + return await interaction.editReply({ embeds: [embed], ephemeral: true }); } if (amount <= 0) { const embed = { - title : 'Gift failed', - description : "You can't pay zero or below.", - color : 0xbb2124, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Gift failed', + description: "You can't pay zero or below.", + color: 0xbb2124, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return await interaction.editReply( - {embeds : [ embed ], ephemeral : true}); + return await interaction.editReply({ embeds: [embed], ephemeral: true }); } if (data.balance < amount) { const embed = { - title : 'Gift', - description : - `You have insufficient credits. Your balance is ${data.balance}`, - color : 0xbb2124, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Gift', + description: `You have insufficient credits. Your balance is ${data.balance}`, + color: 0xbb2124, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return await interaction.editReply( - {embeds : [ embed ], ephemeral : true}); + return await interaction.editReply({ embeds: [embed], ephemeral: true }); } // eslint-disable-next-line max-len - const fromUser = await credits.findOne( - {userId : interaction.user.id, guildId : interaction.member.guild.id}); - const toUser = await credits.findOne( - {userId : user.id, guildId : interaction.member.guild.id}); + const fromUser = await credits.findOne({ + userId: interaction.user.id, + guildId: interaction.member.guild.id, + }); + const toUser = await credits.findOne({ userId: user.id, guildId: interaction.member.guild.id }); if (!toUser) { const embed = { - title : 'Gift', - description : - 'That user has no credits, I can not gift credits to the user', - color : config.colors.error, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Gift', + description: 'That user has no credits, I can not gift credits to the user', + color: config.colors.error, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return interaction.editReply({embeds : [ embed ], ephemeral : true}); + return interaction.editReply({ embeds: [embed], ephemeral: true }); } fromUser.balance -= amount; toUser.balance += amount; @@ -71,34 +69,27 @@ module.exports = async (interaction) => { await saveUser(fromUser, toUser); const interactionEmbed = { - title : 'Gift', - description : `You sent ${creditNoun(amount)} to ${user}${ - reason ? ` with reason: ${reason}` : ''}. Your new balance is ${ - creditNoun( - fromUser.balance, - )}.`, - color : 0x22bb33, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Gift', + description: `You sent ${creditNoun(amount)} to ${user}${ + reason ? ` with reason: ${reason}` : '' + }. Your new balance is ${creditNoun(fromUser.balance)}.`, + color: 0x22bb33, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; const dmEmbed = { - title : 'Gift', - description : - `You received ${creditNoun(amount)} from ${interaction.user}${ - reason ? ` with reason: ${reason}` : ''}. Your new balance is ${ - creditNoun( - toUser.balance, - )}.`, - color : 0x22bb33, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Gift', + description: `You received ${creditNoun(amount)} from ${interaction.user}${ + reason ? ` with reason: ${reason}` : '' + }. Your new balance is ${creditNoun(toUser.balance)}.`, + color: 0x22bb33, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; const dmUser = await interaction.client.users.cache.get(user.id); - await dmUser.send({embeds : [ dmEmbed ]}); - await logger.debug( - `Gift sent from: ${interaction.user.username} to: ${user.username}`); - return await interaction.editReply( - {embeds : [ interactionEmbed ], ephemeral : true}); + await dmUser.send({ embeds: [dmEmbed] }); + await logger.debug(`Gift sent from: ${interaction.user.username} to: ${user.username}`); + return await interaction.editReply({ embeds: [interactionEmbed], ephemeral: true }); } catch (e) { await logger.error(e); } diff --git a/src/commands/credits/addons/give.js b/src/commands/credits/addons/give.js index 28214c3..c15d3e4 100644 --- a/src/commands/credits/addons/give.js +++ b/src/commands/credits/addons/give.js @@ -1,4 +1,4 @@ -const {Permissions} = require('discord.js'); +const { Permissions } = require('discord.js'); const config = require('../../../../config.json'); const logger = require('../../../handlers/logger'); @@ -10,56 +10,51 @@ module.exports = async (interaction) => { try { if (!interaction.member.permissions.has(Permissions.FLAGS.MANAGE_GUILD)) { const embed = { - title : 'Give failed', - description : - 'You need to have permission to manage this guild (MANAGE_GUILD)', + title: 'Give failed', + description: 'You need to have permission to manage this guild (MANAGE_GUILD)', }; - return await interaction.editReply( - {embeds : [ embed ], ephemeral : true}); + return await interaction.editReply({ embeds: [embed], ephemeral: true }); } const user = await interaction.options.getUser('user'); const amount = await interaction.options.getInteger('amount'); if (amount <= 0) { const embed = { - title : 'Give', - description : "You can't give zero or below.", - color : 0xbb2124, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Give', + description: "You can't give zero or below.", + color: 0xbb2124, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return await interaction.editReply( - {embeds : [ embed ], ephemeral : true}); + return await interaction.editReply({ embeds: [embed], ephemeral: true }); } - const toUser = await credits.findOne( - {userId : user.id, guildId : interaction.member.guild.id}); + const toUser = await credits.findOne({ userId: user.id, guildId: interaction.member.guild.id }); if (!toUser) { const embed = { - title : 'Give', - description : - 'That user has no credits, I can not give credits to the user', - color : config.colors.error, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Give', + description: 'That user has no credits, I can not give credits to the user', + color: config.colors.error, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return interaction.editReply({embeds : [ embed ], ephemeral : true}); + return interaction.editReply({ embeds: [embed], ephemeral: true }); } toUser.balance += amount; await toUser.save(); const embed = { - title : 'Give', - description : `Gave ${creditNoun(amount)} to ${user}.`, - color : 0x22bb33, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Give', + description: `Gave ${creditNoun(amount)} to ${user}.`, + color: 0x22bb33, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; await logger.debug( - `Administrator: ${interaction.user.username} gave ${ - amount <= 1 ? `${amount} credit` - : `${amount} credits`} to ${user.username}`, + `Administrator: ${interaction.user.username} gave ${ + amount <= 1 ? `${amount} credit` : `${amount} credits` + } to ${user.username}` ); - return await interaction.editReply({embeds : [ embed ], ephemeral : true}); + return await interaction.editReply({ embeds: [embed], ephemeral: true }); } catch (e) { await logger.error(e); } diff --git a/src/commands/credits/addons/redeem.js b/src/commands/credits/addons/redeem.js index e0acbff..81efaa0 100644 --- a/src/commands/credits/addons/redeem.js +++ b/src/commands/credits/addons/redeem.js @@ -1,4 +1,4 @@ -const {v4 : uuidv4} = require('uuid'); +const { v4: uuidv4 } = require('uuid'); const axios = require('axios'); const config = require('../../../../config.json'); const logger = require('../../../handlers/logger'); @@ -13,120 +13,111 @@ module.exports = async (interaction) => { try { if (config.disable.redeem) { const embed = { - title : 'Redeem failed', - description : 'Redeem is disabled until further.', - color : config.colors.error, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Redeem failed', + description: 'Redeem is disabled until further.', + color: config.colors.error, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return await interaction.editReply( - {embeds : [ embed ], ephemeral : true}); + return await interaction.editReply({ embeds: [embed], ephemeral: true }); } const amount = await interaction.options.getInteger('amount'); // eslint-disable-next-line max-len - const user = await credits.findOne( - {userId : interaction.user.id, guildId : interaction.member.guild.id}); - const dmUser = - interaction.client.users.cache.get(interaction.member.user.id); + const user = await credits.findOne({ + userId: interaction.user.id, + guildId: interaction.member.guild.id, + }); + const dmUser = interaction.client.users.cache.get(interaction.member.user.id); if ((amount || user.balance) < 100) { const embed = { - title : 'Redeem', - description : - `You can't redeem below 100. Your balance is ${user.balance}.`, - color : config.colors.error, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Redeem', + description: `You can't redeem below 100. Your balance is ${user.balance}.`, + color: config.colors.error, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return await interaction.editReply( - {embeds : [ embed ], ephemeral : true}); + return await interaction.editReply({ embeds: [embed], ephemeral: true }); } if ((amount || user.balance) > 1000000) { const embed = { - title : 'Redeem', - description : - `You can't redeem over 1,000,000. Your balance is ${user.balance}.`, - color : config.colors.error, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Redeem', + description: `You can't redeem over 1,000,000. Your balance is ${user.balance}.`, + color: config.colors.error, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return await interaction.editReply( - {embeds : [ embed ], ephemeral : true}); + return await interaction.editReply({ embeds: [embed], ephemeral: true }); } if (user.balance < amount) { const embed = { - title : 'Redeem', - description : - `You have insufficient credits. Your balance is ${user.balance}.`, - color : config.colors.error, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Redeem', + description: `You have insufficient credits. Your balance is ${user.balance}.`, + color: config.colors.error, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return await interaction.editReply( - {embeds : [ embed ], ephemeral : true}); + return await interaction.editReply({ embeds: [embed], ephemeral: true }); } const code = uuidv4(); - const guild = await guilds.findOne({guildId : interaction.member.guild.id}); + const guild = await guilds.findOne({ guildId: interaction.member.guild.id }); const api = axios.create({ - baseURL : guild.credits.url, - headers : {Authorization : `Bearer ${guild.credits.token}`}, + baseURL: guild.credits.url, + headers: { Authorization: `Bearer ${guild.credits.token}` }, }); await api - .post('vouchers', { - uses : 1, - code, - credits : amount || user.balance, - memo : `${interaction.createdTimestamp} - ${interaction.user.id}`, - }) - .then(async () => { - const dmEmbed = { - title : 'Redeem', - description : `Your new balance is ${ - user.balance - (amount || user.balance)}.`, - fields : [ - {name : 'Code', value : `${code}`, inline : true}, - { - name : 'Credits', - value : `${amount || user.balance}`, - inline : true, - }, - ], - color : config.colors.success, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, - }; - const interactionEmbed = { - title : 'Redeem', - description : 'Code is sent in DM!', - color : config.colors.success, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, - }; - user.balance -= amount || user.balance; + .post('vouchers', { + uses: 1, + code, + credits: amount || user.balance, + memo: `${interaction.createdTimestamp} - ${interaction.user.id}`, + }) + .then(async () => { + const dmEmbed = { + title: 'Redeem', + description: `Your new balance is ${user.balance - (amount || user.balance)}.`, + fields: [ + { name: 'Code', value: `${code}`, inline: true }, + { + name: 'Credits', + value: `${amount || user.balance}`, + inline: true, + }, + ], + color: config.colors.success, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, + }; + const interactionEmbed = { + title: 'Redeem', + description: 'Code is sent in DM!', + color: config.colors.success, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, + }; + user.balance -= amount || user.balance; - await user.save(); + await user.save(); - await logger.debug( - `User: ${user.username} redeemed: ${creditNoun(amount)}`); - await dmUser.send({embeds : [ dmEmbed ]}); - await interaction.editReply( - {embeds : [ interactionEmbed ], ephemeral : true}); - }) - .catch(async (e) => { - await logger.error(e); - const embed = { - title : 'Redeem', - description : 'Something went wrong.', - color : config.colors.error, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, - }; - return interaction.editReply({embeds : [ embed ], ephemeral : true}); - }); + await logger.debug(`User: ${user.username} redeemed: ${creditNoun(amount)}`); + await dmUser.send({ embeds: [dmEmbed] }); + await interaction.editReply({ embeds: [interactionEmbed], ephemeral: true }); + }) + .catch(async (e) => { + await logger.error(e); + const embed = { + title: 'Redeem', + description: 'Something went wrong.', + color: config.colors.error, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, + }; + return interaction.editReply({ embeds: [embed], ephemeral: true }); + }); } catch (e) { await logger.error(e); } diff --git a/src/commands/credits/addons/settings.js b/src/commands/credits/addons/settings.js index 55cfcaa..52981f3 100644 --- a/src/commands/credits/addons/settings.js +++ b/src/commands/credits/addons/settings.js @@ -15,51 +15,51 @@ module.exports = async (interaction) => { const workRate = await interaction.options.getNumber('work-rate'); const workTimeout = await interaction.options.getNumber('work-timeout'); - const guild = await guilds.findOne({guildId : interaction.member.guild.id}); + const guild = await guilds.findOne({ guildId: interaction.member.guild.id }); guild.credits.status = status !== null ? status : guild.credits.status; guild.credits.url = url !== null ? url : guild.credits.url; guild.credits.token = token !== null ? token : guild.credits.token; guild.credits.rate = rate !== null ? rate : guild.credits.rate; guild.credits.timeout = timeout !== null ? timeout : guild.credits.timeout; - guild.credits.workRate = - workRate !== null ? workRate : guild.credits.workRate; + guild.credits.workRate = workRate !== null ? workRate : guild.credits.workRate; // eslint-disable-next-line max-len - guild.credits.workTimeout = - workTimeout !== null ? workTimeout : guild.credits.workTimeout; + guild.credits.workTimeout = workTimeout !== null ? workTimeout : guild.credits.workTimeout; // eslint-disable-next-line max-len guild.credits.minimumLength = - minimumLength !== null ? minimumLength : guild.credits.minimumLength; + minimumLength !== null ? minimumLength : guild.credits.minimumLength; await guild.save(); const embed = { - title : 'Credits', - description : 'Following settings is set', - color : config.colors.success, - fields : [ - {name : 'Status', value : `${guild.credits.status}`, inline : true}, - {name : 'URL', value : `${guild.credits.url}`, inline : true}, - {name : 'Token', value : `${guild.credits.token}`}, - {name : 'Rate', value : `${guild.credits.rate}`, inline : true}, { - name : 'Minimum Length', - value : `${guild.credits.minimumLength}`, - inline : true + title: 'Credits', + description: 'Following settings is set', + color: config.colors.success, + fields: [ + { name: 'Status', value: `${guild.credits.status}`, inline: true }, + { name: 'URL', value: `${guild.credits.url}`, inline: true }, + { name: 'Token', value: `${guild.credits.token}` }, + { name: 'Rate', value: `${guild.credits.rate}`, inline: true }, + { + name: 'Minimum Length', + value: `${guild.credits.minimumLength}`, + inline: true, }, - {name : 'Timeout', value : `${guild.credits.timeout}`, inline : true}, { - name : 'Work Rate', - value : `${guild.credits.workRate}`, - inline : true + { name: 'Timeout', value: `${guild.credits.timeout}`, inline: true }, + { + name: 'Work Rate', + value: `${guild.credits.workRate}`, + inline: true, }, { - name : 'Work Timeout', - value : `${guild.credits.workTimeout}`, - inline : true - } + name: 'Work Timeout', + value: `${guild.credits.workTimeout}`, + inline: true, + }, ], - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return interaction.editReply({embeds : [ embed ], ephemeral : true}); + return interaction.editReply({ embeds: [embed], ephemeral: true }); } catch (e) { logger.error(e); } diff --git a/src/commands/credits/addons/transfer.js b/src/commands/credits/addons/transfer.js index 37bce57..ac7a5c9 100644 --- a/src/commands/credits/addons/transfer.js +++ b/src/commands/credits/addons/transfer.js @@ -1,4 +1,4 @@ -const {Permissions} = require('discord.js'); +const { Permissions } = require('discord.js'); const config = require('../../../../config.json'); const logger = require('../../../handlers/logger'); @@ -11,69 +11,63 @@ module.exports = async (interaction) => { try { if (!interaction.member.permissions.has(Permissions.FLAGS.MANAGE_GUILD)) { const embed = { - title : 'Transfer failed', - description : - 'You need to have permission to manage this guild (MANAGE_GUILD)', + title: 'Transfer failed', + description: 'You need to have permission to manage this guild (MANAGE_GUILD)', }; - return await interaction.editReply( - {embeds : [ embed ], ephemeral : true}); + return await interaction.editReply({ embeds: [embed], ephemeral: true }); } const from = await interaction.options.getUser('from'); const to = await interaction.options.getUser('to'); const amount = await interaction.options.getInteger('amount'); // eslint-disable-next-line max-len - const fromUser = await credits.findOne( - {userId : from.id, guildId : interaction.member.guild.id}); - const toUser = await credits.findOne( - {userId : to.id, guildId : interaction.member.guild.id}); + const fromUser = await credits.findOne({ + userId: from.id, + guildId: interaction.member.guild.id, + }); + const toUser = await credits.findOne({ userId: to.id, guildId: interaction.member.guild.id }); if (!fromUser) { const embed = { - title : 'Transfer', - description : - 'That user has no credits, I can not transfer credits from the user', - color : config.colors.error, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Transfer', + description: 'That user has no credits, I can not transfer credits from the user', + color: config.colors.error, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return interaction.editReply({embeds : [ embed ], ephemeral : true}); + return interaction.editReply({ embeds: [embed], ephemeral: true }); } if (!toUser) { const embed = { - title : 'Transfer', - description : - 'That user has no credits, I can not transfer credits to the user', - color : config.colors.error, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Transfer', + description: 'That user has no credits, I can not transfer credits to the user', + color: config.colors.error, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return interaction.editReply({embeds : [ embed ], ephemeral : true}); + return interaction.editReply({ embeds: [embed], ephemeral: true }); } if (amount <= 0) { const embed = { - title : 'Transfer failed', - description : "You can't transfer zero or below.", - color : 0xbb2124, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Transfer failed', + description: "You can't transfer zero or below.", + color: 0xbb2124, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return await interaction.editReply( - {embeds : [ embed ], ephemeral : true}); + return await interaction.editReply({ embeds: [embed], ephemeral: true }); } if (fromUser.balance < amount) { const embed = { - title : 'Transfer', - description : `${from.username} has insufficient credits. ${ - from.username} balance is ${fromUser.balance}`, - color : 0xbb2124, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Transfer', + description: `${from.username} has insufficient credits. ${from.username} balance is ${fromUser.balance}`, + color: 0xbb2124, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return await interaction.editReply( - {embeds : [ embed ], ephemeral : true}); + return await interaction.editReply({ embeds: [embed], ephemeral: true }); } fromUser.balance -= amount; @@ -82,28 +76,27 @@ module.exports = async (interaction) => { await saveUser(fromUser, toUser); const embed = { - title : 'Transfer', - description : `You sent ${creditNoun(amount)} from ${from} to ${to}.`, - color : 0x22bb33, - fields : [ + title: 'Transfer', + description: `You sent ${creditNoun(amount)} from ${from} to ${to}.`, + color: 0x22bb33, + fields: [ { - name : `${from.username} Balance`, - value : `${fromUser.balance}`, - inline : true + name: `${from.username} Balance`, + value: `${fromUser.balance}`, + inline: true, }, { - name : `${to.username} Balance`, - value : `${toUser.balance}`, - inline : true + name: `${to.username} Balance`, + value: `${toUser.balance}`, + inline: true, }, ], - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - await logger.debug( - `Gift sent from: ${interaction.user.username} to: ${to.username}`); - return await interaction.editReply({embeds : [ embed ], ephemeral : true}); + await logger.debug(`Gift sent from: ${interaction.user.username} to: ${to.username}`); + return await interaction.editReply({ embeds: [embed], ephemeral: true }); } catch (e) { logger.error(e); } diff --git a/src/commands/credits/addons/work.js b/src/commands/credits/addons/work.js index 9745d33..908b526 100644 --- a/src/commands/credits/addons/work.js +++ b/src/commands/credits/addons/work.js @@ -9,57 +9,60 @@ const workedRecently = new Set(); // eslint-disable-next-line consistent-return module.exports = async (interaction) => { try { - const guild = await guilds.findOne({guildId : interaction.member.guild.id}); + const guild = await guilds.findOne({ guildId: interaction.member.guild.id }); if (!workedRecently.has(interaction.member.id)) { const creditsEarned = Math.floor(Math.random() * guild.credits.workRate); await credits - .findOneAndUpdate( - { - userId : interaction.member.id, - guildId : interaction.member.guild.id - }, - {$inc : {balance : creditsEarned}}, - {new : true, upsert : true}, - ) - .then(async () => { - logger.debug(`Credits added to user: ${interaction.member.id}`); - const embed = { - title : 'Work', - description : `You earned ${creditNoun(creditsEarned)}`, - color : config.colors.success, - timestamp : new Date(), - footer : - {iconURL : config.footer.icon, text : config.footer.text}, - }; + .findOneAndUpdate( + { + userId: interaction.member.id, + guildId: interaction.member.guild.id, + }, + { $inc: { balance: creditsEarned } }, + { new: true, upsert: true } + ) + .then(async () => { + logger.debug(`Credits added to user: ${interaction.member.id}`); + const embed = { + title: 'Work', + description: `You earned ${creditNoun(creditsEarned)}`, + color: config.colors.success, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, + }; - return interaction.editReply( - {embeds : [ embed ], ephemeral : true}); - }) - .catch(async (err) => { await logger.error(err); }); + return interaction.editReply({ embeds: [embed], ephemeral: true }); + }) + .catch(async (err) => { + await logger.error(err); + }); workedRecently.add(interaction.member.id); setTimeout(() => { logger.debug( - `User: ${interaction.member.id} has not worked within last ${ - guild.credits.workTimeout / 1000} seconds, work can be runned`, + `User: ${interaction.member.id} has not worked within last ${ + guild.credits.workTimeout / 1000 + } seconds, work can be runned` ); workedRecently.delete(interaction.member.id); }, guild.credits.timeout); } else { logger.debug( - `User: ${interaction.member.id} has already worked within last ${ - guild.credits.workTimeout / 1000} seconds, no work is runned`, + `User: ${interaction.member.id} has already worked within last ${ + guild.credits.workTimeout / 1000 + } seconds, no work is runned` ); const embed = { - title : 'Work', - description : `You can not work now, wait ${ - guild.credits.workTimeout / 1000} seconds until timeout is out.`, - color : config.colors.error, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Work', + description: `You can not work now, wait ${ + guild.credits.workTimeout / 1000 + } seconds until timeout is out.`, + color: config.colors.error, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return interaction.editReply({embeds : [ embed ], ephemeral : true}); + return interaction.editReply({ embeds: [embed], ephemeral: true }); } } catch (e) { await logger.error(e); diff --git a/src/commands/credits/index.js b/src/commands/credits/index.js index 56b6a0b..469cc88 100644 --- a/src/commands/credits/index.js +++ b/src/commands/credits/index.js @@ -1,5 +1,5 @@ -const {SlashCommandBuilder} = require('@discordjs/builders'); -const {Permissions} = require('discord.js'); +const { SlashCommandBuilder } = require('@discordjs/builders'); +const { Permissions } = require('discord.js'); const config = require('../../../config.json'); const guilds = require('../../helpers/database/models/guildSchema'); @@ -16,170 +16,150 @@ const settings = require('./addons/settings'); const work = require('./addons/work'); module.exports = { - permissions : new Permissions([ + permissions: new Permissions([ Permissions.FLAGS.MANAGE_MESSAGES, Permissions.FLAGS.ADMINISTRATOR, ]), - guildOnly : true, - botAdminOnly : false, - data : - new SlashCommandBuilder() - .setName('credits') - .setDescription('Manage your credits.') - .addSubcommand( - (subcommand) => - subcommand.setName('give') - .setDescription('Give credits to a user. (ADMIN)') - .addUserOption( - (option) => - option.setName('user') - .setDescription('The user you want to pay.') - .setRequired(true)) - .addIntegerOption( - (option) => - option.setName('amount') - .setDescription('The amount you will pay.') - .setRequired(true))) - .addSubcommand( - (subcommand) => - subcommand.setName('take') - .setDescription('Take credits from a user. (ADMIN)') - .addUserOption( - (option) => - option.setName('user') - .setDescription( - 'The user you want to take credits from.') - .setRequired(true)) - .addIntegerOption( - (option) => - option.setName('amount') - .setDescription('The amount you will take.') - .setRequired(true))) - .addSubcommand( - (subcommand) => - subcommand.setName('balance') - .setDescription("Check a user's balance.") - .addUserOption( - (option) => - option.setName('user') - .setDescription( - 'The user whose balance you want to check.') - .setRequired(false))) - .addSubcommand( - (subcommand) => - subcommand.setName('redeem') - .setDescription('Redeem your credits.') - .addIntegerOption( - (option) => option.setName('amount').setDescription( - 'How much credit you want to withdraw.'))) - .addSubcommand( - (subcommand) => - subcommand.setName('gift') - .setDescription('Gift someone credits from your credits.') - .addUserOption( - (option) => - option.setName('user') - .setDescription('The user you want to pay.') - .setRequired(true)) - .addIntegerOption( - (option) => - option.setName('amount') - .setDescription('The amount you will pay.') - .setRequired(true)) - .addStringOption( - (option) => option.setName('reason').setDescription( - 'Your reason.'))) - .addSubcommand((subcommand) => - subcommand.setName('top').setDescription( - 'Check the top balance.')) - .addSubcommand( - (subcommand) => - subcommand.setName('transfer') - .setDescription( - 'Transfer credits from a user to another user. (ADMIN)') - .addUserOption( - (option) => - option.setName('from') - .setDescription( - 'The user you want to take credits from.') - .setRequired(true)) - .addUserOption( - (option) => - option.setName('to') - .setDescription( - 'The user you want to give credits to.') - .setRequired(true)) - .addIntegerOption( - (option) => option.setName('amount') - .setDescription( - 'The amount you will transfer.') - .setRequired(true))) - .addSubcommand( - (subcommand) => - subcommand.setName('set') - .setDescription('Set credits on a user. (ADMIN)') - .addUserOption( - (option) => - option.setName('user') - .setDescription( - 'The user you want to set credits on.') - .setRequired(true)) - .addIntegerOption( - (option) => - option.setName('amount') - .setDescription('The amount you will set.') - .setRequired(true))) - .addSubcommand( - (subcommand) => - subcommand.setName('settings') - .setDescription('Manage credit settings. (ADMIN)') - .addBooleanOption( - (option) => option.setName('status').setDescription( - 'Toggle credits.')) - .addStringOption((option) => - option.setName('url').setDescription( - 'Controlpanel.gg URL.')) - .addStringOption( - (option) => option.setName('token').setDescription( - 'Controlpanel.gg token.')) - .addNumberOption( - (option) => option.setName('rate').setDescription( - 'Credits rate.')) - .addNumberOption( - (option) => option.setName('minimum-length') - .setDescription( - 'Minimum length for credits.')) - .addNumberOption( - (option) => option.setName('work-rate') - .setDescription('Work rate (rate).')) - .addNumberOption( - (option) => - option.setName('work-timeout') - .setDescription( - 'Timeout between working for credits (milliseconds).')) - .addNumberOption( - (option) => option.setName('timeout').setDescription( - 'Timeout between credits (milliseconds).'))) - .addSubcommand((subcommand) => - subcommand.setName('work').setDescription( - 'Work for credits.')), + guildOnly: true, + botAdminOnly: false, + data: new SlashCommandBuilder() + .setName('credits') + .setDescription('Manage your credits.') + .addSubcommand((subcommand) => + subcommand + .setName('give') + .setDescription('Give credits to a user. (ADMIN)') + .addUserOption((option) => + option.setName('user').setDescription('The user you want to pay.').setRequired(true) + ) + .addIntegerOption((option) => + option.setName('amount').setDescription('The amount you will pay.').setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('take') + .setDescription('Take credits from a user. (ADMIN)') + .addUserOption((option) => + option + .setName('user') + .setDescription('The user you want to take credits from.') + .setRequired(true) + ) + .addIntegerOption((option) => + option.setName('amount').setDescription('The amount you will take.').setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('balance') + .setDescription("Check a user's balance.") + .addUserOption((option) => + option + .setName('user') + .setDescription('The user whose balance you want to check.') + .setRequired(false) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('redeem') + .setDescription('Redeem your credits.') + .addIntegerOption((option) => + option.setName('amount').setDescription('How much credit you want to withdraw.') + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('gift') + .setDescription('Gift someone credits from your credits.') + .addUserOption((option) => + option.setName('user').setDescription('The user you want to pay.').setRequired(true) + ) + .addIntegerOption((option) => + option.setName('amount').setDescription('The amount you will pay.').setRequired(true) + ) + .addStringOption((option) => option.setName('reason').setDescription('Your reason.')) + ) + .addSubcommand((subcommand) => + subcommand.setName('top').setDescription('Check the top balance.') + ) + .addSubcommand((subcommand) => + subcommand + .setName('transfer') + .setDescription('Transfer credits from a user to another user. (ADMIN)') + .addUserOption((option) => + option + .setName('from') + .setDescription('The user you want to take credits from.') + .setRequired(true) + ) + .addUserOption((option) => + option + .setName('to') + .setDescription('The user you want to give credits to.') + .setRequired(true) + ) + .addIntegerOption((option) => + option.setName('amount').setDescription('The amount you will transfer.').setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('set') + .setDescription('Set credits on a user. (ADMIN)') + .addUserOption((option) => + option + .setName('user') + .setDescription('The user you want to set credits on.') + .setRequired(true) + ) + .addIntegerOption((option) => + option.setName('amount').setDescription('The amount you will set.').setRequired(true) + ) + ) + .addSubcommand((subcommand) => + subcommand + .setName('settings') + .setDescription('Manage credit settings. (ADMIN)') + .addBooleanOption((option) => option.setName('status').setDescription('Toggle credits.')) + .addStringOption((option) => option.setName('url').setDescription('Controlpanel.gg URL.')) + .addStringOption((option) => + option.setName('token').setDescription('Controlpanel.gg token.') + ) + .addNumberOption((option) => option.setName('rate').setDescription('Credits rate.')) + .addNumberOption((option) => + option.setName('minimum-length').setDescription('Minimum length for credits.') + ) + .addNumberOption((option) => + option.setName('work-rate').setDescription('Work rate (rate).') + ) + .addNumberOption((option) => + option + .setName('work-timeout') + .setDescription('Timeout between working for credits (milliseconds).') + ) + .addNumberOption((option) => + option.setName('timeout').setDescription('Timeout between credits (milliseconds).') + ) + ) + .addSubcommand((subcommand) => subcommand.setName('work').setDescription('Work for credits.')), async execute(interaction) { - const guild = await guilds.findOne({guildId : interaction.member.guild.id}); + const guild = await guilds.findOne({ guildId: interaction.member.guild.id }); if (interaction.options.getSubcommand() === 'settings') { await settings(interaction); } - if (guild.credits.status === false && - interaction.options.getSubcommand() !== 'settings') { + if (guild.credits.status === false && interaction.options.getSubcommand() !== 'settings') { const embed = { - title : 'Credits', - description : 'Please enable credits by ``/credits settings``', - color : config.colors.error, - timestamp : new Date(), - footer : {iconURL : config.footer.icon, text : config.footer.text}, + title: 'Credits', + description: 'Please enable credits by ``/credits settings``', + color: config.colors.error, + timestamp: new Date(), + footer: { iconURL: config.footer.icon, text: config.footer.text }, }; - return interaction.editReply({embeds : [ embed ], ephemeral : true}); + return interaction.editReply({ embeds: [embed], ephemeral: true }); } if (interaction.options.getSubcommand() === 'balance') { diff --git a/src/events/guildCreate.js b/src/events/guildCreate.js index a730750..b68efb7 100644 --- a/src/events/guildCreate.js +++ b/src/events/guildCreate.js @@ -3,16 +3,18 @@ const logger = require('../handlers/logger'); const guilds = require('../helpers/database/models/guildSchema'); module.exports = { - name : 'interactionCreate', + name: 'interactionCreate', async execute(guild) { - const guildExist = await guilds.findOne({guildId : guild.id}) - .then(logger.debug(`Found guild: ${guild.id}`)) - .catch(logger.error); + const guildExist = await guilds + .findOne({ guildId: guild.id }) + .then(logger.debug(`Found guild: ${guild.id}`)) + .catch(logger.error); if (!guildExist) { - await guilds.create({guildId : guild.id}) - .then(() => logger.debug(`Create guild: ${guild.id} was success`)) - .catch((e) => logger.error(e)); + await guilds + .create({ guildId: guild.id }) + .then(() => logger.debug(`Create guild: ${guild.id} was success`)) + .catch((e) => logger.error(e)); } }, }; diff --git a/src/helpers/database/models/guildSchema.js b/src/helpers/database/models/guildSchema.js index 3a19607..f6e2d20 100644 --- a/src/helpers/database/models/guildSchema.js +++ b/src/helpers/database/models/guildSchema.js @@ -1,47 +1,47 @@ const mongoose = require('mongoose'); const guildSchema = new mongoose.Schema( - { - guildId : { - type : mongoose.SchemaTypes.Decimal128, - required : true, - unique : true, - index : true, + { + guildId: { + type: mongoose.SchemaTypes.Decimal128, + required: true, + unique: true, + index: true, + }, + credits: { + status: { + type: mongoose.SchemaTypes.Boolean, + default: false, }, - credits : { - status : { - type : mongoose.SchemaTypes.Boolean, - default : false, - }, - url : { - type : mongoose.SchemaTypes.String, - }, - token : { - type : mongoose.SchemaTypes.String, - }, - rate : { - type : mongoose.SchemaTypes.Number, - default : 1, - }, - minimumLength : { - type : mongoose.SchemaTypes.Number, - default : 5, - }, - timeout : { - type : mongoose.SchemaTypes.Number, - default : 5000, - }, - workRate : { - type : mongoose.SchemaTypes.Number, - default : 15, - }, - workTimeout : { - type : mongoose.SchemaTypes.Number, - default : 900000, - }, + url: { + type: mongoose.SchemaTypes.String, + }, + token: { + type: mongoose.SchemaTypes.String, + }, + rate: { + type: mongoose.SchemaTypes.Number, + default: 1, + }, + minimumLength: { + type: mongoose.SchemaTypes.Number, + default: 5, + }, + timeout: { + type: mongoose.SchemaTypes.Number, + default: 5000, + }, + workRate: { + type: mongoose.SchemaTypes.Number, + default: 15, + }, + workTimeout: { + type: mongoose.SchemaTypes.Number, + default: 900000, }, }, - {timestamps : true}, + }, + { timestamps: true } ); module.exports = mongoose.model('guild', guildSchema);