const client = global.discord_client const pool = global.db_pool; const hubSettingsHandler = require('../messageHandlers/hub_settings.js'); if (!global.hubSettingsHandlers) global.hubSettingsHandlers = {}; const execute = async (interaction) => { if (!interaction.guildId) return interaction.reply({ content: "This command can only be used in a server", ephemeral: true }); if (global.hubSettingsHandlers[interaction.user.id]) return interaction.reply({ content: "See DMs!", ephemeral: true }); try { const guildId = interaction.guildId; const hubResult = await pool.query(`SELECT * FROM hubs WHERE discordGuild = ?`, [guildId]); if (hubResult.length === 0) { delete global.hubSettingsHandlers[interaction.user.id]; return interaction.reply({ content: "This guild does not have a hub set up!", ephemeral: true }); } // Proceed with settings menu await interaction.reply({ ephemeral: true, content: "Getting things ready..." }); await interaction.user.send({ embeds: [{ title: 'Welcome to Hub Settings!', description: 'Below are your current hub settings.', color: 0x00AE86, fields: [ { name: "Hub ID", value: hubResult[0].id }, { name: "Hub Name", value: hubResult[0].name }, { name: "Owner Discord ID", value: hubResult[0].ownerId.toString() }, { name: "Discord Guild ID", value: hubResult[0].discordGuild.toString() }, { name: "Short Description", value: hubResult[0].shortDescription }, { name: "Long Description", value: hubResult[0].longDescription }, { name: "Allow Gift Purchase", value: hubResult[0].allowGiftPurchase ? "Yes" : "No" }, { name: "Terms of Service", value: hubResult[0].tos }, { name: "Background Music ID", value: hubResult[0].bgmId ? hubResult[0].bgmId.toString() : "None" }, { name: "Log Channel ID", value: hubResult[0].logChannel ? hubResult[0].logChannel.toString() : "Not Set" }, { name: "Secret Key", value: `||\`${hubResult[0].secretKey}\`||` } ] }, { description: `Options`, color: 0x00AE86, fields: [ { name: "1. Edit Short Description", value: "Change the short description of the hub." }, { name: "2. Edit Long Description", value: "Change the long description of the hub." }, { name: "3. Toggle Allow Gift Purchase", value: "Enable or disable allowing users to buy gifts for others on this hub." }, { name: "4. Edit Terms of Service", value: "Change the terms of service for this hub." }, { name: "5. Regenerate Secret Key", value: "Generate a new secret key for this hub. (Old key will be invalidated)" }, { name: "6. Parcel Auto-Import", value: "Set up automatic importing of Parcel purchases when linking." }, { name: "7. Set Background Music", value: "Set or change the background music for this hub." }, { name: "8. Set Log Channel", value: "Set or change the log channel for this hub." }, { name: "99. Delete hub and all products", value: "***__WARNING: THIS IS DANGEROUS__***" } ] }] }); const finalMsg = await interaction.user.send({ content: "Say an option number, or `cancel` to exit!" }); await interaction.editReply({ ephemeral: true, content: "Check your DMs!", components: [ { type: 1, // ActionRow components: [ { type: 2, // Button style: 5, // Link button label: "Go there!", url: finalMsg.url } ] } ] }); global.hubSettingsHandlers[interaction.user.id] = { step: 1, hub: hubResult[0].id }; global.dmHandlers[interaction.user.id] = hubSettingsHandler; } catch (err) { console.error(err); delete global.productCreationData[interaction.user.id]; return interaction.editReply({ content: "An error occurred.", ephemeral: true }); } }; module.exports = { execute }