Merge branch 'main' of https://github.com/kwaroran/RisuAI
This commit is contained in:
@@ -318,6 +318,9 @@
|
||||
});
|
||||
|
||||
async function updateInputTransateMessage(reverse: boolean) {
|
||||
if(!DBState.db.useAutoTranslateInput){
|
||||
return
|
||||
}
|
||||
if(isExpTranslator()){
|
||||
if(!reverse){
|
||||
messageInputTranslate = ''
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1151,7 +1151,7 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
|
||||
if(triggerCodeResult.stopSending){
|
||||
stopSending = true
|
||||
}
|
||||
chat = getCurrentChat()
|
||||
chat = triggerCodeResult.chat
|
||||
break
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user