@botport/core
Version:
Unified framework for Discord bot products, published by BotPort. Combines docky and framework functionality.
90 lines (75 loc) • 2.6 kB
JavaScript
// 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;