UNPKG

@botport/core

Version:

Unified framework for Discord bot products, published by BotPort. Combines docky and framework functionality.

90 lines (75 loc) 2.6 kB
// Core framework functionality (from @botport/framework) import { db, initDatabases } from './lib/database/db.js'; import { ErrorHandler } from './lib/handlers/errors/main.js'; import { handleInteraction } from './lib/handlers/interactions/interactions.js'; import logBanner from './lib/essentials/banner.js'; import clogger from './lib/logger/logger.js'; // Protection utilities import requestTracker from './lib/utils/requestTracker.js'; import userLimiter from './lib/utils/userLimiter.js'; import protect from './lib/utils/protect.js'; // Bot setup functionality (from @botport/core) export { setupBot } from './lib/bot/setup.js'; export { validateEnvironmentVariables, getProjectDirectory, loadAddons, isDebug } from './lib/config/environment.js'; export { loadCommands } from './lib/loaders/commandLoader.js'; export { loadEvents } from './lib/loaders/eventLoader.js'; export { loadAddonsIfEnabled } from './lib/loaders/addonLoader.js'; export { registerCommands } from './lib/registration/commandRegistration.js'; export { parseInfoFile } from './lib/utils/fileUtils.js'; // Core framework exports export { db, initDatabases, ErrorHandler, handleInteraction, logBanner, clogger as logger // Export as 'logger' to match TypeScript declarations }; // Protection utilities exports export { requestTracker, userLimiter, protect }; export class BotFramework { constructor(options = {}) { this.options = options; this.initialized = false; this.logger = clogger; // Add logger as instance property this.requestTracker = requestTracker; // Add protection utilities this.userLimiter = userLimiter; } async initialize() { if (this.options.showBanner !== false) { logBanner(); } await initDatabases(); this.initialized = true; this.logger.success('Bot Framework initialized successfully!'); } getDatabase() { return db; } getErrorHandler() { return ErrorHandler; } getLogger() { return this.logger; } // Protection utility getters getRequestTracker() { return this.requestTracker; } getUserLimiter() { return this.userLimiter; } // Convenience method for protected execution async protect(userId, action, fn, options = {}) { return await protect(userId, action, fn, options); } async handleInteraction(interaction, client, logger = this.logger) { return await handleInteraction(interaction, client, logger); } } // Default export export default BotFramework;