From 70d3858bafa23ad9e3adc360eaa6241066225de4 Mon Sep 17 00:00:00 2001 From: Braeden Sowinski Date: Mon, 29 Aug 2022 21:26:22 -0700 Subject: [PATCH] debug button/menu interactions --- commands/311.js | 59 +--- commands/911.js | 59 +--- commands/bank.js | 197 ++++++++---- commands/fine.js | 4 +- commands/help.js | 20 +- commands/inventory.js | 252 +++------------ commands/money.js | 4 +- commands/reset.js | 69 +--- commands/settings.js | 375 ++-------------------- commands/work.js | 4 +- events/interactionCreate.js | 620 ++++++++++++++++++++++++++++++++++++ structures/QuarksBot.js | 15 +- 12 files changed, 844 insertions(+), 834 deletions(-) create mode 100644 events/interactionCreate.js diff --git a/commands/311.js b/commands/311.js index 620c584..082f779 100644 --- a/commands/311.js +++ b/commands/311.js @@ -82,73 +82,22 @@ module.exports = { } const ID = Math.floor(100000 + Math.random() * 900000); - let status = 'Open'; - let Description = `**Call ID** ${ID}\n\n**Caller** ${args[0].value}\n**Service** ${args[1].value}\n**Location** ${args[2].value}\n**Nature** ${args[0].value}\n\n**Status**\n\`\`\`diff\n${status=='Open'?'+':'-'} ${status}\`\`\`` + let Description = `**Call ID** ${ID}\n\n**Caller** ${args[0].value}\n**Service** ${args[1].value}\n**Location** ${args[2].value}\n**Nature** ${args[0].value}` - let embed311 = new EmbedBuilder() + const embed311 = new EmbedBuilder() .setColor(client.config.Colors.Default) .setTitle('311 Call Alert') .setTimestamp() .setDescription(Description) - let opt = new ActionRowBuilder() + const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() - .setCustomId(`close-${GuildDB.dispatcherRole}`) - .setLabel("Close") - .setStyle(ButtonStyle.Primary), - ) - .addComponents( - new ButtonBuilder() - .setCustomId(`delete-${GuildDB.dispatcherRole}`) + .setCustomId(`311-delete`) .setLabel("Delete") .setStyle(ButtonStyle.Danger), ) - client.on("interactionCreate", ButtonInteraction => { - if(!ButtonInteraction.isButton()) return; - const queryString = ButtonInteraction.customId; - if (!ButtonInteraction.member._roles.includes(GuildDB.dispatcherRole)) { - return ButtonInteraction.reply({ - content: "This button is not for you", - flags: (1 << 6) - }) - } - if (queryString.startsWith('close')) { - status = 'Closed'; - Description = `**Call ID** ${ID}\n\n**Caller** ${args[0].value}\n**Service** ${args[1].value}\n**Location** ${args[2].value}\n**Nature** ${args[0].value}\n\n**Status**\n\`\`\`diff\n${status=='Open'?'+':'-'} ${status}\`\`\`` - - } else if (queryString.startsWith('open')) { - status = 'Open'; - Description = `**Call ID** ${ID}\n\n**Caller** ${args[0].value}\n**Service** ${args[1].value}\n**Location** ${args[2].value}\n**Nature** ${args[0].value}\n\n**Status**\n\`\`\`diff\n${status=='Open'?'+':'-'} ${status}\`\`\`` - } else if (queryString.startsWith('delete')) { - const closedEmbed = new EmbedBuilder().setTitle('Deleted Call').setColor(client.config.Colors.Default); - return ButtonInteraction.update({ embeds: [closedEmbed], components: [] }); - } - - embed311 = new EmbedBuilder() - .setColor(client.config.Colors.Default) - .setTitle('311 Call Alert') - .setTimestamp() - .setDescription(Description) - - opt = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setCustomId(`${queryString.startsWith('close')?'Open':'Close'}-${GuildDB.dispatcherRole}`) - .setLabel(queryString.startsWith('close')?'Open':'Close') - .setStyle(ButtonStyle.Primary), - ) - .addComponents( - new ButtonBuilder() - .setCustomId(`delete-${GuildDB.dispatcherRole}`) - .setLabel("Delete") - .setStyle(ButtonStyle.Danger), - ) - - return ButtonInteraction.update({ embeds: [embed311], components: [opt] }); - }) - const channel = interaction.guild.channels.cache.find(channel => channel.id === GuildDB.dispatchChannel); if (!channel) { const embed = new EmbedBuilder() diff --git a/commands/911.js b/commands/911.js index 06545c9..1878ead 100644 --- a/commands/911.js +++ b/commands/911.js @@ -82,73 +82,22 @@ module.exports = { } const ID = Math.floor(100000 + Math.random() * 900000); - let status = 'Open'; - let Description = `**Call ID** ${ID}\n\n**Caller** ${args[0].value}\n**Service** ${args[1].value}\n**Location** ${args[2].value}\n**Nature** ${args[0].value}\n\n**Status**\n\`\`\`diff\n${status=='Open'?'+':'-'} ${status}\`\`\`` + let Description = `**Call ID** ${ID}\n\n**Caller** ${args[0].value}\n**Service** ${args[1].value}\n**Location** ${args[2].value}\n**Nature** ${args[0].value}` - let embed911 = new EmbedBuilder() + const embed911 = new EmbedBuilder() .setColor(client.config.Colors.Default) .setTitle('911 Call Alert') .setTimestamp() .setDescription(Description) - let opt = new ActionRowBuilder() + const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() - .setCustomId(`close-${GuildDB.dispatcherRole}`) - .setLabel("Close") - .setStyle(ButtonStyle.Primary), - ) - .addComponents( - new ButtonBuilder() - .setCustomId(`delete-${GuildDB.dispatcherRole}`) + .setCustomId(`911-delete`) .setLabel("Delete") .setStyle(ButtonStyle.Danger), ) - client.on("interactionCreate", ButtonInteraction => { - if(!ButtonInteraction.isButton()) return; - const queryString = ButtonInteraction.customId; - if (!ButtonInteraction.member._roles.includes(GuildDB.dispatcherRole)) { - return ButtonInteraction.reply({ - content: "This button is not for you", - flags: (1 << 6) - }) - } - if (queryString.startsWith('close')) { - status = 'Closed'; - Description = `**Call ID** ${ID}\n\n**Caller** ${args[0].value}\n**Service** ${args[1].value}\n**Location** ${args[2].value}\n**Nature** ${args[0].value}\n\n**Status**\n\`\`\`diff\n${status=='Open'?'+':'-'} ${status}\`\`\`` - - } else if (queryString.startsWith('open')) { - status = 'Open'; - Description = `**Call ID** ${ID}\n\n**Caller** ${args[0].value}\n**Service** ${args[1].value}\n**Location** ${args[2].value}\n**Nature** ${args[0].value}\n\n**Status**\n\`\`\`diff\n${status=='Open'?'+':'-'} ${status}\`\`\`` - } else if (queryString.startsWith('delete')) { - const closedEmbed = new EmbedBuilder().setTitle('Deleted Call').setColor(client.config.Colors.Default); - return ButtonInteraction.update({ embeds: [closedEmbed], components: [] }); - } - - embed911 = new EmbedBuilder() - .setColor(client.config.Colors.Default) - .setTitle('911 Call Alert') - .setTimestamp() - .setDescription(Description) - - opt = new ActionRowBuilder() - .addComponents( - new ButtonBuilder() - .setCustomId(`${queryString.startsWith('close')?'Open':'Close'}-${GuildDB.dispatcherRole}`) - .setLabel(queryString.startsWith('close')?'Open':'Close') - .setStyle(ButtonStyle.Primary), - ) - .addComponents( - new ButtonBuilder() - .setCustomId(`delete-${GuildDB.dispatcherRole}`) - .setLabel("Delete") - .setStyle(ButtonStyle.Danger), - ) - - return ButtonInteraction.update({ embeds: [embed911], components: [opt] }); - }) - const channel = interaction.guild.channels.cache.find(channel => channel.id === GuildDB.dispatchChannel); if (!channel) { const embed = new EmbedBuilder() diff --git a/commands/bank.js b/commands/bank.js index a81da45..4fc1600 100644 --- a/commands/bank.js +++ b/commands/bank.js @@ -113,7 +113,7 @@ module.exports = { return interaction.send(`You are not allowed to use the bot in this channel.`); } - let banking = await client.dbo.collection("banks").findOne({"account.userID": interaction.member.user.id}).then(banking => banking); + let banking = await client.dbo.collection("banks").findOne({"banking.userID": interaction.member.user.id}).then(banking => banking); if (!banking) { banking = { @@ -160,6 +160,26 @@ module.exports = { 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: '', + addr: '', + } + }] + } + } + } + // Register inventory for user let newInventory = new Inventory(); newInventory.createInventory(interaction.member.user.id, GuildDB.serverID); @@ -174,7 +194,7 @@ module.exports = { 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); @@ -197,10 +217,10 @@ module.exports = { return interaction.send({ embeds: [nsf] }); } - newBalance = banking.guilds[GuildDB.serverID].account.balance + args[0].options[0].value; - newCash = Math.abs(banking.guilds[GuildDB.serverID].account.cash.toFixed(2) - args[0].options[0].value); + const newBalance = banking.guilds[GuildDB.serverID].account.balance + args[0].options[0].value; + const newCash = Math.abs(banking.guilds[GuildDB.serverID].account.cash.toFixed(2) - args[0].options[0].value); - client.dbo.collection("banks").updateOne({"account.userID":interaction.member.user.id},{$set:{[`banking.guilds.${GuildDB.serverID}.account.balance`]:newBalance,[`banking.guilds.${GuildDB.serverID}.account.cash`]:newCash}}, function(err, res) { + client.dbo.collection("banks").updateOne({"banking.userID":interaction.member.user.id},{$set:{[`banking.guilds.${GuildDB.serverID}.account.balance`]:newBalance,[`banking.guilds.${GuildDB.serverID}.account.cash`]:newCash}}, function(err, res) { if (err) { client.error(err); const embed = new EmbedBuilder() @@ -238,10 +258,10 @@ module.exports = { return interaction.send({ embeds: [nsf] }); } - newBalance = banking.guilds[GuildDB.serverID].account.balance - args[0].options[0].value; - newCash = banking.guilds[GuildDB.serverID].account.cash + args[0].options[0].value; + const newBalance = banking.guilds[GuildDB.serverID].account.balance - args[0].options[0].value; + const newCash = banking.guilds[GuildDB.serverID].account.cash + args[0].options[0].value; - client.dbo.collection("banks").updateOne({"account.userID":interaction.member.user.id},{$set:{[`banking.guilds.${GuildDB.serverID}.account.balance`]:newBalance,[`banking.guilds.${GuildDB.serverID}.account.cash`]:newCash}}, function(err, res) { + client.dbo.collection("banks").updateOne({"banking.userID":interaction.member.user.id},{$set:{[`banking.guilds.${GuildDB.serverID}.account.balance`]:newBalance,[`banking.guilds.${GuildDB.serverID}.account.cash`]:newCash}}, function(err, res) { if (err) { client.error(err); const embed = new EmbedBuilder() @@ -278,11 +298,11 @@ module.exports = { // Show target users balance let targetUserID = args[0].options[0].value.replace('<@!', '').replace('>', ''); - let targetUserBanking = await client.dbo.collection("banks").findOne({"account.userID": targetUserID}).then(banking => banking); + let targetUserBanking = await client.dbo.collection("banks").findOne({"banking.userID": targetUserID}).then(banking => banking); if (!targetUserBanking) { - banking = { - userID: interaction.member.user.id, + targetUserBanking = { + userID: targetUserID, guidls: { [guildID]: { account: { @@ -308,7 +328,7 @@ module.exports = { } }); - } else banking = banking.banking; + } else targetUserBanking = targetUserBanking.banking; if (!client.exists(targetUserBanking.guilds[GuildDB.serverID])) { const success = addBank(targetUserBanking.guilds, GuildDB.serverID, targetUserID, client, GuildDB.startingBalance); @@ -327,8 +347,8 @@ module.exports = { balanceEmbed.setTitle(`${User.tag}'s Bank Records`); balanceEmbed.addFields( - { name: '**Bank**', value: `$${targetUserBanking.account.balance}`, inline: true }, - { name: '**Cash**', value: `$${targetUserBanking.account.cash}`, inline: true }); + { name: '**Bank**', value: `$${targetUserBanking.guilds[GuildDB.serverID].account.balance}`, inline: true }, + { name: '**Cash**', value: `$${targetUserBanking.guilds[GuildDB.serverID].account.cash}`, inline: true }); } else { // Show command authors balance @@ -353,9 +373,9 @@ module.exports = { return interaction.send({ embeds: [embed] }); } - newCash = banking.guilds[GuildDB.serverID].account.cash - args[0].options[1].value; + const newCash = banking.guilds[GuildDB.serverID].account.cash - args[0].options[1].value; - client.dbo.collection("banks").updateOne({"account.userID":interaction.member.user.id},{$set:{[`banking.guilds.${GuildDB.serverID}.account.cash`]:newCash}}, function(err, res) { + client.dbo.collection("banks").updateOne({"banking.userID":interaction.member.user.id},{$set:{[`banking.guilds.${GuildDB.serverID}.account.cash`]:newCash}}, function(err, res) { if (err) { client.error(err); const embed = new EmbedBuilder() @@ -378,10 +398,30 @@ module.exports = { } }); - let targetUserID = args[0].options[0].value.replace('<@!', '').replace('>', ''); + const targetUserID = args[0].options[0].value.replace('<@!', '').replace('>', ''); let targetUserInventory = await client.dbo.collection("inventories").findOne({"inventory.userID":targetUserID}).then(inventory => inventory); if (!targetUserInventory) { + targetUserBanking = { + userID: targetUserID, + guilds: { + [GuildDB.serverID]: { + items: [{ + name: 'Wallet', + type: 'wallet', + description: '`/inventory wallet` to view wallet', + cash: 0.00, + ID: { + firstname: '', + lastname: '', + dob: '', + addr: '', + } + }] + } + } + } + // Register inventory for user let newInventory = new Inventory(); newInventory.createInventory(targetUserID, GuildDB.serverID); @@ -397,7 +437,7 @@ module.exports = { return interaction.send({ embeds: [embed] }); } }); - } + } else targetUserInventory = targetUserInventory.inventory; if (!client.exists(targetUserInventory.guilds[GuildDB.serverID])) { const success = addInventory(targetUserInventory.guilds, GuildDB.serverID, targetUserID, client); @@ -411,7 +451,7 @@ module.exports = { } } - let newTargetCash = targetUserInventory.inventory.guilds[GuildDB.serverID].items[0].cash + args[0].options[1].value; + const newTargetCash = targetUserInventory.inventory.guilds[GuildDB.serverID].items[0].cash + args[0].options[1].value; client.dbo.collection("inventories").updateOne({"inventory.userID":targetUserID, [`inventory.guilds.${GuildDB.serverID}.items.type`]:"wallet"}, {$set:{[`inventory.guilds.${GuildDB.serverID}.items.$.cash`]:newTargetCash}}, function(err, res) { if (err) { @@ -424,42 +464,59 @@ module.exports = { } }); - - let targetUserBanking = await client.dbo.collection("banks").findOne({"account.userID": targetUserID}).then(banking => banking); + let targetUserBanking = await client.dbo.collection("banks").findOne({"banking.userID": targetUserID}).then(banking => banking); if (!targetUserBanking) { targetUserBanking = { - account: { - userID: targetUserID, - balance: GuildDB.startingBalance, - cash: args[0].options[1].value, + userID: targetUserID, + guidls: { + [GuildDB.serverID]: { + account: { + balance: GuildDB.startingBalance, + cash: 0.00, + } + } } } - client.dbo.collection("banks").insertOne(targetUserBanking, function(err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); - } - }); - } else { - let newTargetCash = targetUserBanking.account.cash + args[0].options[1].value; + // Register inventory for user + let newBank = new Bank(); + newBank.createBank(targetUserID, GuildDB.serverID, GuildDB.startingBalance); + newBank.save() + .catch(err => { + if (err) { + 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 interaction.send({ embeds: [embed] }); + } + }); + } else targetUserBanking = targetUserBanking.banking; - client.dbo.collection("banks").updateOne({"account.userID": targetUserID}, {$set: {[`banking.guilds.${GuildDB.serverID}.account.cash`]: newTargetCash}}, function(err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); - } - }); + if (!client.exists(targetUserBanking.guilds[GuildDB.serverID])) { + const success = addBank(targetUserBanking.guilds, GuildDB.serverID, targetUserID, client, GuildDB.startingBalance); + 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 interaction.send({ embeds: [embed] }); + } } + + client.dbo.collection("banks").updateOne({"banking.userID": targetUserID}, {$set: {[`banking.guilds.${GuildDB.serverID}.account.cash`]: newTargetCash}}, function(err, res) { + if (err) { + 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 interaction.send({ embeds: [embed] }); + } + }); const successEmbed = new EmbedBuilder() .setTitle('Success') @@ -479,9 +536,9 @@ module.exports = { return interaction.send({ embeds: [embed] }); } - newBalance = banking.guilds[GuildDB.serverID].account.balance - args[0].options[1].value; + const newBalance = banking.guilds[GuildDB.serverID].account.balance - args[0].options[1].value; - client.dbo.collection("banks").updateOne({"account.userID":interaction.member.user.id},{$set:{[`banking.guilds.${GuildDB.serverID}.account.balance`]:newBalance}}, function(err, res) { + client.dbo.collection("banks").updateOne({"banking.userID":interaction.member.user.id},{$set:{[`banking.guilds.${GuildDB.serverID}.account.balance`]:newBalance}}, function(err, res) { if (err) { client.error(err); const embed = new EmbedBuilder() @@ -492,15 +549,19 @@ module.exports = { } }); - let targetUserID = args[0].options[0].value.replace('<@!', '').replace('>', ''); - let targetUserBanking = await client.dbo.collection("banks").findOne({"account.userID": targetUserID}).then(banking => banking); + const targetUserID = args[0].options[0].value.replace('<@!', '').replace('>', ''); + let targetUserBanking = await client.dbo.collection("banks").findOne({"banking.userID": targetUserID}).then(banking => banking); if (!targetUserBanking) { targetUserBanking = { - account: { - userID: targetUserID, - balance: (GuildDB.startingBalance + args[0].options[1].value), - cash: 0.00, + userID: targetUserID, + guilds: { + [GuildDB.serverID]: { + account: { + balance: (GuildDB.startingBalance + args[0].options[1].value), + cash: 0.00, + } + } } } @@ -514,20 +575,20 @@ module.exports = { return interaction.send({ embeds: [embed] }); } }); - } else { - let newTargetBalance = targetUserBanking.account.balance + args[0].options[1].value; + } else targetUserBanking = targetUserBanking.banking; + + const newTargetBalance = targetUserBanking.guilds[GuildDB.serverID].account.balance + args[0].options[1].value; - client.dbo.collection("banks").updateOne({"account.userID":targetUserID},{$set:{[`banking.guilds.${GuildDB.serverID}.account.balance`]:newTargetBalance}}, function(err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); - } - }); - } + client.dbo.collection("banks").updateOne({"banking.userID":targetUserID},{$set:{[`banking.guilds.${GuildDB.serverID}.account.balance`]:newTargetBalance}}, function(err, res) { + if (err) { + 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 interaction.send({ embeds: [embed] }); + } + }); const successEmbed = new EmbedBuilder() .setTitle('Bank Notice:') diff --git a/commands/fine.js b/commands/fine.js index b4dca9e..97026fb 100644 --- a/commands/fine.js +++ b/commands/fine.js @@ -57,7 +57,7 @@ module.exports = { } const targetUserID = args[0].options[0].value.replace('<@!', '').replace('>', ''); - let banking = await client.dbo.collection("banks").findOne({"account.userID": targetUserID}).then(banking => banking); + let banking = await client.dbo.collection("banks").findOne({"banking.userID": targetUserID}).then(banking => banking); if (!banking) { banking = { @@ -103,7 +103,7 @@ module.exports = { const newTargetBalance = banking.guilds[GuildDB.serverID].account.balance - args[0].options[1].value; - client.dbo.collection("banks").updateOne({"account.userID":targetUserID},{$set:{[`banking.guilds.${GuildDB.serverID}.account.balance`]:newTargetBalance}}, function(err, res) { + client.dbo.collection("banks").updateOne({"banking.userID":targetUserID},{$set:{[`banking.guilds.${GuildDB.serverID}.account.balance`]:newTargetBalance}}, function(err, res) { if (err) { client.error(err); const embed = new EmbedBuilder() diff --git a/commands/help.js b/commands/help.js index 991434b..64a84d4 100644 --- a/commands/help.js +++ b/commands/help.js @@ -124,25 +124,7 @@ module.exports = { const SelectSettings = new ActionRowBuilder().addComponents(settingsMenu); - interaction.send({ components: [SelectSettings], flags: (1 << 6) }); - - client.on("interactionCreate", 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) - }) - } - - const setting = settings.settings.find(setting => setting.name === MenuInteraction.values[0]); - const settingEmbed = new EmbedBuilder() - .setColor(client.config.Colors.Default) - .setTitle(setting.name) - .setDescription(setting.description) - - return MenuInteraction.update({ embeds: [settingEmbed], components: [] }); - }); + interaction.send({ components: [SelectSettings], flags: (1 << 6) }); } else if (args[0].name == 'support') { const supportEmbed = new EmbedBuilder() diff --git a/commands/inventory.js b/commands/inventory.js index 73114bb..27a3a53 100644 --- a/commands/inventory.js +++ b/commands/inventory.js @@ -1,7 +1,7 @@ const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle, SelectMenuBuilder } = require('discord.js'); const { Inventory, addInventory } = require('../structures/inventory'); -const action = ['ditch', 'drop', 'forget', 'throw out', 'leave', 'set down', 'let go of']; +const getActions = ['pick up', 'grab', 'get', 'aquire', 'obtain', 'gain', 'take possesssion of']; module.exports = { name: "inventory", @@ -235,67 +235,6 @@ module.exports = { interaction.send({ components: [opt], flags: (1 << 6) }) - client.on("interactionCreate", 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) - }) - } - - if (MenuInteraction.values[0] == 'all') { - let inventoryEmbed = new EmbedBuilder() - .setColor(client.config.Colors.Default) - .setTitle('Your Inventory') - - let description = `To see detials on an Item use \`/inventory view\` and select the item to view\n\n\`\`\`` - for (let i = 0; i < inventory.guilds[GuildDB.serverID].items.length; i++) { - if (inventory.guilds[GuildDB.serverID].items[i].type == 'firearm') description += `${i+1}. ${inventory.guilds[GuildDB.serverID].items[i].weaponType} - ${inventory.guilds[GuildDB.serverID].items[i].description}\n`; - else description += `${i+1}. ${inventory.guilds[GuildDB.serverID].items[i].name} - ${inventory.guilds[GuildDB.serverID].items[i].description}\n` - } - description += "```" - - inventoryEmbed.setDescription(description); - - return MenuInteraction.update({ embeds: [inventoryEmbed], components: [], flags: (1 << 6) }); - } else { - let item = inventory.guilds[GuildDB.serverID].items[MenuInteraction.values[0]]; - let itemEmbed = new EmbedBuilder().setColor(client.config.Colors.Default); - if (item.type == 'wallet') { - // Display wallet - - 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'}` - - itemEmbed.setTitle(`Your Wallet`); - itemEmbed.addFields( - { name: '**Cash**', value: `$${item.cash.toFixed(2)}`, inline: true }, - { name: '**ID**', value: ID, inline: true }); - - } else if (item.type == 'firearm') { - // Display firearm - - itemEmbed.setTitle('Firearm'); - itemEmbed.addFields( - { name: 'Serial #', value: item.serial, inline: true }, - { name: 'Type', value: item.weaponType, inline: true }, - { name: 'Description', value: item.description, inline: true }, - { name: 'Owner', value: item.ownerName, inline: true } - ); - - } else { - // Display generic item here - - itemEmbed.setTitle(`Item information`); - itemEmbed.addFields({ name: item.name, value: item.description, inline: false }); - } - - return MenuInteraction.update({ embeds: [itemEmbed], components: [], flags: (1 << 6) }); - - } - }); - - } else if (args[0].name == 'wallet') { // Display wallet @@ -336,7 +275,7 @@ module.exports = { }); let message = new EmbedBuilder() - .setTitle(`You ${actions[Math.floor(Math.random() * actions.length)]} a ${firearm.weaponType}`) + .setTitle(`You ${getActions[Math.floor(Math.random() * actions.length)]} a ${firearm.weaponType}`) .setColor(client.config.Colors.Default); return interaction.send({ embeds: [message] }); @@ -371,41 +310,38 @@ module.exports = { } else if (args[0].name == 'drop') { // Remove Item from inventory + + if (inventory.guilds[GuildDB.serverID].items.length == 1) { + const nsi = new EmbedBuilder() + .setDescription('**Notice:** No items to drop') + .setColor(client.config.Colors.Yellow); + + return interaction.send({ embeds: [nsi] }); + } - 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) + let items = new SelectMenuBuilder() + .setCustomId(`dropSelect-${interaction.member.user.id}`) + .setPlaceholder('Select item to drop') - return interaction.send({ embeds: [embed] }); - } - - if (args[0].options[0].value == 1) { - let embed = new EmbedBuilder() - .setTitle("Cannot Drop Wallet") - .setColor(client.config.Colors.Default); - - return interaction.send({ embeds: [embed] }); - } - - let item = inventory.guilds[GuildDB.serverID].items[args[0].options[0].value-1]; - - client.dbo.collection('inventories').updateOne({'inventory.userID': interaction.member.user.id}, {$pull: {[`inventory.guilds.${GuildDB.serverID}.items`]: item}}, function(err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); + 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: 'Drop this item', + value: `${i}` + }) + } else { + items.addOptions({ + label: inventory.guilds[GuildDB.serverID].items[i].name, + description: 'Drop this item', + value: `${i}` + }) } + } + + const opt = new ActionRowBuilder().addComponents(items); - let message = new EmbedBuilder() - .setTitle(`You ${action[Math.floor(Math.random() * actions.length)]} your ${item.name}`) - .setColor(client.config.Colors.Default); - - return interaction.send({ embeds: [message] }); - }); + interaction.send({ components: [opt], flags: (1 << 6) }) } else if (args[0].name == 'give') { if (inventory.guilds[GuildDB.serverID].items.length == 1) { @@ -416,28 +352,23 @@ module.exports = { return interaction.send({ embeds: [nsi] }); } + const targetUserID = args[0].options[0].value.replace('<@!', '').replace('>', ''); + 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', - } - ) + .setCustomId(`giveSelect-${targetUserID}-${interaction.member.user.id}`) + .setPlaceholder('Select Item to give') 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', + description: 'Give this item', value: `${i}` }) } else { items.addOptions({ label: inventory.guilds[GuildDB.serverID].items[i].name, - description: 'View this items description', + description: 'Give this item', value: `${i}` }) } @@ -446,79 +377,6 @@ module.exports = { const opt = new ActionRowBuilder().addComponents(items); interaction.send({ components: [opt], flags: (1 << 6) }) - - client.on("interactionCreate", 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); - - 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.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 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.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 MenuInteraction.update({ embeds: [embed], components: [] }); - } - } - - client.dbo.collection('inventories').updateOne({'inventory.userID': interaction.member.user.id}, {$pull: {[`inventory.guilds.${GuildDB.serverID}.items`]: item}}, function(err, res) { - if (err) { - 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 MenuInteraction.update({ embeds: [embed], components: [] }); - } - }); - client.dbo.collection('inventories').updateOne({'inventory.userID': targetUserID}, {$push: {[`inventory.guilds.${GuildDB.serverID}.items`]: item}}, function(err, res) { - if (err) { - 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 MenuInteraction.update({ embeds: [embed], components: [] }); - } - }); - } - - let successEmbed = new EmbedBuilder() - .setTitle('Success') - .setDescription(`Successfully gave <@${targetUserID}> ${item.name}`) - .setColor('GREEN'); - - return MenuInteraction.update({ embeds: [successEmbed], components: [] }); - }); - } else if (args[0].name == 'clear') { const prompt = new EmbedBuilder() @@ -529,48 +387,16 @@ module.exports = { const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() - .setCustomId(`yes-${interaction.member.user.id}`) + .setCustomId(`inventoryClear-yes-${interaction.member.user.id}`) .setLabel("Yes") .setStyle(ButtonStyle.Danger), new ButtonBuilder() - .setCustomId(`no-${interaction.member.user.id}`) + .setCustomId(`inventoryClear-no-${interaction.member.user.id}`) .setLabel("No") .setStyle(ButtonStyle.Success) ) - interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); - - client.on("interactionCreate", 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) - }) - } - let action = '' - if (queryString==`yes-${interaction.member.user.id}`) { - action = 'cleared'; - const tempWallet = inventory.guilds[GuildDB.serverID].items[0]; - client.dbo.collection("inventories").updateOne({"inventory.userID":inventory.userID},{$set:{[`inventory.guilds.${GuildDB.serverID}.items`]: [tempWallet]}},function(err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); - } - }); - } else if (queryString==`no-${interaction.member.user.id}`) action = 'kept'; - - const successEmbed = new EmbedBuilder() - .setColor(client.config.Colors.Green) - .setTitle(`Successfully ${action} your inventory.`) - - return ButtonInteraction.update({ embeds: [successEmbed], components: [] }); - }); + return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); } }, diff --git a/commands/money.js b/commands/money.js index c8d7e2b..d201a6b 100644 --- a/commands/money.js +++ b/commands/money.js @@ -54,7 +54,7 @@ module.exports = { if (!canUseCommand) return interaction.send('You don\'t have the permissions to use this command.'); const targetUserID = args[2].value.replace('<@!', '').replace('>', ''); - let banking = await client.dbo.collection("banks").findOne({"account.userID": targetUserID}).then(banking => banking); + let banking = await client.dbo.collection("banks").findOne({"banking.userID": targetUserID}).then(banking => banking); if (!banking) { banking = { @@ -102,7 +102,7 @@ module.exports = { ? banking.guilds[GuildDB.serverID].account.balance + args[1].value : banking.guilds[GuildDB.serverID].account.balance - args[1].value; - client.dbo.collection("banks").updateOne({"account.userID":targetUserID},{$set:{[`banking.guilds.${GuildDB.serverID}.account.balance`]:newBalance}}, function(err, res) { + client.dbo.collection("banks").updateOne({"banking.userID":targetUserID},{$set:{[`banking.guilds.${GuildDB.serverID}.account.balance`]:newBalance}}, function(err, res) { if (err) { client.error(err); const embed = new EmbedBuilder() diff --git a/commands/reset.js b/commands/reset.js index c863961..106f5e1 100644 --- a/commands/reset.js +++ b/commands/reset.js @@ -35,7 +35,7 @@ module.exports = { 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.') @@ -44,77 +44,16 @@ module.exports = { const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() - .setCustomId(`yes-${interaction.member.user.id}`) + .setCustomId(`reset-yes-${targetUserID}-${interaction.member.user.id}`) .setLabel("Yes") .setStyle(ButtonStyle.Danger), new ButtonBuilder() - .setCustomId(`no-${interaction.member.user.id}`) + .setCustomId(`reset-no-${targetUserID}-${interaction.member.user.id}`) .setLabel("No") .setStyle(ButtonStyle.Success) ) - interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); - - client.on("interactionCreate", 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 interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); }, }, diff --git a/commands/settings.js b/commands/settings.js index 32c2dc8..2f5eb99 100644 --- a/commands/settings.js +++ b/commands/settings.js @@ -398,47 +398,16 @@ module.exports = { const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() - .setCustomId(`yes-${interaction.member.user.id}`) + .setCustomId(`allowedChannels-yes-${interaction.member.user.id}`) .setLabel("Yes") .setStyle(ButtonStyle.Danger), new ButtonBuilder() - .setCustomId(`no-${interaction.member.user.id}`) + .setCustomId(`allowedChannels-no-${interaction.member.user.id}`) .setLabel("No") .setStyle(ButtonStyle.Success) ) - interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); - - client.on("interactionCreate", 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) - }) - } - let action = '' - if (queryString==`yes-${interaction.member.user.id}`) { - action = 'removed'; - client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID}, {$pull:{"server.allowedChannels": channelid}}, function (err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); - } - }); - } else if (queryString==`no-${interaction.member.user.id}`) action = 'kept'; - - const successEmbed = new EmbedBuilder() - .setColor(client.config.Colors.Green) - .setTitle(`Success: You ${action} the channel.`) - - return ButtonInteraction.update({ content: '', embeds: [successEmbed], components: [] }); - }); + return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); } else console.log('exception?'); @@ -476,48 +445,16 @@ module.exports = { const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() - .setCustomId(`yes-${interaction.member.user.id}`) + .setCustomId(`actionChannel-yes-${interaction.member.user.id}`) .setLabel("Yes") .setStyle(ButtonStyle.Danger), new ButtonBuilder() - .setCustomId(`no-${interaction.member.user.id}`) + .setCustomId(`actionChannel-no-${interaction.member.user.id}`) .setLabel("No") .setStyle(ButtonStyle.Success) ) - interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); - - client.on("interactionCreate", 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) - }) - } - let action = '' - if (queryString==`yes-${interaction.member.user.id}`) { - action = 'removed'; - client.dbo.collection("guilds").updateOne({"server.serverID":ButtonInteraction.guild.id},{$set:{"server.actionChannel": null}},function(err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); - } - }); - } else if (queryString==`no-${interaction.member.user.id}`) action = 'kept'; - - const successEmbed = new EmbedBuilder() - .setColor(client.config.Colors.Green) - .setTitle(`Success: You ${action} the channel.`) - - return ButtonInteraction.update({ content: '', embeds: [successEmbed], components: [] }); - }); - + return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); } } else if (args[0].name == 'tweet_channel') { @@ -554,7 +491,7 @@ module.exports = { const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() - .setCustomId(`yes-${interaction.member.user.id}`) + .setCustomId(`yes-${interaction.member.user.id}`) .setLabel("Yes") .setStyle(ButtonStyle.Danger), new ButtonBuilder() @@ -563,39 +500,7 @@ module.exports = { .setStyle(ButtonStyle.Success) ) - interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); - - client.on("interactionCreate", 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) - }) - } - let action = '' - if (queryString==`yes-${interaction.member.user.id}`) { - action = 'removed'; - client.dbo.collection("guilds").updateOne({"server.serverID":ButtonInteraction.guild.id},{$set:{"server.tweetChannel": null}},function(err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); - } - }); - } else if (queryString==`no-${interaction.member.user.id}`) action = 'kept'; - - const successEmbed = new EmbedBuilder() - .setColor(client.config.Colors.Green) - .setTitle(`Success: You ${action} the channel.`) - - return ButtonInteraction.update({ content: '', embeds: [successEmbed], components: [] }); - }); - + return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); } } else if (args[0].name == 'adverts_channel') { @@ -632,48 +537,16 @@ module.exports = { const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() - .setCustomId(`yes-${interaction.member.user.id}`) + .setCustomId(`advertsChannel-yes-${interaction.member.user.id}`) .setLabel("Yes") .setStyle(ButtonStyle.Danger), new ButtonBuilder() - .setCustomId(`no-${interaction.member.user.id}`) + .setCustomId(`advertsChannel-no-${interaction.member.user.id}`) .setLabel("No") .setStyle(ButtonStyle.Success) ) - interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); - - client.on("interactionCreate", 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) - }) - } - let action = ''; - if (queryString==`yes-${interaction.member.user.id}`) { - action = 'removed'; - client.dbo.collection("guilds").updateOne({"server.serverID":ButtonInteraction.guild.id},{$set:{"server.advertsChannel": null}},function(err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); - } - }); - } else if (queryString==`no-${interaction.member.user.id}`) action = 'kept'; - - const successEmbed = new EmbedBuilder() - .setColor(client.config.Colors.Green) - .setTitle(`Success: You ${action} the channel.`) - - return ButtonInteraction.update({ content: '', embeds: [successEmbed], components: [] }); - }); - + return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); } } else if (args[0].name == 'dispatcher_channel') { @@ -711,48 +584,16 @@ module.exports = { const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() - .setCustomId(`yes-${interaction.member.user.id}`) + .setCustomId(`dispatchChannel-yes-${interaction.member.user.id}`) .setLabel("Yes") .setStyle(ButtonStyle.Danger), new ButtonBuilder() - .setCustomId(`no-${interaction.member.user.id}`) + .setCustomId(`dispatchChannel-no-${interaction.member.user.id}`) .setLabel("No") .setStyle(ButtonStyle.Success) ) - interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); - - client.on("interactionCreate", 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) - }) - } - let action = ''; - if (queryString==`yes-${interaction.member.user.id}`) { - action = 'removed'; - client.dbo.collection("guilds").updateOne({"server.serverID":ButtonInteraction.guild.id},{$set:{"server.dispatchChannel": null}},function(err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); - } - }); - } else if (queryString==`no-${interaction.member.user.id}`) action = 'kept'; - - const successEmbed = new EmbedBuilder() - .setColor(client.config.Colors.Green) - .setTitle(`Success: You ${action} the channel.`) - - return ButtonInteraction.update({ content: '', embeds: [successEmbed], components: [] }); - }); - + return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); } } else if (args[0].name == 'starting_balance') { @@ -839,48 +680,16 @@ module.exports = { const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() - .setCustomId(`yes-${interaction.member.user.id}`) + .setCustomId(`incomeRole-yes-${interaction.member.user.id}`) .setLabel("Yes") .setStyle(ButtonStyle.Danger), new ButtonBuilder() - .setCustomId(`no-${interaction.member.user.id}`) + .setCustomId(`incomeRole-no-${interaction.member.user.id}`) .setLabel("No") .setStyle(ButtonStyle.Success) ) - interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); - - client.on("interactionCreate", 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) - }) - } - let action = ''; - if (queryString==`yes-${interaction.member.user.id}`) { - action = 'removed'; - client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID}, {$pull: {"server.incomeRoles": roleId}}, function(err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); - } - }); - } else if (queryString==`no-${interaction.member.user.id}`) action = 'kept'; - - const successEmbed = new EmbedBuilder() - .setColor(client.config.Colors.Green) - .setTitle(`Successfully ${action} <@&${roleId}> from income roles.`) - - return ButtonInteraction.update({ content: '', embeds: [successEmbed], components: [] }); - }); - + return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); } } @@ -913,48 +722,16 @@ module.exports = { const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() - .setCustomId(`yes-${interaction.member.user.id}`) + .setCustomId(`commercialRole-yes-${interaction.member.user.id}`) .setLabel("Yes") .setStyle(ButtonStyle.Danger), new ButtonBuilder() - .setCustomId(`no-${interaction.member.user.id}`) + .setCustomId(`commercialRole-no-${interaction.member.user.id}`) .setLabel("No") .setStyle(ButtonStyle.Success) ) - interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); - - client.on("interactionCreate", 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) - }) - } - let action = ''; - if (queryString==`yes-${interaction.member.user.id}`) { - action = 'removed'; - client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID}, {$set: {"server.commercialRole": null}}, function(err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); - } - }); - } else if (queryString==`no-${interaction.member.user.id}`) action = 'kept'; - - const successEmbed = new EmbedBuilder() - .setColor(client.config.Colors.Green) - .setTitle(`Successfully ${action} <@&${roleId}> as commercial role.`) - - return ButtonInteraction.update({ content: '', embeds: [successEmbed], components: [] }); - }); - + return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); } } else if (args[0].name == 'officer_role') { @@ -987,48 +764,16 @@ module.exports = { const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() - .setCustomId(`yes-${interaction.member.user.id}`) + .setCustomId(`officerRole-yes-${interaction.member.user.id}`) .setLabel("Yes") .setStyle(ButtonStyle.Danger), new ButtonBuilder() - .setCustomId(`no-${interaction.member.user.id}`) + .setCustomId(`officerRole-no-${interaction.member.user.id}`) .setLabel("No") .setStyle(ButtonStyle.Success) ) - interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); - - client.on("interactionCreate", 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) - }) - } - let action = ''; - if (queryString==`yes-${interaction.member.user.id}`) { - action = 'removed'; - client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID}, {$set: {"server.officerRole": null}}, function(err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); - } - }); - } else if (queryString==`no-${interaction.member.user.id}`) action = 'kept'; - - const successEmbed = new EmbedBuilder() - .setColor(client.config.Colors.Green) - .setTitle(`Successfully ${action} <@&${roleId}> as officer role.`) - - return ButtonInteraction.update({ content: '', embeds: [successEmbed], components: [] }); - }); - + return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); } } else if (args[0].name == 'dispatcher_role') { @@ -1061,47 +806,16 @@ module.exports = { const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() - .setCustomId(`yes-${interaction.member.user.id}`) + .setCustomId(`dispatchRole-yes-${interaction.member.user.id}`) .setLabel("Yes") .setStyle(ButtonStyle.Danger), new ButtonBuilder() - .setCustomId(`no-${interaction.member.user.id}`) + .setCustomId(`dispatchRole-no-${interaction.member.user.id}`) .setLabel("No") .setStyle(ButtonStyle.Success) ) - interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); - - client.on("interactionCreate", 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) - }) - } - let action = ''; - if (queryString==`yes-${interaction.member.user.id}`) { - action = 'removed'; - client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID}, {$set: {"server.dispatcherRole": null}}, function(err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); - } - }); - } else if (queryString==`no-${interaction.member.user.id}`) action = 'kept'; - - const successEmbed = new EmbedBuilder() - .setColor(client.config.Colors.Green) - .setTitle(`Successfully ${action} <@&${roleId}> as dispatcher role.`) - - return ButtonInteraction.update({ content: '', embeds: [successEmbed], components: [] }); - }); + return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); } @@ -1135,47 +849,16 @@ module.exports = { const opt = new ActionRowBuilder() .addComponents( new ButtonBuilder() - .setCustomId(`yes-${interaction.member.user.id}`) + .setCustomId(`botAdmin-yes-${interaction.member.user.id}`) .setLabel("Yes") .setStyle(ButtonStyle.Danger), new ButtonBuilder() - .setCustomId(`no-${interaction.member.user.id}`) + .setCustomId(`botAdmin-no-${interaction.member.user.id}`) .setLabel("No") .setStyle(ButtonStyle.Success) ) - interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); - - client.on("interactionCreate", 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) - }) - } - let action = ''; - if (queryString==`yes-${interaction.member.user.id}`) { - action = 'removed'; - client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID}, {$set: {"server.botAdmin": null}}, function(err, res) { - if (err) { - 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 interaction.send({ embeds: [embed] }); - } - }); - } else if (queryString==`no-${interaction.member.user.id}`) action = 'kept'; - - const successEmbed = new EmbedBuilder() - .setColor(client.config.Colors.Green) - .setTitle(`Successfully ${action} <@&${roleId}> as dispatcher role.`) - - return ButtonInteraction.update({ content: '', embeds: [successEmbed], components: [] }); - }); + return interaction.send({ embeds: [prompt], components: [opt], flags: (1 << 6) }); } } else if (args[0].name == 'only_officers_search') { diff --git a/commands/work.js b/commands/work.js index 17c6e01..55188a4 100644 --- a/commands/work.js +++ b/commands/work.js @@ -87,7 +87,7 @@ module.exports = { } } - let banking = await client.dbo.collection("banks").findOne({"account.userID": interaction.member.user.id}).then(banking => banking); + let banking = await client.dbo.collection("banks").findOne({"banking.userID": interaction.member.user.id}).then(banking => banking); if (!banking) { banking = { @@ -140,7 +140,7 @@ module.exports = { earned = workPays[highestPayIndex] newBalance = banking.guilds[GuildDB.serverID].account.balance + earned - client.dbo.collection("banks").updateOne({"account.userID":interaction.member.user.id},{$set:{[`banking.guilds.${GuildDB.serverID}.account.balance`]:newBalance}}, function(err, res) { + client.dbo.collection("banks").updateOne({"banking.userID":interaction.member.user.id},{$set:{[`banking.guilds.${GuildDB.serverID}.account.balance`]:newBalance}}, function(err, res) { if (err) { client.error(err); const embed = new EmbedBuilder() diff --git a/events/interactionCreate.js b/events/interactionCreate.js new file mode 100644 index 0000000..5bfda15 --- /dev/null +++ b/events/interactionCreate.js @@ -0,0 +1,620 @@ +const { EmbedBuilder } = require("discord.js"); +const settings = require('../config/settingsHelp'); + +const dropActions = ['ditch', 'drop', 'forget', 'throw out', 'leave', 'set down', 'let go of']; + +module.exports = async (client, interaction) => { + if (interaction.isCommand()) return; + /* + This file handles all menu and button interactions + from any command + */ + + const GuildDB = await client.GetGuild(interaction.guildId); + + // Handler for '/311' + if (interaction.customId.startsWith('911')) { + if (!interaction.member._roles.includes(GuildDB.dispatcherRole)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + const successEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setTitle(`Successfully Deleted 311 Report.`) + + return interaction.update({ embeds: [successEmbed], components: [] }); + } + + // Handler for '/911' + if (interaction.customId.startsWith('911')) { + if (!interaction.member._roles.includes(GuildDB.dispatcherRole)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + const successEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setTitle(`Successfully Deleted 911 Call.`) + + return interaction.update({ embeds: [successEmbed], components: [] }); + } + + // Handler for '/help settings' + if (interaction.customId.startsWith('settingSelect')) { + const setting = settings.settings.find(setting => setting.name === interaction.values[0]); + const settingEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Default) + .setTitle(setting.name) + .setDescription(setting.description) + + return interaction.update({ embeds: [settingEmbed], components: [] }); + } + + // Handler for '/inventory view' + if (interaction.customId.startsWith('inventorySelect')) { + if (!interaction.customId.endsWith(interaction.member.user.id)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + + let inventory = await client.dbo.collection("inventories").findOne({"inventory.userID": interaction.member.user.id}).then(inventory => inventory); + inventory.inventory; + + if (interaction.values[0] == 'all') { + let inventoryEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Default) + .setTitle('Your Inventory') + + let description = `To see detials on an Item use \`/inventory view\` and select the item to view\n\n\`\`\`` + for (let i = 0; i < inventory.guilds[GuildDB.serverID].items.length; i++) { + if (inventory.guilds[GuildDB.serverID].items[i].type == 'firearm') description += `${i+1}. ${inventory.guilds[GuildDB.serverID].items[i].weaponType} - ${inventory.guilds[GuildDB.serverID].items[i].description}\n`; + else description += `${i+1}. ${inventory.guilds[GuildDB.serverID].items[i].name} - ${inventory.guilds[GuildDB.serverID].items[i].description}\n` + } + description += "```" + + inventoryEmbed.setDescription(description); + + return interaction.update({ embeds: [inventoryEmbed], components: [], flags: (1 << 6) }); + } else { + let item = inventory.guilds[GuildDB.serverID].items[interaction.values[0]]; + let itemEmbed = new EmbedBuilder().setColor(client.config.Colors.Default); + if (item.type == 'wallet') { + // Display wallet + + 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'}` + + itemEmbed.setTitle(`Your Wallet`); + itemEmbed.addFields( + { name: '**Cash**', value: `$${item.cash.toFixed(2)}`, inline: true }, + { name: '**ID**', value: ID, inline: true }); + + } else if (item.type == 'firearm') { + // Display firearm + + itemEmbed.setTitle('Firearm'); + itemEmbed.addFields( + { name: 'Serial #', value: item.serial, inline: true }, + { name: 'Type', value: item.weaponType, inline: true }, + { name: 'Description', value: item.description, inline: true }, + { name: 'Owner', value: item.ownerName, inline: true } + ); + + } else { + // Display generic item here + + itemEmbed.setTitle(`Item information`); + itemEmbed.addFields({ name: item.name, value: item.description, inline: false }); + } + + return interaction.update({ embeds: [itemEmbed], components: [], flags: (1 << 6) }); + } + } + + // Handler for '/invenvotry drop' + if (interaction.customId.startsWith('dropSelect')) { + if (!interaction.customId.endsWith(interaction.member.user.id)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + + let inventory = await client.dbo.collection("inventories").findOne({"inventory.userID": interaction.member.user.id}).then(inventory => inventory); + inventory.inventory; + + let item = inventory.guilds[GuildDB.serverID].items[args[0].options[0].value-1]; + + client.dbo.collection('inventories').updateOne({'inventory.userID': interaction.member.user.id}, {$pull: {[`inventory.guilds.${GuildDB.serverID}.items`]: item}}, function(err, res) { + if (err) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + + let message = new EmbedBuilder() + .setTitle(`You ${dropActions[Math.floor(Math.random() * dropActions.length)]} your ${item.name}`) + .setColor(client.config.Colors.Default); + + return interaction.update({ embeds: [message], components: [] }); + }); + } + + // Handler for '/inventory give' + if (interaction.customId.startsWith('giveSelect')) { + if (!interaction.customId.endsWith(interaction.member.user.id)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + + let inventory = await client.dbo.collection("inventories").findOne({"inventory.userID": interaction.member.user.id}).then(inventory => inventory); + inventory = inventory.inventory; + + let item = inventory.guilds[GuildDB.serverID].items[interaction.values[0]]; + let targetUserID = interaction.customId.split('-')[1].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.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 interaction.update({ embeds: [embed], components: [] }); + } + }); + } else { + targetUserInventory = targetUserIventory.inventory; + if (!client.exists(targetUserInventory.guilds[GuildDB.serverID])) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + } + + client.dbo.collection('inventories').updateOne({'inventory.userID': interaction.member.user.id}, {$pull: {[`inventory.guilds.${GuildDB.serverID}.items`]: item}}, function(err, res) { + if (err) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + }); + client.dbo.collection('inventories').updateOne({'inventory.userID': targetUserID}, {$push: {[`inventory.guilds.${GuildDB.serverID}.items`]: item}}, function(err, res) { + if (err) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + }); + } + + let successEmbed = new EmbedBuilder() + .setTitle('Success') + .setDescription(`Successfully gave <@${targetUserID}> ${item.name}`) + .setColor('GREEN'); + + return interaction.update({ embeds: [successEmbed], components: [] }); + } + + // Handler for '/inventory clear' + if (interaction.customId.startsWith('inventoryClear')) { + const queryString = interaction.customId; + if (!queryString.endsWith(interaction.member.user.id)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + let action = '' + if (queryString==`inventoryClear-yes-${interaction.member.user.id}`) { + action = 'cleared'; + const tempWallet = inventory.guilds[GuildDB.serverID].items[0]; + client.dbo.collection("inventories").updateOne({"inventory.userID":interaction.member.user.id},{$set:{[`inventory.guilds.${GuildDB.serverID}.items`]: [tempWallet]}},function(err, res) { + if (err) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + }); + } else if (queryString==`inventoryClear-no-${interaction.member.user.id}`) action = 'kept'; + + const successEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setTitle(`Successfully ${action} your inventory.`) + + return interaction.update({ embeds: [successEmbed], components: [] }); + } + + // Handler for '/reset' + if (interaction.customId.startsWith('reset')) { + const choice = interaction.customId.split('-')[1]; + const targetUserID = interaction.customId.split('-')[2]; + + if (!interaction.customId.endsWith(interaction.member.user.id)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + if (choice=='yes') { + 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({"banking.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 interaction.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 interaction.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 interaction.update({ embeds: [embed], components: [] }); + } + } + + return interaction.update({ embeds: [successEmbed], components: [] }); + + } else if (choice=='no') { + const successEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setTitle(`The User was not reset`); + + return interaction.update({ embeds: [successEmbed], components: [] }); + } + } + + // Handler for '/settings allowed_channels remove' + if (interaction.customId.startsWith('allowedChannels')) { + if (!queryString.endsWith(interaction.member.user.id)) { + return ButtonInteraction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + let action = '' + if (interaction.customId.split('-')[1]=='yes') { + action = 'removed'; + client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID}, {$pull:{"server.allowedChannels": channelid}}, function (err, res) { + if (err) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + }); + } else if (interaction.customId.split('-')[1]=='no') action = 'kept'; + + const successEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setTitle(`Success: You ${action} the channel.`) + + return interactino.update({ embeds: [successEmbed], components: [] }); + } + + // Handler for '/settings action_channel remove' + if (interaction.customId.startsWith('actionChannel')) { + if (!queryString.endsWith(interaction.member.user.id)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + let action = '' + if (interaction.customId.split('-')[1]=='yes') { + action = 'removed'; + client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID},{$set:{"server.actionChannel": null}},function(err, res) { + if (err) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + }); + } else if (queryString==`no-${interaction.member.user.id}`) action = 'kept'; + + const successEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setTitle(`Success: You ${action} the channel.`) + + return interaction.update({ embeds: [successEmbed], components: [] }); + } + + // Handler for '/settings tweet_channel remove' + if (interaction.customId.startsWith('tweetChannel')) { + if (!interaction.customId.endsWith(interaction.member.user.id)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + let action = '' + if (interaction.customId.split('-')[1]=='yes') { + action = 'removed'; + client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID},{$set:{"server.tweetChannel": null}},function(err, res) { + if (err) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + }); + } else if (interaction.customId.split('-')[1]=='no') action = 'kept'; + + const successEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setTitle(`Success: You ${action} the channel.`) + + return interaction.update({ embeds: [successEmbed], components: [] }); + } + + // Handler for '/settings adverts_channel remove' + if (interaction.customId.startsWith('advertsChannel')) { + if (!interaction.endsWith(interaction.member.user.id)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + let action = ''; + if (interaction.customId.split('-')[1]=='yes') { + action = 'removed'; + client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID},{$set:{"server.advertsChannel": null}},function(err, res) { + if (err) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + }); + } else if (interaction.customId.split('-')[1]=='no') action = 'kept'; + + const successEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setTitle(`Success: You ${action} the channel.`) + + return interaction.update({ embeds: [successEmbed], components: [] }); + } + + // Handler for '/settings dispatcher_channel remove' + if(interaction.customId.startsWith('dispatchChannel')) { + if (!interaction.customId.endsWith(interaction.member.user.id)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + let action = ''; + if (interaction.customId.split('-')[1]=='yes') { + action = 'removed'; + client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID},{$set:{"server.dispatchChannel": null}},function(err, res) { + if (err) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + }); + } else if (interaction.customId.split('-')[1]=='no') action = 'kept'; + + const successEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setTitle(`Success: You ${action} the channel.`) + + return interaction.update({ embeds: [successEmbed], components: [] }); + } + + // Handler for '/settings income_role remove' + if (interaction.customId.startsWith('incomeRole')) { + if (!interaction.customId.endsWith(interaction.member.user.id)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + let action = ''; + if (interaction.customId.split('-')[1]=='yes') { + action = 'removed'; + client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID}, {$pull: {"server.incomeRoles": roleId}}, function(err, res) { + if (err) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + }); + } else if (interaction.customId.split('-')[1]=='no') action = 'kept'; + + const successEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setTitle(`Successfully ${action} <@&${roleId}> from income roles.`) + + return interaction.update({ embeds: [successEmbed], components: [] }); + } + + // Handler for '/settings commercial_role remove' + if (interaction.customId.startsWith('commercialRole')) { + if (!interaction.customId.endsWith(interaction.member.user.id)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + let action = ''; + if (interaction.customId.split('-')[1]=='yes') { + action = 'removed'; + client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID}, {$set: {"server.commercialRole": null}}, function(err, res) { + if (err) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + }); + } else if (interaction.customId.split('-')[1]=='no') action = 'kept'; + + const successEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setTitle(`Successfully ${action} <@&${roleId}> as commercial role.`) + + return interaction.update({ embeds: [successEmbed], components: [] }); + } + + // Handler for '/settings officer_role remove' + if (interaction.customId.startsWith('officerRole')) { + if (!interaction.customId.endsWith(interaction.member.user.id)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + let action = ''; + if (interaction.customId.split('-')[1]=='no') { + action = 'removed'; + client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID}, {$set: {"server.officerRole": null}}, function(err, res) { + if (err) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + }); + } else if (interaction.customId.split('-')[1]=='no') action = 'kept'; + + const successEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setTitle(`Successfully ${action} <@&${roleId}> as officer role.`) + + return interaction.update({ embeds: [successEmbed], components: [] }); + } + + // Handler for '/settings dispatcher_role remove' + if (interaction.customId.startsWith('dispatchRole')) { + if (!interaction.customId.endsWith(interaction.member.user.id)) { + return interaction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + let action = ''; + if (interaction.customId.split('-')[1]=='yes') { + action = 'removed'; + client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID}, {$set: {"server.dispatcherRole": null}}, function(err, res) { + if (err) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + }); + } else if (interaction.customId.split('-')[1]=='no') action = 'kept'; + + const successEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setTitle(`Successfully ${action} <@&${roleId}> as dispatcher role.`) + + return interaction.update({ embeds: [successEmbed], components: [] }); + } + + // Handler for '/settings bot_admin_role remove' + if (interaction.customId.startsWith('botAdmin')) { + if (!interaction.customId.endsWith(interaction.member.user.id)) { + return ButtonInteraction.reply({ + content: "This button is not for you", + flags: (1 << 6) + }) + } + let action = ''; + if (interaction.customId.split('-')[1]=='yes') { + action = 'removed'; + client.dbo.collection("guilds").updateOne({"server.serverID":GuildDB.serverID}, {$set: {"server.botAdmin": null}}, function(err, res) { + if (err) { + 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 interaction.update({ embeds: [embed], components: [] }); + } + }); + } else if (interaction.customId.split('-')[1]=='no') action = 'kept'; + + const successEmbed = new EmbedBuilder() + .setColor(client.config.Colors.Green) + .setTitle(`Successfully ${action} <@&${roleId}> as dispatcher role.`) + + return interaction.update({ embeds: [successEmbed], components: [] }); + } +} \ No newline at end of file diff --git a/structures/QuarksBot.js b/structures/QuarksBot.js index 8e88903..609fa58 100644 --- a/structures/QuarksBot.js +++ b/structures/QuarksBot.js @@ -94,15 +94,15 @@ class QuarksBot extends Client { LoadCommands() { let CommandsDir = path.join(__dirname, '..', 'commands'); fs.readdir(CommandsDir, (err, files) => { - if (err) this.log(err); + if (err) this.error(err); else files.forEach((file) => { let cmd = require(CommandsDir + "/" + file); - if (!cmd.name || !cmd.description) - return this.log( + if (!this.exists(cmd.name) || !this.exists(cmd.description)) + return this.error( "Unable to load Command: " + file.split(".")[0] + - ", Reason: File doesn't had run/name/desciption" + ", Reason: File doesn't had name/desciption" ); this.commands.set(file.split(".")[0].toLowerCase(), cmd); this.log("Command Loaded: " + file.split(".")[0]); @@ -113,11 +113,12 @@ class QuarksBot extends Client { LoadEvents() { let EventsDir = path.join(__dirname, '..', 'events'); fs.readdir(EventsDir, (err, files) => { - if (err) this.log(err); + if (err) this.error(err); else files.forEach((file) => { - const event = require(EventsDir + "/" + file); - this.on(file.split(".")[0], event.bind(null, this)); + const event = require(EventsDir + "/" + file);; + if (file.split(".")[0] == 'interactionCreate') this.on(file.split(".")[0], i => event(this, i)); + else this.on(file.split(".")[0], event.bind(null, this)); this.logger.log("Event Loaded: " + file.split(".")[0]); }); });