From a5994d3ae9343aa53e612c32ab400eecb453cf5c Mon Sep 17 00:00:00 2001 From: Braeden Sowinski Date: Mon, 4 Jul 2022 22:35:27 -0700 Subject: [PATCH] fixes/search command --- commands/inventory-add.js | 4 +- commands/inventory.js | 13 +++--- commands/search.js | 89 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+), 8 deletions(-) create mode 100644 commands/search.js diff --git a/commands/inventory-add.js b/commands/inventory-add.js index f132859..4338554 100644 --- a/commands/inventory-add.js +++ b/commands/inventory-add.js @@ -79,7 +79,7 @@ module.exports = { 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.inventory); + let inventory = await client.dbo.collection("inventories").findOne({"inventory.userID":interaction.member.user.id}).then(inventory => inventory); if (!inventory) { inventory = { @@ -108,7 +108,7 @@ module.exports = { return client.sendError(channel, err); } }); - } + } else inventory = inventory.inventory; if (args[0].name == 'firearm') { // Add firearm to inventory diff --git a/commands/inventory.js b/commands/inventory.js index 470aa52..8f31d35 100644 --- a/commands/inventory.js +++ b/commands/inventory.js @@ -105,7 +105,7 @@ module.exports = { name: 'Wallet', type: 'wallet', description: '`/inventory wallet` to view wallet', - cash: 0, + cash: 0.00, ID: { firstname: '', lastname: '', @@ -122,7 +122,7 @@ module.exports = { if (err) { client.log(err); let embed = new MessageEmbed() - .setTitle("Please provide a valid item number") + .setTitle(err) .setColor("RED") return interaction.send({ embeds: [embed] }); @@ -247,7 +247,7 @@ module.exports = { let item = inventory.items[args[0].options[0].value-1]; let targetUserID = args[0].options[1].value.replace('<@!', '').replace('>', ''); - let targetUserInventory = await client.dbo.collection("inventories").findOne({"inventory.userID":targetUserID}).then(user => user); + let targetUserInventory = await client.dbo.collection("inventories").findOne({"inventory.userID":targetUserID}).then(inventory => inventory); if (!targetUserInventory) { // Register inventory for user with item givn @@ -259,18 +259,19 @@ module.exports = { if (err) { client.log(err); let embed = new MessageEmbed() - .setTitle("Please provide a valid item number") + .setTitle(err) .setColor("RED") return interaction.send({ embeds: [embed] }); } }); } else { + targetUserInventory = targetUserInventory.inventory; client.dbo.collection('inventories').updateOne({'inventory.userID': interaction.member.user.id}, {$pull: {'inventory.items': item}}, function(err, res) { if (err) { client.log(err); let embed = new MessageEmbed() - .setTitle("Please provide a valid item number") + .setTitle(err) .setColor("RED") return interaction.send({ embeds: [embed] }); @@ -280,7 +281,7 @@ module.exports = { if (err) { client.log(err); let embed = new MessageEmbed() - .setTitle("Please provide a valid item number") + .setTitle(err) .setColor("RED") return interaction.send({ embeds: [embed] }); diff --git a/commands/search.js b/commands/search.js new file mode 100644 index 0000000..83b43b6 --- /dev/null +++ b/commands/search.js @@ -0,0 +1,89 @@ +const { MessageEmbed } = require('discord.js'); + +module.exports = { + name: "search", + description: "Search a users inventory", + usage: "[user]", + permissions: { + channel: ["VIEW_CHANNEL", "SEND_MESSAGES", "EMBED_LINKS"], + member: [], + }, + SlashCommand: { + options: [ + { + name: "user", + description: "user to give item", + value: "user", + type: 6, + 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 targetUserID = args[0].value.replace('<@!', '').replace('>', ''); + let targetUserInventory = await client.dbo.collection("inventories").findOne({"inventory.userID":targetUserID}).then(inventory => inventory); + let inventory; + + if (!targetUserInventory) { + inventory = { + userID: interaction.member.user.id, + items: [{ + name: 'Wallet', + type: 'wallet', + description: '`/inventory wallet` to view wallet', + cash: 0.00, + ID: { + firstname: '', + lastname: '', + dob: '' + } + }] + } + + // Register inventory for user with item givn + let newInventory = new Inventory(); + newInventory.createInventory(targetUserID); + newInventory.addItem(item); + newInventory.save() + .catch(err => { + if (err) { + client.log(err); + let embed = new MessageEmbed() + .setTitle(err) + .setColor("RED") + + return interaction.send({ embeds: [embed] }); + } + }); + } else inventory = targetUserInventory.inventory; + + // Display Inventory + + // This lame line of code to get username without ping on discord + const User = client.users.cache.get(targetUserID); + + let inventoryEmbed = new MessageEmbed() + .setColor(client.config.EmbedColor) + .setTitle(`${User.tag.split('#')[0]}'s Inventory`); + + let description = "```"; + for (let i = 0; i < inventory.items.length; i++) { + description += `${i+1}. ${inventory.items[i].name} - ${inventory.items[i].description}\n`; + } + description += "```"; + inventoryEmbed.setDescription(description); + + return interaction.send({ embeds: [inventoryEmbed] }); + }, + }, +} \ No newline at end of file