酒馆正则
提示
请务必先阅读如何正确使用酒馆助手
点击查看对应类型定义文件 (可发给 AI 或 IDE 使用, 酒馆助手界面中提供了打包下载)
formatAsTavernRegexedString
对 text 应用酒馆正则
ts
function formatAsTavernRegexedString(
text: string,
source: 'user_input' | 'ai_output' | 'slash_command' | 'world_info' | 'reasoning',
destination: 'display' | 'prompt',
{ depth, character_name }?: FormatAsTavernRegexedStringOption,
): string;ts
type FormatAsTavernRegexedStringOption = {
depth?: number; // 文本所在的深度
character_name?: string; // 角色卡名称
}参数
text
- 类型:
string - 描述: 要应用酒馆正则的文本
source
- 类型:
'user_input' | 'ai_output' | 'slash_command' | 'world_info' | 'reasoning' - 描述: 文本来源, 例如来自用户输入或 AI 输出. 对应于酒馆正则的
作用范围选项
destination
- 类型:
'display' | 'prompt' - 描述: 文本将作为什么而使用, 例如用于显示或作为提示词. 对应于酒馆正则的
仅格式显示和仅格式提示词选项
option?
- 类型:
FormatAsTavernRegexedStringOption - 描述: 可选选项
depth?
- 类型:
number - 描述: 文本所在的深度; 不填则不考虑酒馆正则的
深度选项: 无论该深度是否在酒馆正则的最小深度和最大深度范围内都生效
character_name?
- 类型:
string - 描述: 角色卡名称; 不填则使用当前角色卡名称
返回值
- 应用酒馆正则后的文本:
string
示例
ts
// 对文本应用酒馆正则, 作为 AI 输出显示
const text = "Hello world!";
const result = formatAsTavernRegexedString(text, 'ai_output', 'display');ts
// 获取最后一楼文本, 将它视为将会作为显示的 AI 输出, 对它应用酒馆正则
const message = getChatMessages(-1)[0];
const result = formatAsTavernRegexedString(
message.message,
'ai_output',
'display',
{ depth: 0 }
);ts
// 对用户输入应用正则后用于提示词
const userInput = "用户的输入文本";
const processedText = formatAsTavernRegexedString(
userInput,
'user_input',
'prompt'
);isCharacterTavernRegexesEnabled
判断局部正则是否被启用
ts
function isCharacterTavernRegexesEnabled(): Promise<boolean>;返回值
- 局部正则是否被启用:
boolean
注意
如果你是在被写在局部正则中的全局脚本调用这个函数, 请保证"在编辑时运行"被启用, 这样这个脚本才会无视局部正则开启情况而运行
getTavernRegexes
获取酒馆正则
ts
function getTavernRegexes(
option: GetTavernRegexesOption = {}
): TavernRegex[];ts
type GetTavernRegexesOption = {
scope?: "all" | "global" | "character"; // 按所在区域筛选正则
enable_state?: "all" | "enabled" | "disabled"; // 按是否被开启筛选正则
}ts
type TavernRegex = {
id: string;
script_name: string;
enabled: boolean;
run_on_edit: boolean;
scope: "global" | "character";
find_regex: string;
replace_string: string;
source: {
user_input: boolean;
ai_output: boolean;
slash_command: boolean;
world_info: boolean;
};
destination: {
display: boolean;
prompt: boolean;
};
min_depth: number | null;
max_depth: number | null;
}参数
scope?
- 类型:
'all' | 'global' | 'character' - 描述: 按所在区域筛选酒馆正则; 默认为
'all'
enable_state?
- 类型:
'all' | 'enabled' | 'disabled' - 描述: 按是否被开启筛选酒馆正则; 默认为
'all'
返回值
一个数组, 数组的元素是酒馆正则 TavernRegex. 该数组依据正则作用于文本的顺序排序, 也就是酒馆显示正则的地方从上到下排列
id:
stringscript_name:
stringenabled:
booleanrun_on_edit:
booleanscope:
'global' | 'character'find_regex:
stringreplace_string:
stringsource:
{ user_input: boolean; ai_output: boolean; slash_command: boolean; world_info: boolean; }destination:
{ display: boolean; prompt: boolean; }min_depth:
number | nullmax_depth:
number | null
示例
ts
const regexes = getTavernRegexes();ts
const regexes = getTavernRegexes({
scope: "character",
enable_state: "enabled",
});replaceTavernRegexes
完全替换酒馆正则
ts
function replaceTavernRegexes(
regexes: TavernRegex[],
{ scope }: ReplaceTavernRegexesOption
): Promise<void>;ts
type ReplaceTavernRegexesOption = {
scope?: "all" | "global" | "character"; // 要替换的酒馆正则部分
}参数
regexes
- 类型:
TavernRegex[] - 描述: 要用于替换的酒馆正则
scope?
- 类型:
'all' | 'global' | 'character' - 描述: 要替换的酒馆正则部分; 默认为
'all'
注意
- 这是一个很慢的操作! 尽量对正则做完所有事后再一次性 replaceTavernRegexes
- 为了重新应用正则, 它会重新载入整个聊天消息, 将会触发
tavern_events.CHAT_CHANGED进而重新加载全局脚本和楼层消息 这意味着如果你在全局脚本中运行本函数, 则该函数之后的内容将不会被执行
示例
ts
// 开启所有名字里带 "舞台少女" 的正则
let regexes = getTavernRegexes();
regexes.forEach((regex) => {
if (regex.script_name.includes("舞台少女")) {
regex.enabled = true;
}
});
await replaceTavernRegexes(regexes, {});updateTavernRegexesWith
使用更新函数更新酒馆正则
ts
function updateTavernRegexesWith(
updater: TavernRegexUpdater,
option: ReplaceTavernRegexesOption = {}
): Promise<TavernRegex[]>;ts
type TavernRegexUpdater =
| ((regexes: TavernRegex[]) => TavernRegex[])
| ((regexes: TavernRegex[]) => Promise<TavernRegex[]>);ts
type ReplaceTavernRegexesOption = {
scope?: "all" | "global" | "character"; // 要替换的酒馆正则部分
}参数
updater
- 类型:
TavernRegexUpdater - 描述: 用于更新酒馆正则的函数. 它应该接收酒馆正则作为参数, 并返回更新后的酒馆正则
scope?
- 类型:
'all' | 'global' | 'character' - 描述: 要替换的酒馆正则部分; 默认为
'all'
返回值
- 更新后的酒馆正则:
TavernRegex[]
示例
ts
// 更新所有名字里带 "舞台少女" 的正则
await updateTavernRegexesWith((regexes) => {
regexes.forEach((regex) => {
if (regex.script_name.includes("舞台少女")) {
regex.enabled = true;
}
});
return regexes;
});