🎨 Config Command is now using guard classes

This commit is contained in:
Axel Olausson Holtenäs 2022-10-21 16:07:25 +02:00
parent ab7043d75f
commit 9d2bd0c848
9 changed files with 77 additions and 78 deletions

View file

@ -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.");

View file

@ -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

View file

@ -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
);

View file

@ -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
);

View file

@ -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");

View file

@ -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 };

View file

@ -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
);

View file

@ -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
);

View file

@ -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
);