import { ChatInputCommandInteraction, SlashCommandBuilder, type SlashCommandOptionsOnlyBuilder, SlashCommandSubcommandBuilder, } from "discord.js"; import { AdminUsers } from "./admin"; export const commandExecuteNameHashMap = []; export type DiscordCommandData = | SlashCommandBuilder | SlashCommandOptionsOnlyBuilder | SlashCommandSubcommandBuilder; export type DiscordCommandExecute = ( interaction: ChatInputCommandInteraction, ) => Promise; export interface DiscordCommand { data: DiscordCommandData; execute: DiscordCommandExecute; } export function defineCommand( data: DiscordCommandData, execute: DiscordCommandExecute, isAdminCommand = false, ): DiscordCommand { if (isAdminCommand) { return { data: data, execute: async ( interaction: ChatInputCommandInteraction, ): Promise => { if (AdminUsers.includes(interaction.user.id)) { execute(interaction); } else { interaction.reply("당신은 어드민이 아닙니다"); } }, }; } return { data: data, execute: execute, }; }