diff --git a/src/commands/config/index.ts b/src/commands/config/index.ts index 783219b..cbaa582 100644 --- a/src/commands/config/index.ts +++ b/src/commands/config/index.ts @@ -1,43 +1,51 @@ import { SlashCommandBuilder } from "@discordjs/builders"; import { ChatInputCommandInteraction } from "discord.js"; -import modules from "./modules"; + +// Modules +import moduleAudits from "./modules/audits"; +import moduleCpgg from "./modules/cpgg"; +import moduleCredits from "./modules/credits"; +import moduleEmbeds from "./modules/embeds"; +import modulePoints from "./modules/points"; +import moduleShop from "./modules/shop"; +import moduleWelcome from "./modules/welcome"; export const builder = new SlashCommandBuilder() .setName("config") .setDescription("Manage guild configurations.") + .setDMPermission(false) - .addSubcommand(modules.cpgg.builder) - .addSubcommand(modules.credits.builder) - .addSubcommand(modules.points.builder) - .addSubcommand(modules.welcome.builder) - .addSubcommand(modules.audits.builder) - .addSubcommand(modules.shop.builder) - .addSubcommand(modules.embeds.builder); - -export const moduleData = modules; + // Modules + .addSubcommand(moduleAudits.builder) + .addSubcommand(moduleCpgg.builder) + .addSubcommand(moduleCredits.builder) + .addSubcommand(moduleEmbeds.builder) + .addSubcommand(modulePoints.builder) + .addSubcommand(moduleShop.builder) + .addSubcommand(moduleWelcome.builder); export const execute = async (interaction: ChatInputCommandInteraction) => { - switch (interaction.options?.getSubcommand()) { + switch (interaction.options.getSubcommand()) { + case "audits": + await moduleAudits.execute(interaction); + break; case "cpgg": - await modules.cpgg.execute(interaction); + await moduleCpgg.execute(interaction); break; case "credits": - await modules.credits.execute(interaction); - break; - case "points": - await modules.points.execute(interaction); - break; - case "welcome": - await modules.welcome.execute(interaction); - break; - case "audits": - await modules.audits.execute(interaction); - break; - case "shop": - await modules.shop.execute(interaction); + await moduleCredits.execute(interaction); break; case "embeds": - await modules.embeds.execute(interaction); + await moduleEmbeds.execute(interaction); + break; + case "points": + await modulePoints.execute(interaction); + break; + case "shop": + await moduleShop.execute(interaction); + break; + case "welcome": + await moduleWelcome.execute(interaction); break; default: throw new Error("No module found for that specific command."); diff --git a/src/commands/config/modules/audits/index.ts b/src/commands/config/modules/audits/index.ts index 3a6dd1f..a3d4c00 100644 --- a/src/commands/config/modules/audits/index.ts +++ b/src/commands/config/modules/audits/index.ts @@ -1,21 +1,17 @@ -import { SlashCommandSubcommandBuilder } from "@discordjs/builders"; import { ChannelType } from "discord-api-types/v10"; import { ChatInputCommandInteraction, EmbedBuilder, PermissionsBitField, + SlashCommandSubcommandBuilder, } from "discord.js"; import prisma from "../../../../handlers/database"; +import deferReply from "../../../../handlers/deferReply"; +import checkPermission from "../../../../helpers/checkPermission"; import getEmbedConfig from "../../../../helpers/getEmbedData"; import logger from "../../../../middlewares/logger"; export default { - metadata: { - guildOnly: true, - ephemeral: true, - permissions: [PermissionsBitField.Flags.ManageGuild], - }, - builder: (command: SlashCommandSubcommandBuilder) => { return command .setName("audits") @@ -35,6 +31,10 @@ export default { ); }, execute: async (interaction: ChatInputCommandInteraction) => { + await deferReply(interaction, true); + + await checkPermission(interaction, PermissionsBitField.Flags.ManageGuild); + const { guild, options } = interaction; const { successColor, footerText, footerIcon } = await getEmbedConfig( guild diff --git a/src/commands/config/modules/cpgg/index.ts b/src/commands/config/modules/cpgg/index.ts index 01d13ed..b9ce119 100644 --- a/src/commands/config/modules/cpgg/index.ts +++ b/src/commands/config/modules/cpgg/index.ts @@ -5,17 +5,13 @@ import { PermissionsBitField, } from "discord.js"; import prisma from "../../../../handlers/database"; +import deferReply from "../../../../handlers/deferReply"; +import checkPermission from "../../../../helpers/checkPermission"; import encryption from "../../../../helpers/encryption"; import getEmbedConfig from "../../../../helpers/getEmbedData"; import logger from "../../../../middlewares/logger"; export default { - metadata: { - guildOnly: true, - ephemeral: true, - permissions: [PermissionsBitField.Flags.ManageGuild], - }, - builder: (command: SlashCommandSubcommandBuilder) => { return command .setName("cpgg") @@ -44,6 +40,10 @@ export default { ); }, execute: async (interaction: ChatInputCommandInteraction) => { + await deferReply(interaction, true); + + await checkPermission(interaction, PermissionsBitField.Flags.ManageGuild); + const { successColor, footerText, footerIcon } = await getEmbedConfig( interaction.guild ); diff --git a/src/commands/config/modules/credits/index.ts b/src/commands/config/modules/credits/index.ts index 4d25feb..e76cd77 100644 --- a/src/commands/config/modules/credits/index.ts +++ b/src/commands/config/modules/credits/index.ts @@ -5,16 +5,12 @@ import { PermissionsBitField, } from "discord.js"; import prisma from "../../../../handlers/database"; +import deferReply from "../../../../handlers/deferReply"; +import checkPermission from "../../../../helpers/checkPermission"; import getEmbedConfig from "../../../../helpers/getEmbedData"; import logger from "../../../../middlewares/logger"; export default { - metadata: { - guildOnly: true, - ephemeral: true, - permissions: [PermissionsBitField.Flags.ManageGuild], - }, - builder: (command: SlashCommandSubcommandBuilder) => { return command .setName("credits") @@ -57,6 +53,10 @@ export default { ); }, execute: async (interaction: ChatInputCommandInteraction) => { + await deferReply(interaction, true); + + await checkPermission(interaction, PermissionsBitField.Flags.ManageGuild); + const { successColor, footerText, footerIcon } = await getEmbedConfig( interaction.guild ); diff --git a/src/commands/config/modules/embeds/index.ts b/src/commands/config/modules/embeds/index.ts index 3ec6661..a9e1ae9 100644 --- a/src/commands/config/modules/embeds/index.ts +++ b/src/commands/config/modules/embeds/index.ts @@ -5,15 +5,11 @@ import { } from "discord.js"; import { SlashCommandSubcommandBuilder } from "@discordjs/builders"; +import deferReply from "../../../../handlers/deferReply"; +import checkPermission from "../../../../helpers/checkPermission"; import getValues from "./components/getValues"; export default { - metadata: { - guildOnly: true, - ephemeral: true, - permissions: [PermissionsBitField.Flags.ManageGuild], - }, - builder: (command: SlashCommandSubcommandBuilder) => { return command .setName("embeds") @@ -50,6 +46,10 @@ export default { ); }, execute: async (interaction: ChatInputCommandInteraction) => { + await deferReply(interaction, true); + + await checkPermission(interaction, PermissionsBitField.Flags.ManageGuild); + const { guild } = interaction; if (!guild) throw new Error("Guild not found"); diff --git a/src/commands/config/modules/index.ts b/src/commands/config/modules/index.ts deleted file mode 100644 index 7d8ba77..0000000 --- a/src/commands/config/modules/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import audits from "./audits"; -import cpgg from "./cpgg"; -import credits from "./credits"; -import embeds from "./embeds"; -import points from "./points"; -import shop from "./shop"; -import welcome from "./welcome"; - -export default { audits, credits, points, cpgg, shop, welcome, embeds }; diff --git a/src/commands/config/modules/points/index.ts b/src/commands/config/modules/points/index.ts index fc67d3b..7f89c8a 100644 --- a/src/commands/config/modules/points/index.ts +++ b/src/commands/config/modules/points/index.ts @@ -5,16 +5,12 @@ import { PermissionsBitField, } from "discord.js"; import prisma from "../../../../handlers/database"; +import deferReply from "../../../../handlers/deferReply"; +import checkPermission from "../../../../helpers/checkPermission"; import getEmbedConfig from "../../../../helpers/getEmbedData"; import logger from "../../../../middlewares/logger"; export default { - metadata: { - guildOnly: true, - ephemeral: true, - permissions: [PermissionsBitField.Flags.ManageGuild], - }, - builder: (command: SlashCommandSubcommandBuilder) => { return command .setName("points") @@ -45,6 +41,10 @@ export default { ); }, execute: async (interaction: ChatInputCommandInteraction) => { + await deferReply(interaction, true); + + await checkPermission(interaction, PermissionsBitField.Flags.ManageGuild); + const { successColor, footerText, footerIcon } = await getEmbedConfig( interaction.guild ); diff --git a/src/commands/config/modules/shop/index.ts b/src/commands/config/modules/shop/index.ts index 2d605d6..fd23ac1 100644 --- a/src/commands/config/modules/shop/index.ts +++ b/src/commands/config/modules/shop/index.ts @@ -5,16 +5,12 @@ import { PermissionsBitField, } from "discord.js"; import prisma from "../../../../handlers/database"; +import deferReply from "../../../../handlers/deferReply"; +import checkPermission from "../../../../helpers/checkPermission"; import getEmbedConfig from "../../../../helpers/getEmbedData"; import logger from "../../../../middlewares/logger"; export default { - metadata: { - guildOnly: true, - ephemeral: true, - permissions: [PermissionsBitField.Flags.ManageGuild], - }, - builder: (command: SlashCommandSubcommandBuilder) => { return command .setName("shop") @@ -33,6 +29,10 @@ export default { ); }, execute: async (interaction: ChatInputCommandInteraction) => { + await deferReply(interaction, true); + + await checkPermission(interaction, PermissionsBitField.Flags.ManageGuild); + const { successColor, footerText, footerIcon } = await getEmbedConfig( interaction.guild ); diff --git a/src/commands/config/modules/welcome/index.ts b/src/commands/config/modules/welcome/index.ts index fd604a1..259a63f 100644 --- a/src/commands/config/modules/welcome/index.ts +++ b/src/commands/config/modules/welcome/index.ts @@ -6,16 +6,12 @@ import { PermissionsBitField, } from "discord.js"; import prisma from "../../../../handlers/database"; +import deferReply from "../../../../handlers/deferReply"; +import checkPermission from "../../../../helpers/checkPermission"; import getEmbedConfig from "../../../../helpers/getEmbedData"; import logger from "../../../../middlewares/logger"; export default { - metadata: { - guildOnly: true, - ephemeral: true, - permissions: [PermissionsBitField.Flags.ManageGuild], - }, - builder: (command: SlashCommandSubcommandBuilder) => { return command .setName("welcome") @@ -56,6 +52,10 @@ export default { ); }, execute: async (interaction: ChatInputCommandInteraction) => { + await deferReply(interaction, true); + + await checkPermission(interaction, PermissionsBitField.Flags.ManageGuild); + const { successColor, footerText, footerIcon } = await getEmbedConfig( interaction.guild );