xyter/src/commands/shop/index.ts
2022-04-10 15:55:47 +00:00

77 lines
2.1 KiB
TypeScript

// Dependencies
import { SlashCommandBuilder } from "@discordjs/builders";
import { CommandInteraction } from "discord.js";
// Modules
import pterodactyl from "./modules/pterodactyl";
// Groups
import roles from "./roles";
// Handlers
import logger from "../../handlers/logger";
// Function
export default {
data: new SlashCommandBuilder()
.setName("shop")
.setDescription("Open our shop.")
.addSubcommand((subcommand) =>
subcommand
.setName("pterodactyl")
.setDescription("Buy pterodactyl power.")
.addIntegerOption((option) =>
option
.setName("amount")
.setDescription("How much credits you want to withdraw.")
)
)
.addSubcommandGroup((group) =>
group
.setName("roles")
.setDescription("Manage custom roles.")
.addSubcommand((command) =>
command
.setName("buy")
.setDescription("Buy a custom role")
.addStringOption((option) =>
option
.setName("name")
.setDescription("Name of the role you wish to purchase.")
)
)
.addSubcommand((command) =>
command
.setName("cancel")
.setDescription("Cancel a custom role")
.addRoleOption((option) =>
option
.setName("role")
.setDescription("Name of the role you wish to cancel.")
)
)
),
async execute(interaction: CommandInteraction) {
// Destructure
const { options, commandName, user, guild } = interaction;
// Module - Pterodactyl
if (options?.getSubcommand() === "pterodactyl") {
// Execute Module - Pterodactyl
return await pterodactyl(interaction);
}
// Group - Roles
else if (options?.getSubcommandGroup() === "roles") {
// Execute Group - Roles
return await roles(interaction);
}
// Send debug message
return logger?.debug(
`Guild: ${guild?.id} User: ${
user?.id
} executed /${commandName} ${options?.getSubcommandGroup()} ${options?.getSubcommand()}`
);
},
};