Initial commit

This commit is contained in:
2024-08-09 16:56:18 +00:00
commit af7628aaf1
22 changed files with 1334 additions and 0 deletions

23
classes/command.ts Normal file
View File

@@ -0,0 +1,23 @@
import {
SlashCommandBuilder,
SlashCommandSubcommandsOnlyBuilder,
CommandInteraction
} from 'discord.js';
export interface Component{
execute(interaction: unknown): Promise<void>;
build(): unknown;
};
export abstract class Command implements Component{
abstract get name(): string;
abstract get description(): string;
abstract execute(interaction: CommandInteraction): Promise<void>;
build():
SlashCommandBuilder | SlashCommandSubcommandsOnlyBuilder |
Omit<SlashCommandBuilder, "addSubcommand" | "addSubcommandGroup">{
return new SlashCommandBuilder()
.setName(this.name)
.setDescription(this.description);
}
};

22
classes/extendedclient.ts Normal file
View File

@@ -0,0 +1,22 @@
import {
Client,
Collection,
ClientOptions,
} from 'discord.js';
import {Command} from './command'
export function isExtendedClient(client: Client): client is ExtendedClient{
return (client as ExtendedClient).commands !== undefined;
}
export class ExtendedClient extends Client{
public commands: Collection<string, Command>;
constructor(
opts: ClientOptions,
cmds = new Collection<string, Command>()
){
super(opts);
this.commands = cmds;
}
};