Skip to content

修改消息

setChatMessages

修改聊天消息的数据。

typescript
async function setChatMessages(
  chat_messages: Array<{ message_id: number } & (Partial<ChatMessage> | Partial<ChatMessageSwiped>)>,
  option: SetChatMessagesOption = {}
): Promise<void>;
typescript
interface SetChatMessagesOption {
  refresh?: 'none' | 'affected' | 'all';
}

参数

chat_messages

  • 类型: Array<{ message_id: number } & (Partial<ChatMessage> | Partial<ChatMessageSwiped>)>
  • 描述: 要修改的消息,必须包含 message_id 字段

refresh?

  • 类型: 'none' | 'affected' | 'all'
  • 描述: 是否更新楼层在页面上的显示,只会更新已经被加载在网页上的楼层,并触发被更新楼层的 "仅格式显示" 正则; 默认为 'affected'
    • 'none': 不更新页面的显示
    • 'affected': 仅更新被影响楼层的显示,更新显示时会发送 tavern_events.USER_MESSAGE_RENDEREDtavern_events.CHARACTER_MESSAGE_RENDERED 事件
    • 'all': 重新载入整个聊天消息,将会触发 tavern_events.CHAT_CHANGED 事件

示例

typescript
await setChatMessages([{ message_id: 5, message: "设置楼层 5 当前消息页的文本" }]);
typescript
await setChatMessages([{ 
  message_id: 5, 
  swipe_id: 3,
  message: "设置楼层 5 第 3 页的文本" 
}]);
typescript
await setChatMessages([{ message_id: 5, data: { 神乐光好感度: 5 } }], { refresh: 'none' });
typescript
await setChatMessages([{ message_id: 0, swipe_id: 2 }]);
typescript
const last_message_id = getLastMessageId();
await setChatMessages(_.range(last_message_id + 1).map(message_id => ({ 
  message_id, 
  is_hidden: true 
})));

注意

如果设置了当前会被发送给 ai 的消息文本 (正被使用且没被隐藏的消息页文本), 则 "仅格式提示词" 正则将会使用它而不是原来的消息。

rotateChatMessages

修改聊天消息的顺序,将原本顺序是 [begin, middle) [middle, end) 的楼层调整为 [middle, end) [begin, middle)

typescript
async function rotateChatMessages(
  begin: number,
  middle: number,
  end: number,
  option: RotateChatMessagesOption = {}
): Promise<void>;
typescript
interface RotateChatMessagesOption {
  refresh?: 'none' | 'all';
}

参数

begin

  • 类型: number
  • 描述: 修改前开头楼层的楼层号

middle

  • 类型: number
  • 描述: 修改后将会被放到最开头的楼层号

end

  • 类型: number
  • 描述: 修改前结尾楼层的楼层号 + 1

refresh?

  • 类型: 'none' | 'all'
  • 描述: 是否更新楼层在页面上的显示,只会更新已经被加载在网页上的楼层,并触发被更新楼层的 "仅格式显示" 正则; 默认为 'all'
    • 'none': 不更新页面的显示
    • 'all': 重新载入整个聊天消息,将会触发 tavern_events.CHAT_CHANGED 事件

示例

typescript
// 将最后一楼放到第 5 楼之前
await rotateChatMessages(5, getLastMessageId(), getLastMessageId() + 1);
typescript
// 将最后 3 楼放到第 1 楼之前
await rotateChatMessages(1, getLastMessageId() - 2, getLastMessageId() + 1);
typescript
// 将前 3 楼放到最后
await rotateChatMessages(0, 3, getLastMessageId() + 1);

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