diff --git a/commands/bank.js b/commands/bank.js index d4fca7c..222a290 100644 --- a/commands/bank.js +++ b/commands/bank.js @@ -190,11 +190,11 @@ module.exports = { if (args[0].name == 'deposit') { if (banking.guilds[GuildDB.serverID].account.cash.toFixed(2) - args[0].options[0].value < 0) { - const nsf = new EmbedBuilder() - .setDescription('**Bank Notice:** NSF. Non sufficient funds') - .setColor(client.config.Colors.Red); + const nsf = new EmbedBuilder() + .setDescription('**Bank Notice:** NSF. Non sufficient funds') + .setColor(client.config.Colors.Red); - return interaction.send({ embeds: [nsf] }); + return interaction.send({ embeds: [nsf] }); } newBalance = banking.guilds[GuildDB.serverID].account.balance + args[0].options[0].value; @@ -223,9 +223,9 @@ module.exports = { }); const successEmbed = new EmbedBuilder() - .setTitle('Bank Notice:') - .setDescription(`Successfully deposited **$${args[0].options[0].value.toFixed(2)}**\nUse \`/bank balance\` to view your balance`) - .setColor('GREEN'); + .setTitle('Bank Notice:') + .setDescription(`Successfully deposited **$${args[0].options[0].value.toFixed(2)}**\nUse \`/bank balance\` to view your balance`) + .setColor('GREEN'); return interaction.send({ embeds: [successEmbed] }); @@ -264,9 +264,9 @@ module.exports = { }); const successEmbed = new EmbedBuilder() - .setTitle('Bank Notice:') - .setDescription(`Successfully withdrew **$${args[0].options[0].value.toFixed(2)}**\nUse \`/bank balance\` or \`/inventory wallet\` to view your cash balance`) - .setColor('GREEN'); + .setTitle('Bank Notice:') + .setDescription(`Successfully withdrew **$${args[0].options[0].value.toFixed(2)}**\nUse \`/bank balance\` or \`/inventory wallet\` to view your cash balance`) + .setColor('GREEN'); return interaction.send({ embeds: [successEmbed] }); diff --git a/commands/inventory.js b/commands/inventory.js index 3846da9..43c6045 100644 --- a/commands/inventory.js +++ b/commands/inventory.js @@ -109,13 +109,6 @@ module.exports = { value: "give", type: 1, options: [ - { - name: "item-number", - description: "Item to interact with", - value: 1, - type: 4, - required: true, - }, { name: "user", description: "User to give item", @@ -415,72 +408,117 @@ module.exports = { }); } else if (args[0].name == 'give') { - // Give user Item from inventory + if (inventory.guilds[GuildDB.serverID].items.length == 1) { + const nsi = new EmbedBuilder() + .setDescription('**Notice:** No items to give') + .setColor(client.config.Colors.Yellow); + + return interaction.send({ embeds: [nsi] }); + } + + let items = new SelectMenuBuilder() + .setCustomId(`inventorySelect-${interaction.member.user.id}`) + .setPlaceholder('Select Item to view') + .addOptions( + { + label: 'View All', + description: 'View a list of all your inventory items', + value: 'all', + } + ) + + for (let i = 1; i < inventory.guilds[GuildDB.serverID].items.length; i++) { + if (inventory.guilds[GuildDB.serverID].items[i].type == 'firearm') { + items.addOptions({ + label: inventory.guilds[GuildDB.serverID].items[i].weaponType, + description: 'View this items description', + value: `${i}` + }) + } else { + items.addOptions({ + label: inventory.guilds[GuildDB.serverID].items[i].name, + description: 'View this items description', + value: `${i}` + }) + } + } - if (args[0].options[0].value < 1 || args[0].options[0].value > inventory.guilds[GuildDB.serverID].items.length) { - let embed = new EmbedBuilder() - .setTitle("Please provide a valid item number") - .setColor(client.config.Colors.Red) + const opt = new ActionRowBuilder().addComponents(items); - return interaction.send({ embeds: [embed] }); - } + interaction.send({ components: [opt], flags: (1 << 6) }) - let item = inventory.guilds[GuildDB.serverID].items[args[0].options[0].value-1]; - if (item.type == 'wallet') { - let embed = new EmbedBuilder() - .setTitle("Cannot Give Wallet") - .setColor(client.config.Colors.Red); + client.once("interactionCreate", async MenuInteraction => { + if(!MenuInteraction.isSelectMenu()) return; + if (!MenuInteraction.customId.endsWith(MenuInteraction.member.user.id)) { + return MenuInteraction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + + let item = inventory.guilds[GuildDB.serverID].items[MenuInteraction.values[0]]; + let targetUserID = args[0].options[1].value.replace('<@!', '').replace('>', ''); + let targetUserInventory = await client.dbo.collection("inventories").findOne({"inventory.userID":targetUserID}).then(inventory => inventory); - return interaction.send({ embeds: [embed] }); - } - let targetUserID = args[0].options[1].value.replace('<@!', '').replace('>', ''); - let targetUserInventory = await client.dbo.collection("inventories").findOne({"inventory.userID":targetUserID}).then(inventory => inventory); + if (!targetUserInventory) { + // Register inventory for user with item givn + let newInventory = new Inventory(); + newInventory.createInventory(targetUserID, GuildDB.serverID); + newInventory.addItem(item); + newInventory.save() + .catch(err => { + if (err) { + client.log(err); + const embed = new EmbedBuilder() + .setDescriptions(`**Internal Error:** ${err}\nContact the Developers\nhttps://discord.gg/YCXhvy9uZw`) + .setColor(client.config.Colors.Red) + + return MenuInteraction.update({ embeds: [embed], components: [] }); + } + }); + } else { + if (!client.exists(targetUserInventory.guilds[GuildDB.serverID])) { + const success = addInventory(inventory.guilds, GuildDB.serverID, targetUserID, client); + if (!success) { + client.log(err); + const embed = new EmbedBuilder() + .setDescriptions(`**Internal Error:** ${err}\nContact the Developers\nhttps://discord.gg/YCXhvy9uZw`) + .setColor(client.config.Colors.Red) + + return MenuInteraction.update({ embeds: [embed], components: [] }); + } + } - if (!targetUserInventory) { - // Register inventory for user with item givn - let newInventory = new Inventory(); - newInventory.createInventory(targetUserID, GuildDB.serverID); - newInventory.addItem(item); - newInventory.save() - .catch(err => { + client.dbo.collection('inventories').updateOne({'inventory.userID': interaction.member.user.id}, {$pull: {[`inventory.guilds.${GuildDB.serverID}.items`]: item}}, function(err, res) { if (err) { client.log(err); const embed = new EmbedBuilder() .setDescriptions(`**Internal Error:** ${err}\nContact the Developers\nhttps://discord.gg/YCXhvy9uZw`) .setColor(client.config.Colors.Red) - return interaction.send({ embeds: [embed] }); + return MenuInteraction.update({ embeds: [embed], components: [] }); } }); - } else { - client.dbo.collection('inventories').updateOne({'inventory.userID': interaction.member.user.id}, {$pull: {[`inventory.guilds.${GuildDB.serverID}.items`]: item}}, function(err, res) { - if (err) { - client.log(err); - const embed = new EmbedBuilder() - .setDescriptions(`**Internal Error:** ${err}\nContact the Developers\nhttps://discord.gg/YCXhvy9uZw`) - .setColor(client.config.Colors.Red) - - return interaction.send({ embeds: [embed] }); - } - }); - client.dbo.collection('inventories').updateOne({'inventory.userID': targetUserID}, {$push: {[`inventory.guilds.${GuildDB.serverID}.items`]: item}}, function(err, res) { - if (err) { - client.log(err); - const embed = new EmbedBuilder() - .setDescriptions(`**Internal Error:** ${err}\nContact the Developers\nhttps://discord.gg/YCXhvy9uZw`) - .setColor(client.config.Colors.Red) - - return interaction.send({ embeds: [embed] }); - } - }); - } + client.dbo.collection('inventories').updateOne({'inventory.userID': targetUserID}, {$push: {[`inventory.guilds.${GuildDB.serverID}.items`]: item}}, function(err, res) { + if (err) { + client.log(err); + const embed = new EmbedBuilder() + .setDescriptions(`**Internal Error:** ${err}\nContact the Developers\nhttps://discord.gg/YCXhvy9uZw`) + .setColor(client.config.Colors.Red) + + return MenuInteraction.update({ embeds: [embed], components: [] }); + } + }); + } - let successEmbed = new EmbedBuilder() - .setTitle('Success') - .setDescription(`Successfully gave <@${targetUserID}> ${item.name}`) - .setColor('GREEN'); + let successEmbed = new EmbedBuilder() + .setTitle('Success') + .setDescription(`Successfully gave <@${targetUserID}> ${item.name}`) + .setColor('GREEN'); - return interaction.send({ embeds: [successEmbed] }); + return MenuInteraction.update({ embeds: [successEmbed], components: [] }); + }); + return; } else if (args[0].name == 'clear') { const prompt = new EmbedBuilder() diff --git a/config/config.js b/config/config.js index 725d74c..69faa9a 100644 --- a/config/config.js +++ b/config/config.js @@ -12,6 +12,7 @@ module.exports = { Default: "#6e5145", Red: "#ba0f0f", Green: "#32a852", + Yellow: "#ffb01f" }, Permissions: 2205281600, mongoURI: process.env.mongoURI || "mongodb://localhost:27017",