From c3fa0a70bd3d5b9c7d21a55242efe4921095c743 Mon Sep 17 00:00:00 2001 From: enzi221 Date: Sun, 25 May 2025 00:57:41 +0900 Subject: [PATCH] feat: Allow getting one chat at an index --- src/ts/process/lua.ts | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/ts/process/lua.ts b/src/ts/process/lua.ts index 049a7fa1..6f8d94fb 100644 --- a/src/ts/process/lua.ts +++ b/src/ts/process/lua.ts @@ -109,6 +109,20 @@ export async function runLua(code:string, arg:{ } return alertSelect(value) }) + + luaEngine.global.set('getChatMain', (id:string, index:number) => { + const chat = luaEngineState.chat.message.at(index) + if(!chat){ + return JSON.stringify(null) + } + const data = { + role: chat.role, + data: chat.data, + time: chat.time ?? 0 + } + return JSON.stringify(data) + }) + luaEngine.global.set('setChat', (id:string, index:number, value:string) => { if(!LuaSafeIds.has(id)){ return @@ -153,12 +167,14 @@ export async function runLua(code:string, arg:{ let roleData:'user'|'char' = role === 'user' ? 'user' : 'char' luaEngineState.chat.message.splice(index, 0, {role: roleData, data: value}) }) + luaEngine.global.set('getTokens', async (id:string, value:string) => { if(!LuaSafeIds.has(id)){ return } return await tokenize(value) }) + luaEngine.global.set('getChatLength', (id:string) => { return luaEngineState.chat.message.length }) @@ -173,7 +189,7 @@ export async function runLua(code:string, arg:{ })) return data }) - + luaEngine.global.set('setFullChatMain', (id:string, value:string) => { if(!LuaSafeIds.has(id)){ return @@ -771,6 +787,10 @@ function luaCodeWarper(code:string){ return ` json = require 'json' +function getChat(id, index) + return json.decode(getChatMain(id, index)) +end + function getFullChat(id) return json.decode(getFullChatMain(id)) end