🎨 Config Command is now using guard classes
This commit is contained in:
parent
ab7043d75f
commit
9d2bd0c848
9 changed files with 77 additions and 78 deletions
|
@ -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.");
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
);
|
||||
|
|
|
@ -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
|
||||
);
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
|
@ -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 };
|
|
@ -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
|
||||
);
|
||||
|
|
|
@ -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
|
||||
);
|
||||
|
|
|
@ -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
|
||||
);
|
||||
|
|
Loading…
Add table
Reference in a new issue