[fix] triggers

This commit is contained in:
kwaroran
2023-08-03 19:35:30 +09:00
parent 40346e4f24
commit 3af31f8383
2 changed files with 16 additions and 18 deletions

View File

@@ -631,8 +631,10 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
} }
} }
currentChat = db.characters[selectedChar].chats[selectedChat]
const triggerResult = await runTrigger(currentChar, 'output', {chat:currentChat}) const triggerResult = await runTrigger(currentChar, 'output', {chat:currentChat})
if(triggerResult){ console.log(triggerResult)
if(triggerResult && triggerResult.chat){
db.characters[selectedChar].chats[selectedChat] = triggerResult.chat db.characters[selectedChar].chats[selectedChat] = triggerResult.chat
setDatabase(db) setDatabase(db)
} }
@@ -653,13 +655,17 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
saying: currentChar.chaId saying: currentChar.chaId
}) })
db.characters[selectedChar].reloadKeys += 1 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) await sayTTS(currentChar, result)
setDatabase(db) 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){ if(req.special){

View File

@@ -60,8 +60,8 @@ export type additonalSysPrompt = {
} }
export async function runTrigger(char:character,mode:triggerMode, arg:{ export async function runTrigger(char:character,mode:triggerMode, arg:{
chat?: Chat chat: Chat
} = {}){ }){
char = cloneDeep(char) char = cloneDeep(char)
let additonalSysPrompt:additonalSysPrompt = { let additonalSysPrompt:additonalSysPrompt = {
start:'', start:'',
@@ -69,8 +69,8 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
promptend: '' promptend: ''
} }
const triggers = char.triggerscript const triggers = char.triggerscript
const chat = arg.chat ?? char.chats[char.chatPage] const chat = cloneDeep(arg.chat ?? char.chats[char.chatPage])
if(!triggers){ if((!triggers) || (triggers.length === 0)){
return null return null
} }
let varValues = getVarChat(-1, char) 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 let caculatedTokens = 0
if(additonalSysPrompt.start){ if(additonalSysPrompt.start){
caculatedTokens += await tokenize(additonalSysPrompt.start) caculatedTokens += await tokenize(additonalSysPrompt.start)