Zonies-Bot/handlers/function.js
2025-05-12 15:08:23 -05:00

40 lines
1.4 KiB
JavaScript

const { readdirSync } = require("fs")
const { join } = require("path")
const logger = require("../functions/logger")
/**
* Loads and registers all function modules from the functions directory
* @param {Object} client - The client instance
* @returns {Promise<void>}
*/
module.exports = async (client) => {
try {
if (!client || !client.functions) {
throw new Error('Invalid client object or missing functions collection');
}
const functionsDir = join(__dirname, '..', 'functions');
const functions = readdirSync(functionsDir)
.filter(file => file.endsWith('.js') && file !== 'logger.js');
const loadedFunctions = await Promise.all(
functions.map(async (file) => {
try {
const functionName = file.split('.')[0];
const functionModule = require(join(functionsDir, file));
client.functions.set(functionName, functionModule);
return functionName;
} catch (error) {
logger.error('Function_Handler', `Failed to load function ${file}: ${error.message}`);
return null;
}
})
);
const successfulLoads = loadedFunctions.filter(Boolean).length;
logger.event('Function_Handler', `Successfully loaded ${successfulLoads}/${functions.length} functions`);
} catch (error) {
logger.error('Function_Handler', `Failed to initialize function handler: ${error.message}`);
throw error;
}
};