const { MessageEmbed } = require('discord.js'); const action = ['pick up', 'grab', 'get', 'aquire', 'obtain', 'gain', 'take possesssion of']; module.exports = { name: "inventory-add", description: "add item to inventory", usage: "[item]", permissions: { channel: ["VIEW_CHANNEL", "SEND_MESSAGES", "EMBED_LINKS"], member: [], }, SlashCommand: { options: [ { name: "firearm", description: "add firearm to inventory", value: "firearm", type: 1, options: [ { name: "type", description: "type of firearm", value: "type", type: 3, required: true, choices: [ { name: 'Pistol', value: 'Pistol' }, { name: 'Revolver', value: 'Revolver' }, { name: 'Shotgun', value: 'Shotgun' }, { name: 'Submachine Gun', value: 'Submachine Gun' }, { name: 'Light Machine Gun', value: 'Ligh Machine Gun' }, { name: 'Assault Rifle', value: 'Assault Rifle' }, { name: 'Sniper Rifle', value: 'Sniper Rifle' }, ] }, { name: "serialnumber", description: "firearm serial number", value: "serialnumber", type: 3, required: true, }, { name: "owner", description: "Firearm Owner's Full Name", value: "owner", type: 3, required: true, }, { name: "description", description: "firearm description", value: "description", type: 3, required: true, } ] }, { name: "generic", description: "add a generic item to inventory", value: "generic", type: 1, options: [ { name: "name", description: "item name", value: "name", type: 3, required: true, }, { name: "description", description: "item description", value: "description", 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, items: [{ name: 'Wallet', type: 'wallet', description: '`/inventory wallet` to view wallet', cash: 0, ID: { firstname: '', lastname: '', dob: '' } }] } // Register inventory for user let newInventory = new Inventory(); newInventory.createInventory(interaction.member.user.id); newInventory.save() .catch(err => { if (err) { client.log(err); const channel = interaction.guild.channels.cache.find(channel => channel.id === GuildDB.tweetChannel); return client.sendError(channel, err); } }); } else inventory = inventory.inventory; if (args[0].name == 'firearm') { // Add firearm to inventory let firearm = { type: 'firearm', weaponType: args[0].options[0].value, serial: args[0].options[1].value, ownerName: args[0].options[2].value } client.dbo.collection('inventories').updateOne({'inventory.userID': interaction.member.user.id}, {$push: {'inventory.items': firearm}}, function(err, res) { if (err) { client.log(err); let embed = new MessageEmbed() .setTitle(err) .setColor("RED") return interaction.send({ embeds: [embed] }); } let message = new MessageEmbed() .setTitle(`You ${action[Math.floor(Math.random() * actions.length)]} a ${firearm.weaponType}`) .setColor(client.config.EmbedColor); return interaction.send({ embeds: [message] }); }); } else { // Add generic item to inventory let item = { type: 'generic', name: args[0].options[0].value, description: args[0].options[1].value } client.dbo.collection('inventories').updateOne({'inventory.userID': interaction.member.user.id}, {$push: {'inventory.items': item}}, function(err, res) { if (err) { client.log(err); let embed = new MessageEmbed() .setTitle(err) .setColor("RED") return interaction.send({ embeds: [embed] }); } let message = new MessageEmbed() .setTitle(`You ${action[Math.floor(Math.random() * actions.length)]} a ${item.name}`) .setColor(client.config.EmbedColor); return interaction.send({ embeds: [message] }); }); } }, }, }