const { EmbedBuilder } = require('discord.js'); const { addInventory } = require('../structures/inventory'); const { addBank } = require('../structures/bank'); module.exports = { name: "reset", debug: false, description: "Reset a users data", usage: "[user]", permissions: { channel: ["VIEW_CHANNEL", "SEND_MESSAGES", "EMBED_LINKS"], member: ["MANAGE_GUILD"], }, options: [{ name: "user", description: "User to reset", value: "user", type: 6, required: true, }], SlashCommand: { /** * * @param {require("../structures/QuarksBot")} client * @param {import("discord.js").MessageCreate} 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('You don\'t have the permissions to use this command.'); const targetUserID = args[0].value.replace('<@!', '').replace('>', ''); const prompt = new EmbedBuilder() .setTitle(`Are you sure you want to reset this user?`) .setDescription('**Notice:** This will reset this users, cash, balance, and invnetory back to defaults.') .setColor(client.config.Colors.Yellow) const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId(`yes-${interaction.member.user.id}`) .setLabel("Yes") .setStyle(ButtonStyle.Danger), new ButtonBuilder() .setCustomId(`no-${interaction.member.user.id}`) .setLabel("No") .setStyle(ButtonStyle.Success) ) interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); client.once("interactionCreate", async (ButtonInteraction) => { if(!ButtonInteraction.isButton()) return; const queryString = ButtonInteraction.customId; if (!queryString.endsWith(ButtonInteraction.member.user.id)) { return ButtonInteraction.reply({ content: "This button is not for you", flags: (1 << 6) }) } if (queryString==`yes-${interaction.member.user.id}`) { const successEmbed = new EmbedBuilder() .setColor(client.config.Colors.Green) .setTitle('Successfully reset user\'s data') let inventory = await client.dbo.collection("inventories").findOne({"inventory.userID": interaction.member.user.id}).then(inventory => inventory); let banking = await client.dbo.collection("banks").findOne({"account.userID": interaction.member.user.id}).then(banking => banking); let inventoryReset = false; let bankingReset = false; if (!inventory) inventoryReset = true else inventory = inventory.inventory if (!banking) bankingReset = true else banking = banking.banking if (inventoryReset && bankingReset) return ButtonInteraction.update({ embeds: [successEmbed], components: [] }); if (!inventoryReset) { const success = addInventory(inventory.guilds, GuildDB.serverID, targetUserID, client); if (!success) { client.error(err); const embed = new EmbedBuilder() .setDescription(`**Internal Error:**\nUh Oh D: Its not you, its me.\nThis command has crashed\nContact the Developers\nhttps://discord.gg/YCXhvy9uZw`) .setColor(client.config.Colors.Red) return ButtonInteraction.update({ embeds: [embed], components: [] }); } } if (!bankingReset) { const success = addBank(banking.guilds, GuildDB.serverID, targetUserID, client); if (!success) { client.error(err); const embed = new EmbedBuilder() .setDescription(`**Internal Error:**\nUh Oh D: Its not you, its me.\nThis command has crashed\nContact the Developers\nhttps://discord.gg/YCXhvy9uZw`) .setColor(client.config.Colors.Red) return ButtonInteraction.update({ embeds: [embed], components: [] }); } } return ButtonInteraction.update({ embeds: [successEmbed], components: [] }); } else if (queryString==`no-${interaction.member.user.id}`) { const successEmbed = new EmbedBuilder() .setColor(client.config.Colors.Green) .setTitle(`The User was not reset`); return ButtonInteraction.update({ embeds: [successEmbed], components: [] }); } }); return; }, }, }