From f32c04b5bc47243f3572f88ac6c8ce6485dc3be4 Mon Sep 17 00:00:00 2001 From: Braeden Sowinski Date: Wed, 24 Aug 2022 11:39:32 -0700 Subject: [PATCH] updated wallet command --- commands/id-set.js | 94 ------------------------ commands/wallet.js | 176 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 176 insertions(+), 94 deletions(-) delete mode 100644 commands/id-set.js create mode 100644 commands/wallet.js diff --git a/commands/id-set.js b/commands/id-set.js deleted file mode 100644 index 6679efa..0000000 --- a/commands/id-set.js +++ /dev/null @@ -1,94 +0,0 @@ -const { MessageEmbed } = require('discord.js'); - -module.exports = { - name: "id-set", - debug: false, - description: "Set a value on your wallet ID", - usage: "[firstname/lastname/dob] [value]", - permissions: { - channel: ["VIEW_CHANNEL", "SEND_MESSAGES", "EMBED_LINKS"], - member: [], - }, - SlashCommand: { - options: [ - { - name: "change", - description: "What you'd like to change on your ID", - value: "change", - type: 3, - required: true, - choices: [ - { name: "firstname", value: "firstname" }, { name: "lastname", value: "lastname" }, { name: "date-of-birth", value: "dob" }, { name: "address", value: "address" }, - ], - }, - { - name: "value", - description: "New value of what you'd like to change", - value: "value", - type: 3, - required: true, - }, - ], - /** - * - * @param {require("../structures/QuarksBot")} client - * @param {import("discord.js").MessageCreate} message - * @param {string[]} args - * @param {*} param3 - */ - run: async (client, interaction, args, { GuildDB }) => { - if (GuildDB.customChannelStatus==true&&!GuildDB.allowedChannels.includes(interaction.channel_id)) { - return interaction.send(`You are not allowed to use the bot in this channel.`); - } - - const query = {"inventory.userID":interaction.member.user.id, [`inventory.guilds.${GuildDB.serverID}.items.type`]:"wallet"}; - let update, updateAction; - - if (args[0].value == "firstname") { - update = {$set: {[`inventory.guilds.${GuildDB.serverID}.ID.firstname`]: args[1].value}}; - updateAction = "firstname"; - - } else if (args[0].value == "lastname") { - update = {$set: {[`inventory.guilds.${GuildDB.serverID}.ID.lastname`]: args[1].value}}; - updateAction = "lastname"; - - } else if (args[0].value == "dob") { - const isDate = (date) => { - return (new Date(date) !== "Invalid Date") && !isNaN(new Date(date)); - } - - if (!isDate(args[1].value)) { - let embed = new MessageEmbed() - .setTitle("Invalid Date of Birth") - .setColor("RED"); - - return interaction.send({ embeds: [embed] }); - } - - update = {$set: {[`inventory.guilds.${GuildDB.serverID}.ID.dob`]: args[1].value}}; - updateAction = "date of birth"; - } else if (args[0].value == "address") { - update = {$set: {[`inventory.guilds.${GuildDB.serverID}.ID.addr`]: args[1].value}}; - updateAction = "address"; - } - - client.dbo.collection("inventories").updateOne(query, update, function (err, res) { - if (err) { - client.log(err); - const embed = new MessageEmbed() - .setDescriptions(`**Internal Error:** ${err}\nContact the Developers\nhttps://discord.gg/YCXhvy9uZw`) - .setColor("RED") - - return interaction.send({ embeds: [embed] }); - } - }); - - let successEmbed = new MessageEmbed() - .setTitle('Success') - .setDescription(`Successfully set ${updateAction}\nUse \`/inventory wallet\` to view your updated ID`) - .setColor('GREEN'); - - return interaction.send({ embeds: [successEmbed] }); - }, - }, -} \ No newline at end of file diff --git a/commands/wallet.js b/commands/wallet.js new file mode 100644 index 0000000..e4c9351 --- /dev/null +++ b/commands/wallet.js @@ -0,0 +1,176 @@ +const { MessageEmbed } = require('discord.js'); + +module.exports = { + name: "wallet", + debug: false, + description: "manage your wallet", + usage: "[cmd] [opt]", + permissions: { + channel: ["VIEW_CHANNEL", "SEND_MESSAGES", "EMBED_LINKS"], + member: [], + }, + SlashCommand: { + options: [ + { + name: "view", + description: "view your wallet", + value: "view", + type: 1, + }, + { + name: "id-set", + description: "set values on your id", + value: "id-set", + type: 1, + options: [ + { + name: "value", + description: "value to set on id", + value: "value", + type: 3, + choices: [ + { name: "firstname", value: "firstname" }, { name: "lastname", value: "lastname" }, + { name: "dob", value: "dob" }, { name: "address", value: "address" }, + ] + }, + { + name: "value", + description: "New value of what you'd like to change", + value: "value", + type: 3, + required: true, + }, + ] + } + ], + /** + * + * @param {require("../structures/QuarksBot")} client + * @param {import("discord.js").MessageCreate} message + * @param {string[]} args + * @param {*} param3 + */ + run: async (client, interaction, args, { GuildDB }) => { + if (GuildDB.customChannelStatus==true&&!GuildDB.allowedChannels.includes(interaction.channel_id)) { + return interaction.send(`You are not allowed to use the bot in this channel.`); + } + + let inventory = await client.dbo.collection("inventories").findOne({"inventory.userID": interaction.member.user.id}).then(inventory => inventory); + + if (!inventory) { + inventory = { + userID: interaction.member.user.id, + guilds: { + [GuildDB.serverID]: { + items: [{ + name: 'Wallet', + type: 'wallet', + description: '`/inventory wallet` to view wallet', + cash: 0.00, + ID: { + firstname: '', + lastname: '', + dob: '' + } + }] + } + } + } + + // Register inventory for user + let newInventory = new Inventory(); + newInventory.createInventory(interaction.member.user.id, GuildDB.serverID); + newInventory.save() + .catch(err => { + if (err) { + client.log(err); + const embed = new MessageEmbed() + .setDescriptions(`**Internal Error:** ${err}\nContact the Developers\nhttps://discord.gg/YCXhvy9uZw`) + .setColor("RED") + + return interaction.send({ embeds: [embed] }); + } + }); + } else inventory = inventory.inventory + + if (!client.exists(inventory.guilds[GuildDB.serverID])) { + const success = addInventory(inventory.guilds, GuildDB.serverID, interaction.member.user.id, client); + if (!success) { + client.log(err); + const embed = new MessageEmbed() + .setDescriptions(`**Internal Error:** ${err}\nContact the Developers\nhttps://discord.gg/YCXhvy9uZw`) + .setColor("RED") + + return interaction.send({ embeds: [embed] }); + } + } + + if (args[0].name == "view") { + // Display wallet + + let item = inventory.guilds[GuildDB.serverID].items[0]; + let ID = `${client.exists(item.ID.firstname) ? item.ID.firstname : '...'} ${client.exists(item.ID.lastname) ? item.ID.lastname : '...'} | ${client.exists(item.ID.dob) ? item.ID.dob : 'N/A'} | ${client.exists(item.ID.addr) ? item.ID.addr : 'N/A'}` + + let walletEmbed = new MessageEmbed() + .setTitle(`Your Wallet`) + .setColor(client.config.EmbedColor) + .addFields( + { name: '**Cash**', value: `$${item.cash.toFixed(2)}`, inline: true }, + { name: '**ID**', value: ID, inline: true }); + + return interaction.send({ embeds: [walletEmbed] }); + + } else if (args[0].name == "id-set") { + const query = {"inventory.userID":interaction.member.user.id, [`inventory.guilds.${GuildDB.serverID}.items.type`]:"wallet"}; + let update, updateAction; + + if (args[0].options[0].value == "firstname") { + update = {$set: {[`inventory.guilds.${GuildDB.serverID}.ID.firstname`]: args[0].options[1].value}}; + updateAction = "firstname"; + + } else if (args[0].options[0].value == "lastname") { + update = {$set: {[`inventory.guilds.${GuildDB.serverID}.ID.lastname`]: args[0].options[1].value}}; + updateAction = "lastname"; + + } else if (args[0].options[0].value == "dob") { + const isDate = (date) => { + return (new Date(date) !== "Invalid Date") && !isNaN(new Date(date)); + } + + if (!isDate(args[0].options[1].value)) { + let embed = new MessageEmbed() + .setTitle("Invalid Date of Birth") + .setColor("RED"); + + return interaction.send({ embeds: [embed] }); + } + + update = {$set: {[`inventory.guilds.${GuildDB.serverID}.ID.dob`]: args[0].options[1].value}}; + updateAction = "date of birth"; + } else if (args[0].options[0].value == "address") { + update = {$set: {[`inventory.guilds.${GuildDB.serverID}.ID.addr`]: args[0].options[1].value}}; + updateAction = "address"; + } + + client.dbo.collection("inventories").updateOne(query, update, function (err, res) { + if (err) { + client.log(err); + const embed = new MessageEmbed() + .setDescriptions(`**Internal Error:** ${err}\nContact the Developers\nhttps://discord.gg/YCXhvy9uZw`) + .setColor("RED") + + return interaction.send({ embeds: [embed] }); + } + }); + + let successEmbed = new MessageEmbed() + .setTitle('Success') + .setDescription(`Successfully set ${updateAction}\nUse \`/inventory wallet\` to view your updated ID`) + .setColor('GREEN'); + + return interaction.send({ embeds: [successEmbed] }); + + } + }, + }, +} \ No newline at end of file