Skip to content

替换或修改变量

提示

请务必先阅读如何正确使用酒馆助手

点击查看对应类型定义文件 (可发给 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("爱城华恋.好感度");
// 执行后变量: `{爱城华恋: {}}`

作者:KAKAA, 青空莉想做舞台少女的狗