From 76f99c36b1764180977892ba4d772747c8fc6192 Mon Sep 17 00:00:00 2001 From: Braeden Sowinski Date: Wed, 30 Aug 2023 20:37:02 -0700 Subject: [PATCH] change/move-money-command-to-admin-command --- commands/admin.js | 88 +++++++++++++++++++++++++++++++++ commands/money.js | 121 ---------------------------------------------- package.json | 2 +- 3 files changed, 89 insertions(+), 122 deletions(-) delete mode 100644 commands/money.js diff --git a/commands/admin.js b/commands/admin.js index 65ed876..afd3da5 100644 --- a/commands/admin.js +++ b/commands/admin.js @@ -91,6 +91,51 @@ module.exports = { type: 3, required: true, }] + }, { + name: "add-money", + description: "Add money to user", + value: "add", + type: 1, + options: [ + { + name: "amount", + description: "The amount to add to balance", + value: "amount", + type: 10, + min_value: 0.01, + required: true, + }, + { + name: "to", + description: "User to alter balance", + value: "to", + type: 6, + required: true, + }, + ] + }, + { + name: "remove-money", + description: "Remove or remove money from a user", + value: "remove", + type: 1, + options: [ + { + name: "amount", + description: "The amount to add to balance", + value: "amount", + type: 10, + min_value: 0.01, + required: true, + }, + { + name: "from", + description: "User to alter balance", + value: "from", + type: 6, + required: true, + }, + ] }], SlashCommand: { /** @@ -312,6 +357,49 @@ module.exports = { return interaction.send({ embeds: [banned] }); + } else if (args[0].name == 'add-money' || args[0].name == 'remove-money') { + + const targetUserID = args[0].options[1].value; + let banking = await client.dbo.collection("users").findOne({"user.userID": targetUserID}).then(banking => banking); + + if (!banking) { + banking = { + userID: targetUserID, + guilds: { + [GuildDB.serverID]: { + balance: GuildDB.startingBalance, + } + } + } + + // Register bank for user + let newBank = new User(); + newBank.createUser(targetUserID, GuildDB.serverID, GuildDB.startingBalance); + newBank.save().catch(err => { + if (err) return client.sendInternalError(interaction, err); + }); + + } else banking = banking.user; + + if (!client.exists(banking.guilds[GuildDB.serverID])) { + const success = addUser(banking.guilds, GuildDB.serverID, targetUserID, client, GuildDB.startingBalance); + if (!success) return client.sendInternalError(interaction, 'Failed to add bank'); + } + + let newBalance = args[0].name == 'add-money' + ? banking.guilds[GuildDB.serverID].balance + args[0].options[0].value + : banking.guilds[GuildDB.serverID].balance - args[0].options[0].value; + + client.dbo.collection("users").updateOne({"user.userID":targetUserID},{$set:{[`user.guilds.${GuildDB.serverID}.balance`]:newBalance}}, function(err, res) { + if (err) return client.sendInternalError(interaction, err); + }); + + const successEmbed = new EmbedBuilder() + .setDescription(`Successfully ${args[0].name == 'add-money' ? 'added' : 'removed'} **$${args[0].options[0].value.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}** ${args[0].name == 'add' ? 'to' : 'from'} <@${targetUserID}>'s balance`) + .setColor(client.config.Colors.Green); + + return interaction.send({ embeds: [successEmbed] }); + } } }, diff --git a/commands/money.js b/commands/money.js deleted file mode 100644 index 26d0455..0000000 --- a/commands/money.js +++ /dev/null @@ -1,121 +0,0 @@ -const { EmbedBuilder } = require('discord.js'); -const { User, addUser } = require('../structures/user'); -const bitfieldCalculator = require('discord-bitfield-calculator'); - -module.exports = { - name: "money", - debug: false, - global: false, - description: "add/remove money from user", - usage: "[opt.] [user] [amount]", - permissions: { - channel: ["VIEW_CHANNEL", "SEND_MESSAGES", "EMBED_LINKS"], - member: ["MANAGE_GUILD"], - }, - options: [ - { - name: "add", - description: "Add money to user", - value: "add", - type: 1, - options: [ - { - name: "amount", - description: "The amount to add to balance", - value: "amount", - type: 10, - min_value: 0.01, - required: true, - }, - { - name: "to", - description: "User to alter balance", - value: "to", - type: 6, - required: true, - }, - ] - }, - { - name: "remove", - description: "Remove or remove money from a user", - value: "remove", - type: 1, - options: [ - { - name: "amount", - description: "The amount to add to balance", - value: "amount", - type: 10, - min_value: 0.01, - required: true, - }, - { - name: "from", - description: "User to alter balance", - value: "from", - type: 6, - required: true, - }, - ] - }, - ], - SlashCommand: { - /** - * - * @param {require("../structures/QuarksBot")} client - * @param {import("discord.js").Message} message - * @param {string[]} args - * @param {*} param3 - */ - run: async (client, interaction, args, { GuildDB }) => { - const permissions = bitfieldCalculator.permissions(interaction.member.permissions); - let canUseCommand = false; - - if (permissions.includes("MANAGE_GUILD")) canUseCommand = true; - if (client.exists(GuildDB.botAdmin) && interaction.member.roles.includes(GuildDB.botAdmin)) canUseCommand = true; - if (!canUseCommand) return interaction.send({ content: 'You don\'t have the permissions to use this command.' }); - - const targetUserID = args[0].options[1].value.replace('<@!', '').replace('>', ''); - let banking = await client.dbo.collection("users").findOne({"user.userID": targetUserID}).then(banking => banking); - - if (!banking) { - banking = { - userID: targetUserID, - guilds: { - [GuildDB.serverID]: { - balance: GuildDB.startingBalance, - } - } - } - - // Register bank for user - let newBank = new User(); - newBank.createUser(targetUserID, GuildDB.serverID, GuildDB.startingBalance); - newBank.save().catch(err => { - if (err) return client.sendInternalError(interaction, err); - }); - - } else banking = banking.user; - - if (!client.exists(banking.guilds[GuildDB.serverID])) { - const success = addUser(banking.guilds, GuildDB.serverID, targetUserID, client, GuildDB.startingBalance); - if (!success) return client.sendInternalError(interaction, 'Failed to add bank'); - } - - let newBalance = args[0].name == 'add' - ? banking.guilds[GuildDB.serverID].balance + args[0].options[0].value - : banking.guilds[GuildDB.serverID].balance - args[0].options[0].value; - - client.dbo.collection("users").updateOne({"user.userID":targetUserID},{$set:{[`user.guilds.${GuildDB.serverID}.balance`]:newBalance}}, function(err, res) { - if (err) return client.sendInternalError(interaction, err); - }); - - const successEmbed = new EmbedBuilder() - .setDescription(`Successfully ${args[0].name == 'add' ? 'added' : 'removed'} **$${args[0].options[0].value.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}** ${args[0].name == 'add' ? 'to' : 'from'} <@${targetUserID}>'s balance`) - .setColor(client.config.Colors.Green); - - return interaction.send({ embeds: [successEmbed] }); - }, - }, -} \ No newline at end of file diff --git a/package.json b/package.json index 7decd0a..9250b17 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dayz-armbands", - "version": "8.8.0", + "version": "8.9.0", "description": "A General Purpose Discord Bot for DayZ Servers.", "main": "index.js", "nodemonConfig": {