From 9fa98831724d5fb376226fe284223657fa7a1847 Mon Sep 17 00:00:00 2001 From: unfunny Date: Sun, 13 Sep 2026 00:51:26 -0400 Subject: [PATCH] fix: wrap loadQuotes in promise for CommonJS compatibility --- index.js | 107 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 59 insertions(+), 48 deletions(-) diff --git a/index.js b/index.js index edbdf5e..9f309eb 100644 --- a/index.js +++ b/index.js @@ -9,58 +9,69 @@ const client = new Client({ } }); -async function loadQuotes() { - const quotesFile = './quotes.json'; - if (fs.existsSync(quotesFile)) { - return JSON.parse(fs.readFileSync(quotesFile, 'utf8')); - } - return []; -} - -const quotes = await loadQuotes(); - -if (quotes.length === 0) { - console.error('No quotes found! Please ensure quotes.json is present.'); - process.exit(1); -} - -let joinedRooms = new Set(); - -client.on('RoomMember#joined', (member) => { - const room = member.room; - if (!joinedRooms.has(room.roomId)) { - joinedRooms.add(room.roomId); - console.log(`Joined room: ${room.roomId}`); - - room.on('EventMessage', async (event) => { - const messageContent = event.getContent(); - - if (!messageContent || !messageContent.body) return; - - const body = messageContent.body.toLowerCase(); - const botCommand = (process.env.BOT_COMMAND || '!quote').toLowerCase(); - - if (body.includes(botCommand)) { - const randomQuote = quotes[Math.floor(Math.random() * quotes.length)]; +function loadQuotes() { + return new Promise((resolve) => { + setTimeout(() => { + const quotesFile = './quotes.json'; + if (fs.existsSync(quotesFile)) { try { - await room.sendMessage(randomQuote); - console.log(`Sent quote to ${room.roomId}`); + resolve(JSON.parse(fs.readFileSync(quotesFile, 'utf8'))); } catch (err) { - console.error('Failed to send message:', err.message); + resolve([]); } + } else { + resolve([]); } - }); - - room.on('RoomMember#left', () => { - joinedRooms.delete(room.roomId); - console.log(`Left room: ${room.roomId}`); - }); - } -}); + }, 0); + }); +} -client.init().then(() => { - console.log('Bot is online'); +loadQuotes().then((quotes) => { + if (quotes.length === 0) { + console.error('No quotes found! Please ensure quotes.json is present.'); + process.exit(1); + } + + let joinedRooms = new Set(); + + client.on('RoomMember#joined', (member) => { + const room = member.room; + if (!joinedRooms.has(room.roomId)) { + joinedRooms.add(room.roomId); + console.log(`Joined room: ${room.roomId}`); + + room.on('EventMessage', async (event) => { + const messageContent = event.getContent(); + + if (!messageContent || !messageContent.body) return; + + const body = messageContent.body.toLowerCase(); + const botCommand = (process.env.BOT_COMMAND || '!quote').toLowerCase(); + + if (body.includes(botCommand)) { + const randomQuote = quotes[Math.floor(Math.random() * quotes.length)]; + try { + await room.sendMessage(randomQuote); + console.log(`Sent quote to ${room.roomId}`); + } catch (err) { + console.error('Failed to send message:', err.message); + } + } + }); + + room.on('RoomMember#left', () => { + joinedRooms.delete(room.roomId); + console.log(`Left room: ${room.roomId}`); + }); + } + }); + + client.init().then(() => { + console.log('Bot is online'); + }).catch(err => { + console.error('Failed to initialize client:', err.message); + process.exit(1); + }); }).catch(err => { - console.error('Failed to initialize client:', err.message); - process.exit(1); + console.error('Failed to load quotes:', err.message); });