From 3af31f83831f9f5784c8fa09a0776db7ec2df6ec Mon Sep 17 00:00:00 2001 From: kwaroran Date: Thu, 3 Aug 2023 19:35:30 +0900 Subject: [PATCH] [fix] triggers --- src/ts/process/index.ts | 18 ++++++++++++------ src/ts/process/triggers.ts | 16 ++++------------ 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/ts/process/index.ts b/src/ts/process/index.ts index 63888575..6910b2bc 100644 --- a/src/ts/process/index.ts +++ b/src/ts/process/index.ts @@ -630,9 +630,11 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n break } } - + + currentChat = db.characters[selectedChar].chats[selectedChat] const triggerResult = await runTrigger(currentChar, 'output', {chat:currentChat}) - if(triggerResult){ + console.log(triggerResult) + if(triggerResult && triggerResult.chat){ db.characters[selectedChar].chats[selectedChat] = triggerResult.chat setDatabase(db) } @@ -653,13 +655,17 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n saying: currentChar.chaId }) db.characters[selectedChar].reloadKeys += 1 - const triggerResult = await runTrigger(currentChar, 'output', {chat:currentChat}) - if(triggerResult){ - db.characters[selectedChar].chats[selectedChat] = triggerResult.chat - } await sayTTS(currentChar, result) setDatabase(db) } + + currentChat = db.characters[selectedChar].chats[selectedChat] + + const triggerResult = await runTrigger(currentChar, 'output', {chat:currentChat}) + if(triggerResult && triggerResult.chat){ + db.characters[selectedChar].chats[selectedChat] = triggerResult.chat + setDatabase(db) + } } if(req.special){ diff --git a/src/ts/process/triggers.ts b/src/ts/process/triggers.ts index f896653e..6c944ead 100644 --- a/src/ts/process/triggers.ts +++ b/src/ts/process/triggers.ts @@ -60,8 +60,8 @@ export type additonalSysPrompt = { } export async function runTrigger(char:character,mode:triggerMode, arg:{ - chat?: Chat -} = {}){ + chat: Chat +}){ char = cloneDeep(char) let additonalSysPrompt:additonalSysPrompt = { start:'', @@ -69,8 +69,8 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{ promptend: '' } const triggers = char.triggerscript - const chat = arg.chat ?? char.chats[char.chatPage] - if(!triggers){ + const chat = cloneDeep(arg.chat ?? char.chats[char.chatPage]) + if((!triggers) || (triggers.length === 0)){ return null } let varValues = getVarChat(-1, char) @@ -182,14 +182,6 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{ } } } - - if(varValuesChanged){ - chat.message[chat.message.length-1].data = chat.message.at(-1).data.replaceAll(/{{(setvar|getvar)::.+?}}/gis,'') + Object.keys(varValues).map((v)=>`{{setvar::${v}::${varValues[v]}}}`).join('') - } - - if(arg.chat !== undefined && arg.chat !== null){ - char.chats[char.chatPage] = chat - } let caculatedTokens = 0 if(additonalSysPrompt.start){ caculatedTokens += await tokenize(additonalSysPrompt.start)