渲染楼层
提示
请务必先阅读如何正确使用酒馆助手
以下函数用于调整楼层的渲染, 仅影响显示而不影响实际的聊天数据, 重新加载消息或刷新网页等操作后就会回到原样.
点击查看对应类型定义文件 (可发给 AI 或 IDE 使用, 酒馆助手界面中提供了打包下载)
retrieveDisplayedMessage
获取消息楼层号对应的消息内容 jquery
相比于一个实用函数, 这更像是一个告诉你可以这样用 jquery 的示例 (如何正确使用酒馆助手).
ts
function retrieveDisplayedMessage(message_id: number): JQuery<HTMLDivElement> {
return $(`.mes[mesid = "${message_id}"]`, window.parent).find(`.mes_text`);
}
参数
message_id
- 类型:
number
- 描述: 要获取的消息楼层号, 必须要酒馆页面显示了该消息楼层才能获取到
返回值
- 对应的 jquery: 如果能获取到该消息楼层的 html, 则返回对应的 jquery; 否则返回空 jquery
示例
ts
const text = retrieveDisplayedMessage(0).text();
ts
// 这样的修改只会影响本次显示, 不会保存到消息文件中, 因此重新加载消息或刷新网页等操作后就会回到原样;
// 如果需要实际修改消息文件, 请使用 `setChatMessages`
retrieveDisplayedMessage(0).text("new text");
retrieveDisplayedMessage(0).append("<pre>new text</pre>");
retrieveDisplayedMessage(0).append(
formatAsDisplayedMessage("{{char}} speaks in {{lastMessageId}}")
);
formatAsDisplayedMessage
将字符串处理为酒馆用于显示的 html 格式
- 替换字符串中的酒馆宏
- 对字符串应用对应的酒馆正则
- 将字符串调整为 html 格式
ts
function formatAsDisplayedMessage(text: string, option: FormatAsDisplayedMessageOption = {}): string;
ts
type FormatAsDisplayedMessageOption = {
message_id?: "last" | "last_user" | "last_char" | number; // 消息所在的楼层, 要求该楼层已经存在, 即在 `[0, await getLastMessageId()]` 范围内; 默认为 'last'
}
参数
text
- 类型:
string
- 描述: 要处理的字符串
message_id?
- 类型:
'last' | 'last_user' | 'last_char' | number
- 描述: 消息所在的楼层, 要求该楼层已经存在, 即在
[0, await getLastMessageId()]
范围内; 默认为'last'
返回值
- 处理结果:
string
示例
ts
const text = formatAsDisplayedMessage(
"{{char}} speaks in {{lastMessageId}}"
);
text == "<p>少女歌剧 speaks in 5</p>";
builtin.addOneMessage
向网页添加一条楼层渲染, 例如显示区间消息就是用它实现的.
ts
addOneMessage(mes: Record<string, any>, options?: {
type?: string;
insertAfter?: number;
scroll?: boolean;
insertBefore?: number;
forceId?: number;
showSwipes?: boolean;
}): void;
该函数的具体内容和 builtin
内的更多功能请参考接口访问.
刷新当前聊天的渲染
SillyTavern.reloadCurrent
: 完全刷新当前聊天 (这和在酒馆里修改正则所触发的刷新相同, 高频使用可能导致聊天记录丢失; 因此酒馆助手额外提供了下面两个函数)builtin.reloadChatWithoutEvents
: 刷新当前聊天但不触发任何事件builtin.reloadAndRenderChatWithoutEvents
: 刷新当前聊天并触发CHARACTER_MESSAGE_RENDERED
和USER_MESSAGE_RENDERED
事件从而重新渲染前端界面
具体请参考接口访问.