fix: Respect module lowLevelAccess for Lua button triggers

This commit is contained in:
enzi221
2025-05-22 23:53:40 +09:00
parent 6e5cf5eb48
commit ff9dbe7aa1

View File

@@ -1,6 +1,6 @@
import { getChatVar, hasher, setChatVar, getGlobalChatVar, type simpleCharacterArgument, risuChatParser } from "../parser.svelte"; import { getChatVar, hasher, setChatVar, getGlobalChatVar, type simpleCharacterArgument, risuChatParser } from "../parser.svelte";
import { LuaEngine, LuaFactory } from "wasmoon"; import { LuaEngine, LuaFactory } from "wasmoon";
import { getCurrentCharacter, getCurrentChat, getDatabase, setDatabase, type Chat, type character, type groupChat, type loreBook } from "../storage/database.svelte"; import { getCurrentCharacter, getCurrentChat, getDatabase, setDatabase, type Chat, type character, type groupChat, type triggerscript } from "../storage/database.svelte";
import { get } from "svelte/store"; import { get } from "svelte/store";
import { ReloadGUIPointer, selectedCharID } from "../stores.svelte"; import { ReloadGUIPointer, selectedCharID } from "../stores.svelte";
import { alertSelect, alertError, alertInput, alertNormal } from "../alert"; import { alertSelect, alertError, alertInput, alertNormal } from "../alert";
@@ -956,13 +956,16 @@ export async function runLuaEditTrigger<T extends any>(char:character|groupChat|
export async function runLuaButtonTrigger(char:character|groupChat|simpleCharacterArgument, data:string):Promise<any>{ export async function runLuaButtonTrigger(char:character|groupChat|simpleCharacterArgument, data:string):Promise<any>{
let runResult let runResult
try { try {
const triggers = char.type === 'group' ? getModuleTriggers() : char.triggerscript.concat(getModuleTriggers()) const triggers = char.type === 'group' ? getModuleTriggers() : char.triggerscript.map<triggerscript>((v) => ({
const lowLevelAccess = char.type !== 'simple' ? char.lowLevelAccess ?? false : false ...v,
lowLevelAccess: char.type !== 'simple' ? char.lowLevelAccess ?? false : false
})).concat(getModuleTriggers())
for(let trigger of triggers){ for(let trigger of triggers){
if(trigger?.effect?.[0]?.type === 'triggerlua'){ if(trigger?.effect?.[0]?.type === 'triggerlua'){
runResult = await runLua(trigger.effect[0].code, { runResult = await runLua(trigger.effect[0].code, {
char: char, char: char,
lowLevelAccess: lowLevelAccess, lowLevelAccess: trigger.lowLevelAccess,
mode: 'onButtonClick', mode: 'onButtonClick',
data: data data: data
}) })