酒馆正则
isCharacterRegexEnabled
判断局部正则是否被启用。
typescript
function isCharacterRegexEnabled(): Promise<boolean>;
返回值
- 局部正则是否被启用:
boolean
注意
如果你是在被写在局部正则中的全局脚本调用这个函数, 请保证"在编辑时运行"被启用, 这样这个脚本才会无视局部正则开启情况而运行。
getTavernRegexes
获取酒馆正则。
typescript
async function getTavernRegexes(
option: GetTavernRegexesOption = {}
): Promise<TavernRegex[]>;
typescript
interface GetTavernRegexesOption {
scope?: "all" | "global" | "character"; // 按所在区域筛选正则
enable_state?: "all" | "enabled" | "disabled"; // 按是否被开启筛选正则
}
typescript
interface 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:
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
示例
typescript
const regexes = await getTavernRegexes();
typescript
const regexes = await getTavernRegexes({
scope: "character",
enable_state: "enabled",
});
replaceTavernRegexes
完全替换酒馆正则。
typescript
async function replaceTavernRegexes(
regexes: TavernRegex[],
option: ReplaceTavernRegexesOption = {}
): Promise<void>;
typescript
interface ReplaceTavernRegexesOption {
scope?: "all" | "global" | "character"; // 要替换的酒馆正则部分
}
参数
regexes
- 类型:
TavernRegex[]
- 描述: 要用于替换的酒馆正则
scope?
- 类型:
'all' | 'global' | 'character'
- 描述: 要替换的酒馆正则部分;默认为
'all'
注意
- 这是一个很慢的操作! 尽量对正则做完所有事后再一次性 replaceTavernRegexes。
- 为了重新应用正则,它会重新载入整个聊天消息,将会触发
tavern_events.CHAT_CHANGED
进而重新加载全局脚本和楼层消息。 这意味着如果你在全局脚本中运行本函数,则该函数之后的内容将不会被执行。
示例
typescript
// 开启所有名字里带 "舞台少女" 的正则
let regexes = await getTavernRegexes();
regexes.forEach((regex) => {
if (regex.script_name.includes("舞台少女")) {
regex.enabled = true;
}
});
await replaceTavernRegexes(regexes);
updateTavernRegexesWith
使用更新函数更新酒馆正则。
typescript
async function updateTavernRegexesWith(
updater: TavernRegexUpdater,
option: ReplaceTavernRegexesOption = {}
): Promise<TavernRegex[]>;
typescript
type TavernRegexUpdater =
| ((regexes: TavernRegex[]) => TavernRegex[])
| ((regexes: TavernRegex[]) => Promise<TavernRegex[]>);
typescript
interface ReplaceTavernRegexesOption {
scope?: "all" | "global" | "character"; // 要替换的酒馆正则部分
}
参数
updater
- 类型:
TavernRegexUpdater
- 描述: 用于更新酒馆正则的函数。它应该接收酒馆正则作为参数,并返回更新后的酒馆正则。
scope?
- 类型:
'all' | 'global' | 'character'
- 描述: 要替换的酒馆正则部分;默认为
'all'
返回值
- 更新后的酒馆正则:
TavernRegex[]
示例
typescript
// 更新所有名字里带 "舞台少女" 的正则
await updateTavernRegexesWith((regexes) => {
regexes.forEach((regex) => {
if (regex.script_name.includes("舞台少女")) {
regex.enabled = true;
}
});
return regexes;
});