Triggers & Lua
Automation that runs around every message.
Trigger scripts
Triggers are event-driven scripts attached to characters. They fire at chat start or around messages, and can read history, set variables, inject system text, or stop a send.
The script format uses indent-scoped commands compatible with RisuAI trigger scripts v2, so existing cards' automation imports and runs.
Low-level effects
Scripts with low-level access unlock effects that reach outside the chat:
runLLM checkSimilarity extractRegex runImgGen showAlert sendAIprompt triggerlua
LLM and image effects call real models and cost tokens; they require being signed in and run through your account.
Lua scripting
For logic beyond the trigger VM, characters can carry Lua. The embedded runtime exposes an API of about 50 functions: chat access, variables, alerts, LLM calls, and more, compatible with RisuAI's Lua surface.
onOutput = async(function(triggerId)
local msg = getChat(triggerId, -1)
if string.find(msg.data, "secret") then
alertNormal(triggerId, "Secret mentioned!")
end
end)
listenEdit("editoutput", function(triggerId, data)
return data:gsub("%s+$", "")
end)Edit hooks
Lua can register hooks that rewrite text in flight: your input before assembly, the model's output before saving, and the raw request right before it is sent.
Hooks run in order with regex scripts of the same stage; use the request log to see the final result of the whole pipeline.
Safety
Display and request script modes run in a sandbox with a restricted command set. Scripts cannot touch your account, keys, or other conversations; the worst a bad script can do is garble its own chat.