import fs from 'fs'; import path from 'path'; import Client from './includes/client.js'; // Adjust the import path as necessary import 'dotenv/config'; // Create a new instance of the chatBot class with a valid botName const botName = process.env.BOT_NAME; // Replace 'MyBot' with the desired bot name // Load commands from the 'commands' directory const commandsDir = path.join(new URL('./commands/', import.meta.url).pathname); async function loadCommands() { const commands = {}; // Read files from the commands directory const files = await fs.promises.readdir(commandsDir); // Iterate through each file for (const file of files) { // Check if the file is a JavaScript file if (file.endsWith('.js')) { const commandName = path.basename(file, '.js'); const commandPath = path.join(commandsDir, file); // Dynamically import the command module const { default: commandModule } = await import(commandPath); // Add the command module to the commands object commands[commandName] = commandModule; } } return commands; } loadCommands().then(commands => { // Create the chatBot instance with the defined onMessageReceived function const bot = new Client(botName); // We use Event Emitter here to handle new messages bot.on('onMessage', (peer, message) => { if (message.type == "icon") return; console.log(message); console.log(`Message received from ${message.name} at ${new Date(message.timestamp).toLocaleTimeString()}: ${message.message}`); // Check if the message starts with a command prefix if (message.message.startsWith('!')) { // Extract the command and arguments const [command, ...args] = message.message.slice(1).split(' '); // Find the corresponding command handler const commandHandler = commands[command.toLowerCase()]; // If the command exists, execute its handler if (commandHandler && typeof commandHandler.handler === 'function') { commandHandler.handler(bot, args, message); } } }); bot.on('onBotJoinRoom', () => { console.log("Bot is ready!"); bot.sendMessage(process.env.ON_READY_MESSAGE); }); bot.joinChatRoom(1234); bot.joinChatRoom(5678); }).catch(error => { console.error('Error loading commands:', error); });