Skip to content

修改变量

replaceVariables

完全替换变量表。

之所以提供这么直接的函数, 是因为前端助手内置了 lodash 库: insertOrAssignVariables 等函数其实就是先 getVariables 获取变量表,用 lodash 库处理,再 replaceVariables 替换变量表。

typescript
async function replaceVariables(variables: Record<string, any>, option: VariableOption = {}): Promise<void>

参数

variables

要用于替换的变量表

type?

  • 'chat': 聊天变量表(默认值)
  • 'global': 全局变量表

示例

typescript
// 执行前的聊天变量: `{爱城华恋: {好感度: 5}}`
await replaceVariables({神乐光: {好感度: 5, 认知度: 0}});
// 执行后的聊天变量: `{神乐光: {好感度: 5, 认知度: 0}}`
typescript
// 执行前的聊天变量: `{神乐光: {好感度: 5}}`
let variables = await getVariables();
_.unset(variables, "神乐光.好感度");
await replaceVariables(variables);
// 执行后的聊天变量: `{神乐光: {}}`

updateVariablesWith

用函数更新变量表。

typescript
type VariablesUpdater =
  | ((variables: Record<string, any>) => Record<string, any>)
  | ((variables: Record<string, any>) => Promise<Record<string, any>>);

async function updateVariablesWith(updater: VariablesUpdater, option: VariableOption = {}): Promise<Record<string, any>>

参数

updater

用于更新变量表的函数,接收变量表作为参数,返回更新后的变量表。

type?

  • 'chat': 聊天变量表(默认值)
  • 'global': 全局变量表

返回值

  • 更新后的变量表: Promise<Record<string, any>>

示例

typescript
// 执行前的聊天变量: `{神乐光: {好感度: 5}}`
await updateVariablesWith(variables => {_.unset(variables, "神乐光.好感度"); return variables;});
// 执行后的聊天变量: `{神乐光: {}}`
typescript
// 更新 "爱城华恋.好感度" 为原来的 2 倍, 如果该变量不存在则设置为 0
await updateVariablesWith(variables => _.update(variables, "爱城华恋.好感度", value => value ? value * 2 : 0));

insertOrAssignVariables

插入或修改变量值,取决于变量是否存在。

typescript
async function insertOrAssignVariables(variables: Record<string, any>, option: VariableOption = {}): Promise<void> {
  await updateVariablesWith(old_variables => _.merge(old_variables, variables), option);
}

参数

variables

要更新的变量:

  • 如果变量不存在,则新增该变量
  • 如果变量已经存在,则修改该变量的值

type?

  • 'chat': 聊天变量表(默认值)
  • 'global': 全局变量表

示例

typescript
// 执行前变量: `{爱城华恋: {好感度: 5}}`
await insertOrAssignVariables({爱城华恋: {好感度: 10}, 神乐光: {好感度: 5, 认知度: 0}});
// 执行后变量: `{爱城华恋: {好感度: 10}, 神乐光: {好感度: 5, 认知度: 0}}`

insertVariables

插入新变量, 如果变量已经存在则什么也不做。

typescript
async function insertVariables(variables: Record<string, any>, option: VariableOption = {}): Promise<void> {
  await updateVariablesWith(old_variables => _.defaultsDeep(old_variables, variables), option);
}

参数

variables

要插入的变量:

  • 如果变量不存在,则新增该变量
  • 如果变量已经存在,则什么也不做

type?

  • 'chat': 聊天变量表(默认值)
  • 'global': 全局变量表

示例

typescript
// 执行前变量: `{爱城华恋: {好感度: 5}}`
await insertVariables({爱城华恋: {好感度: 10}, 神乐光: {好感度: 5, 认知度: 0}});
// 执行后变量: `{爱城华恋: {好感度: 5}, 神乐光: {好感度: 5, 认知度: 0}}`

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