Skip to content

酒馆正则

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

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'

返回值

示例

typescript
// 更新所有名字里带 "舞台少女" 的正则
await updateTavernRegexesWith((regexes) => {
  regexes.forEach((regex) => {
    if (regex.script_name.includes("舞台少女")) {
      regex.enabled = true;
    }
  });
  return regexes;
});

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