import type { ChatInputCommandInteraction, Client, SlashCommandBuilder } from "discord.js"; import type { Sequelize } from "sequelize"; export interface Settings { // Main Discord client object client: Client; // Database access object database: Sequelize; } export interface Command { data: SlashCommandBuilder; execute: (iteraction: ChatInputCommandInteraction) => Promise; } export interface Plugin { start: () => Promise; stop: () => Promise; commands: Command[] } export class BasePlugin implements Plugin { settings: Settings; commands: Command[] constructor(settings: Settings) { this.settings = settings; } async start() {} async stop() {} }