fix trigger variable handling in triggers.ts

This commit is contained in:
kwaroran
2024-03-28 18:37:32 +09:00
parent 25696c8d60
commit 00e86527ce

View File

@@ -1,5 +1,5 @@
import { cloneDeep } from "lodash";
import { getVarChat, risuChatParser } from "../parser";
import { risuChatParser } from "../parser";
import type { Chat, character } from "../storage/database";
import { tokenize } from "../tokenizer";
import { getModuleTriggers } from "./modules";
@@ -74,8 +74,18 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
if((!triggers) || (triggers.length === 0)){
return null
}
let varValues = getVarChat(-1, char)
const charVars = chat.scriptstate
let varValues:{[key:string]:string} = {}
let varValuesChanged = false
for(const key in charVars){
if(!key.startsWith('$')){
continue
}
varValues[key] = charVars[key.substring(1)].toString()
}
for(const trigger of triggers){
if(mode !== trigger.type){
continue
@@ -193,6 +203,11 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
if(additonalSysPrompt.promptend){
caculatedTokens += await tokenize(additonalSysPrompt.promptend)
}
if(varValuesChanged){
for(const key in varValues){
chat.scriptstate['$' + key] = varValues[key]
}
}
return {additonalSysPrompt, chat, tokens:caculatedTokens}