替换或修改变量
提示
请务必先阅读如何正确使用酒馆助手
点击查看对应类型定义文件 (可发给 AI 或 IDE 使用, 酒馆助手界面中提供了打包下载)
replaceVariables
完全替换变量表
之所以提供这么直接的函数, 是因为酒馆助手内置了 lodash 库: insertOrAssignVariables
等函数其实就是先 getVariables
获取变量表, 用 lodash 库处理, 再 replaceVariables
替换变量表.
ts
function replaceVariables(variables: Record<string, any>, option: VariableOption): Record<string, any>
参数
variables
要用于替换的变量表
option?
要操作的变量类型
示例
ts
// 执行前的聊天变量: `{爱城华恋: {好感度: 5}}`
await replaceVariables({神乐光: {好感度: 5, 认知度: 0}});
// 执行后的聊天变量: `{神乐光: {好感度: 5, 认知度: 0}}`
ts
// 执行前的聊天变量: `{神乐光: {好感度: 5}}`
let variables = getVariables();
_.unset(variables, "神乐光.好感度");
await replaceVariables(variables);
// 执行后的聊天变量: `{神乐光: {}}`
ts
// 在脚本内替换该脚本绑定的变量
await replaceVariables({神乐光: {好感度: 5, 认知度: 0}}, {type: 'script'});
updateVariablesWith
用函数更新变量表
ts
function updateVariablesWith(
updater: (variables: Record<string, any>) => Record<string, any>,
option: VariableOption,
): Record<string, any>;
function updateVariablesWith(
updater: (variables: Record<string, any>) => Promise<Record<string, any>>,
option: VariableOption,
): Promise<Record<string, any>>;
参数
updater
用于更新变量表的函数, 接收变量表作为参数, 返回更新后的变量表
option
要操作的变量类型
返回值
- 更新后的变量表:
Promise<Record<string, any>>
示例
ts
// 执行前的聊天变量: `{神乐光: {好感度: 5}}`
updateVariablesWith(variables => {_.unset(variables, "神乐光.好感度"); return variables;}, {type: 'chat'});
// 执行后的聊天变量: `{神乐光: {}}`
ts
// 更新 "爱城华恋.好感度" 为原来的 2 倍, 如果该变量不存在则设置为 0
updateVariablesWith(variables => _.update(variables, "爱城华恋.好感度", value => value ? value * 2 : 0), {type: 'chat'});
insertOrAssignVariables
插入或修改变量值, 取决于变量是否存在.
ts
function insertOrAssignVariables(variables: Record<string, any>, option: VariableOption): Record<string, any>;
参数
variables
要更新的变量:
- 如果变量不存在, 则新增该变量
- 如果变量已经存在, 则修改该变量的值
option
要操作的变量类型
示例
ts
// 执行前变量: `{爱城华恋: {好感度: 5}}`
insertOrAssignVariables({爱城华恋: {好感度: 10}, 神乐光: {好感度: 5, 认知度: 0}}, {type: 'chat'});
// 执行后变量: `{爱城华恋: {好感度: 10}, 神乐光: {好感度: 5, 认知度: 0}}`
insertVariables
插入新变量, 如果变量已经存在则什么也不做.
ts
function insertVariables(variables: Record<string, any>, option: VariableOption): Record<string, any>;
参数
variables
要插入的变量:
- 如果变量不存在, 则新增该变量
- 如果变量已经存在, 则什么也不做
option
要操作的变量类型
示例
ts
// 执行前变量: `{爱城华恋: {好感度: 5}}`
insertVariables({爱城华恋: {好感度: 10}, 神乐光: {好感度: 5, 认知度: 0}}, {type: 'chat'});
// 执行后变量: `{爱城华恋: {好感度: 5}, 神乐光: {好感度: 5, 认知度: 0}}`
deleteVariable
删除变量, 如果变量不存在则什么也不做.
ts
function deleteVariable(
variable_path: string,
option: VariableOption,
): { variables: Record<string, any>; delete_occurred: boolean };
参数
variable_path
要删除的变量路径:
- 如果变量不存在, 则什么也不做
- 如果变量已经存在, 则删除该变量
option
要操作的变量类型
返回值
- 布尔值:
Promise<boolean>
示例
ts
// 执行前变量: `{爱城华恋: {好感度: 5}}`
deleteVariable("爱城华恋.好感度");
// 执行后变量: `{爱城华恋: {}}`