From bc6157e4a18b087ffcee3a6f530696906a2c971e Mon Sep 17 00:00:00 2001 From: Raven Scott Date: Mon, 22 May 2023 18:23:17 +0200 Subject: [PATCH] bug fix --- llamabot.js | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/llamabot.js b/llamabot.js index 24aa06e..2e07588 100644 --- a/llamabot.js +++ b/llamabot.js @@ -31,6 +31,9 @@ const channelIDs = process.env.CHANNEL_IDS.split(','); // Store Conversations in a MAP const conversations = new Map(); +let botMessage; // define a variable to hold the message object + + // Set busy function this allows us to set our bot into busy mode // locking out all other tasks until the current one is complete function setBusy(userId, isBusy) { @@ -105,7 +108,7 @@ client.on('messageCreate', async (message) => { if (!channelIDs.includes(message.channel.id)) { return; } - + // Always ignore bots! if (message.author.bot) return; @@ -124,7 +127,7 @@ client.on('messageCreate', async (message) => { messages: [], busy: false }; - + // If we do not have a conversation, lets generate one. // This requires a chatflow for the API. // Its better to have a default beginning conversation @@ -143,7 +146,7 @@ client.on('messageCreate', async (message) => { content: ` Hello, ${message.author.username}, how may I help you?` }); } - + // If a user needs a reset, we delete their MAP if (message.content === '!reset' || message.content === '!r') { conversations.delete(userID); // Delete user's conversation map if they request reset @@ -161,10 +164,10 @@ client.on('messageCreate', async (message) => { try { - // Now we have our conversation set up - // Lets set precence to busy - // We also will set our conversations MAP to busy - // Locking out all other tasks + // Now we have our conversation set up + // Lets set precence to busy + // We also will set our conversations MAP to busy + // Locking out all other tasks setPresenceBusy() setBusy(message.author.id, true); @@ -215,7 +218,7 @@ client.on('messageCreate', async (message) => { } conversations.set(userID, conversation); // Update user's conversation map in memory - + // Print the current conversation as it stands console.log(conversation) } catch (err) { @@ -302,7 +305,6 @@ async function generateResponse(conversation, message) { // Copy our messages from MAP const messagesCopy = [...conversation.messages]; // create a copy of the messages array - let botMessage; // define a variable to hold the message object let time = 0 // define a function that shows the system load percentage and updates the message const showSystemLoad = async () => { @@ -318,10 +320,10 @@ async function generateResponse(conversation, message) { const freeMemory = os.freemem() / 1024 / 1024 / 1024; const totalMemory = os.totalmem() / 1024 / 1024 / 1024; const usedMemory = totalMemory - freeMemory; - + // lets build some embed data let embedData; - + // If we have NO GPU config lets send system stats only if (process.env.GPU == 0) { embedData = { @@ -348,7 +350,13 @@ async function generateResponse(conversation, message) { botMessage = await message.channel.send({ embeds: [embedData] }); })(); } else { - botMessage.edit({ embeds: [embedData] }); // otherwise, update the message + (async () => { + if (!isAnyConversationBusy()) { + botMessage.delete() + } else { + await botMessage.edit({ embeds: [embedData] }); // otherwise, update the message + } + })(); } } else { // If we do have GPU=1 lets send some card info too! @@ -410,13 +418,14 @@ async function generateResponse(conversation, message) { }); }; - // call the function initially - await showSystemLoad(); - - // Grab the REFRESH_INTERVAL from ENV if not exist, lets use 7 (seconds) - const refreshInterval = setInterval(showSystemLoad, (process.env.REFRESH_INTERVAL || 7) * 1000); - try { + + // call the function initially + await showSystemLoad(); + + // Grab the REFRESH_INTERVAL from ENV if not exist, lets use 7 (seconds) + const refreshInterval = setInterval(showSystemLoad, (process.env.REFRESH_INTERVAL || 7) * 1000); + // Sending request to our API const response = await fetch(`http://${process.env.ROOT_IP}:${process.env.ROOT_PORT}/v1/chat/completions`, { method: 'POST', @@ -442,7 +451,7 @@ async function generateResponse(conversation, message) { // clear the interval, replace the "please wait" message with the response, and update the message clearInterval(refreshInterval); console.log(responseText); - botMessage.delete() + await botMessage.delete() botMessage = null; return responseText;