This commit is contained in:
kwaroran
2025-03-13 16:38:41 +09:00
5 changed files with 38 additions and 37 deletions

View File

@@ -318,6 +318,9 @@
});
async function updateInputTransateMessage(reverse: boolean) {
if(!DBState.db.useAutoTranslateInput){
return
}
if(isExpTranslator()){
if(!reverse){
messageInputTranslate = ''

View File

@@ -44,7 +44,12 @@ function nodeObserve(node:HTMLElement){
if(currentChar.type === 'group'){
return;
}
await runLuaButtonTrigger(currentChar, btnEvent);
const triggerResult = await runLuaButtonTrigger(currentChar, btnEvent);
if(triggerResult){
setCurrentChat(triggerResult.chat);
}
}, {
passive: true,
});

View File

@@ -1544,6 +1544,17 @@ function basicMatcher (p1:string,matcherArg:matcherArg,vars:{[key:string]:string
}
return '0'
}
case 'module_assetlist':{
const module = getModules()?.find((f) => {
return f.namespace === arra[1]
})
if(!module){
return ''
}
return makeArray(module.assets?.map((f) => {
return f[0]
}))
}
case 'filter':{
const array = parseArray(arra[1])
const filterTypes = [

View File

@@ -22,6 +22,7 @@ interface LuaEngineState {
code: string;
engine: LuaEngine;
mutex: Mutex;
chat: Chat;
}
let LuaEngines = new Map<string, LuaEngineState>()
@@ -53,10 +54,13 @@ export async function runLua(code:string, arg:{
luaEngineState = {
code,
engine: await luaFactory.createEngine({injectObjects: true}),
mutex: new Mutex()
mutex: new Mutex(),
chat
}
LuaEngines.set(mode, luaEngineState)
wasEmpty = true
} else {
luaEngineState.chat = chat
}
return await luaEngineState.mutex.runExclusive(async () => {
if (wasEmpty || code !== luaEngineState.code) {
@@ -104,79 +108,58 @@ export async function runLua(code:string, arg:{
if(!LuaSafeIds.has(id)){
return
}
chat = getCurrentChat()
const message = chat.message?.at(index)
const message = luaEngineState.chat.message?.at(index)
if(message){
message.data = value
}
setCurrentChat(chat)
})
luaEngine.global.set('setChatRole', (id:string, index:number, value:string) => {
if(!LuaSafeIds.has(id)){
return
}
chat = getCurrentChat()
const message = chat.message?.at(index)
const message = luaEngineState.chat.message?.at(index)
if(message){
message.role = value === 'user' ? 'user' : 'char'
}
setCurrentChat(chat)
})
luaEngine.global.set('cutChat', (id:string, start:number, end:number) => {
if(!LuaSafeIds.has(id)){
return
}
chat = getCurrentChat()
chat.message = chat.message.slice(start,end)
setCurrentChat(chat)
luaEngineState.chat.message = luaEngineState.chat.message.slice(start,end)
})
luaEngine.global.set('removeChat', (id:string, index:number) => {
if(!LuaSafeIds.has(id)){
return
}
chat = getCurrentChat()
chat.message.splice(index, 1)
setCurrentChat(chat)
luaEngineState.chat.message.splice(index, 1)
})
luaEngine.global.set('addChat', (id:string, role:string, value:string) => {
if(!LuaSafeIds.has(id)){
return
}
chat = getCurrentChat()
let roleData:'user'|'char' = role === 'user' ? 'user' : 'char'
chat.message.push({role: roleData, data: value})
setCurrentChat(chat)
luaEngineState.chat.message.push({role: roleData, data: value})
})
luaEngine.global.set('insertChat', (id:string, index:number, role:string, value:string) => {
if(!LuaSafeIds.has(id)){
return
}
chat = getCurrentChat()
let roleData:'user'|'char' = role === 'user' ? 'user' : 'char'
chat.message.splice(index, 0, {role: roleData, data: value})
setCurrentChat(chat)
})
luaEngine.global.set('removeChat', (id:string, index:number) => {
if(!LuaSafeIds.has(id)){
return
}
chat = getCurrentChat()
chat.message.splice(index, 1)
setCurrentChat(chat)
luaEngineState.chat.message.splice(index, 0, {role: roleData, data: value})
})
luaEngine.global.set('getChatLength', (id:string) => {
if(!LuaSafeIds.has(id)){
return
}
chat = getCurrentChat()
return chat.message.length
return luaEngineState.chat.message.length
})
luaEngine.global.set('getFullChatMain', (id:string) => {
chat = getCurrentChat()
const data = JSON.stringify(chat.message.map((v) => {
const data = JSON.stringify(luaEngineState.chat.message.map((v) => {
return {
role: v.role,
data: v.data
data: v.data,
time: v.time ?? 0
}
}))
return data
@@ -187,14 +170,12 @@ export async function runLua(code:string, arg:{
if(!LuaSafeIds.has(id)){
return
}
chat = getCurrentChat()
chat.message = realValue.map((v) => {
luaEngineState.chat.message = realValue.map((v) => {
return {
role: v.role,
data: v.data
}
})
setCurrentChat(chat)
})
luaEngine.global.set('logMain', (value:string) => {
@@ -550,6 +531,7 @@ export async function runLua(code:string, arg:{
LuaSafeIds.delete(accessKey)
LuaLowLevelIds.delete(accessKey)
chat = luaEngineState.chat
return {
stopSending, chat, res

View File

@@ -1151,7 +1151,7 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
if(triggerCodeResult.stopSending){
stopSending = true
}
chat = getCurrentChat()
chat = triggerCodeResult.chat
break
}