UNPKG

n1cat-discord-script-manager

Version:

A Discord.js plugin for dynamic script management and execution

147 lines (129 loc) 3.81 kB
import { Client, Message, Interaction, Collection } from 'discord.js'; /** * Script metadata interface */ interface ScriptMetadata { author: string; createdAt: string; uploaderId: string; enabled?: boolean; } /** * Script entry interface */ interface ScriptEntry { name: string; path: string; module: Function; metadata: ScriptMetadata; enabled: boolean; } /** * Script Manager Configuration Options */ interface ScriptManagerOptions { client: Client; scriptFolder: string; allowedUsers?: string[]; maxScriptSize?: number; debug?: boolean; maxExecutionTime?: number; onError?: (error: Error, fileName: string, message?: Message) => void; } /** * Script Manager Class */ declare class ScriptManager { constructor(options: ScriptManagerOptions); client: Client; scripts: Collection<string, ScriptEntry>; commands: Collection<string, any>; loadScripts(options?: { channel?: any }): Promise<{ total: number, loaded: number }>; reloadScript(fileName: string, options?: { channel?: any }): Promise<boolean>; addScript(fileName: string, scriptContent: string, metadata: ScriptMetadata, options?: { channel?: any }): Promise<boolean>; executeScript(scriptName: string, context?: any): Promise<any>; isUserAllowed(userId: string): boolean; } /** * Message Handler Configuration */ interface MessageHandlerOptions { timeout?: number; maxRetries?: number; cacheSize?: number; debug?: boolean; } /** * Message Handler Class */ declare class MessageHandler { constructor(message: Message, options?: MessageHandlerOptions); reply(content: string | object, mentionUser?: boolean): Promise<Message>; send(content: string | object): Promise<Message>; sendEmbed(embed: object): Promise<Message>; edit(content: string | object): Promise<Message>; delete(timeout?: number): Promise<void>; } export interface EventHandlerOptions { client: Client; scriptFolder: string; debug?: boolean; } export interface DependencyVersionInfo { current: string; latest: string; outdated: boolean; } export interface DependencyConflictInfo { hasConflicts: boolean; conflicts: string[]; } export interface DependencySecurityInfo { isSafe: boolean; vulnerabilities: any[]; } export interface DependencyInfo { name: string; description: string; version: string; author?: { name: string; email?: string; url?: string; }; license?: string; repository?: { type: string; url: string; }; } export class EventHandler { constructor(options: EventHandlerOptions); registerEvent(eventName: string, handler: Function): void; registerScriptEvent(eventName: string, handler: Function): void; triggerScriptEvent(eventName: string, ...args: any[]): Promise<void>; removeEvent(eventName: string): void; removeScriptEvent(eventName: string): void; cleanup(): void; } export function createScriptManager(options: ScriptManagerOptions): ScriptManager; export function createMessageHandler(message: Message, options?: MessageHandlerOptions): MessageHandler; export function createEventHandler(options: EventHandlerOptions): EventHandler; export function installDependency(packageName: string, version?: string): Promise<void>; export function loadModule(modulePath: string): Promise<any>; export function checkDependencyVersion(packageName: string): Promise<string>; export function checkDependencyConflicts(packageName: string): Promise<boolean>; export function checkDependencySecurity(packageName: string): Promise<boolean>; export function getDependencyInfo(packageName: string): Promise<{ version: string; dependencies: string[]; devDependencies: string[]; }>; export { ScriptManager, MessageHandler, ScriptMetadata, ScriptEntry, ScriptManagerOptions, MessageHandlerOptions };