修改变量
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}}`