修改世界书
setLorebookSettings
修改世界书全局设置。
typescript
function setLorebookSettings(
settings: Partial<LorebookSettings>
): void;
参数
settings
- 类型:
Partial<LorebookSettings>
- 描述: 要修改的世界书设置
注意
setLorebookSettings
因为酒馆问题很慢,建议先 getLorebookSetting
, 进行比较,再 setLorebookSettings
示例
typescript
setLorebookSettings({ context_percentage: 100, recursive: true });
typescript
const expected_settings = {
/*预期设置*/
};
const settings = getLorebookSettings();
if (_.isEqual(_.merge({}, settings, expected_settings), settings)) {
setLorebookSettings(expected_settings);
}
setLorebookEntries
修改世界书中的条目信息。
typescript
async function setLorebookEntries(
lorebook: string,
entries: Array<Pick<LorebookEntry, 'uid'> & Partial<LorebookEntry>>
): Promise<LorebookEntry[]>;
参数
lorebook
- 类型:
string
- 描述: 条目所在的世界书名称
entries
- 类型:
Array<Pick<LorebookEntry, 'uid'> & Partial<LorebookEntry>>
- 描述: 要修改的条目信息数组。其中必须有 "uid",而其他字段可选
返回值
- 更新后的世界书条目:
LorebookEntry[]
- 更新后的全部条目信息
注意
这只是修改信息,不能创建新的条目,因此要求条目必须已经在世界书中。
示例
typescript
const lorebook = "eramgt少女歌剧";
const entries = await getLorebookEntries(lorebook);
const updatedEntries = await setLorebookEntries(
lorebook,
entries.map((entry) => ({
uid: entry.uid,
prevent_recursion: true,
}))
);
typescript
const lorebook = "eramgt少女歌剧";
const entries = await getLorebookEntries(lorebook);
const updatedEntries = await setLorebookEntries(
lorebook,
entries.map((entry) => ({
uid: entry.uid,
prevent_recursion: !entry.prevent_recursion,
}))
);
replaceLorebookEntries
完全替换世界书的所有条目。
typescript
async function replaceLorebookEntries(
lorebook: string,
entries: Partial<LorebookEntry>[]
): Promise<void>;
参数
lorebook
- 类型:
string
- 描述: 世界书名称
entries
- 类型:
Partial<LorebookEntry>[]
- 描述: 要用于替换的世界书条目数组。如果
uid
没有设置或有重复则会新设置uid
;如果某些字段没设置,则会使用酒馆默认会设置的值。
示例
typescript
const lorebook = "eramgt少女歌剧";
const entries = await getLorebookEntries(lorebook);
await replaceLorebookEntries(
lorebook,
entries.map(entry => ({ ...entry, prevent_recursion: true }))
);
typescript
const lorebook = "eramgt少女歌剧";
const entries = await getLorebookEntries(lorebook);
_.remove(entries, entry => entry.comment.includes('神乐光'));
await replaceLorebookEntries(lorebook, entries);
updateLorebookEntriesWith
用自定义函数更新世界书条目。
typescript
async function updateLorebookEntriesWith(
lorebook: string,
updater: LorebookEntriesUpdater
): Promise<LorebookEntry[]>;
typescript
type LorebookEntriesUpdater =
| ((entries: LorebookEntry[]) => Partial<LorebookEntry>[])
| ((entries: LorebookEntry[]) => Promise<Partial<LorebookEntry>[]>);
参数
lorebook
- 类型:
string
- 描述: 世界书名称
updater
- 类型:
LorebookEntriesUpdater
- 描述: 用于更新世界书的函数。它应该接收世界书条目作为参数,并返回更新后的世界书条目。
返回值
- 更新后的世界书条目:
LorebookEntry[]
示例
typescript
// 删除所有名字中包含 `神乐光` 的条目
await updateLorebookEntriesWith(
"eramgt少女歌剧",
entries => entries.filter(entry => !entry.comment.includes('神乐光'))
);
setCurrentCharLorebooks
设置当前角色卡绑定的世界书。
typescript
async function setCurrentCharLorebooks(
lorebooks: Partial<CharLorebooks>
): Promise<void>;
参数
lorebooks
- 类型:
Partial<CharLorebooks>
- 描述:
primary: string | null;
: 主要世界书名称,设为null或空字符串表示移除additional: string[];
: 附加世界书名称数组,设为空数组表示移除所有附加世界书