Skip to content

获取消息

提示

请务必先阅读如何正确使用酒馆助手

酒馆虽然提供了 /messages 命令, 但是它获取的是一整个字符串, 并且不能获取楼层当前没在使用的消息 (点击箭头切换的那个 swipe 消息, 在酒馆助手中我们称之为 "消息页"), 酒馆助手为此提供了一套函数获取更便于处理的消息.

点击查看对应类型定义文件 (可发给 AI 或 IDE 使用, 酒馆助手界面中提供了打包下载)

getChatMessages

获取聊天消息

ts
function getChatMessages(
  range: string | number,
  option: GetChatMessagesOption = {}
): ChatMessage[] | ChatMessageSwiped[];
ts
type GetChatMessagesOption = {
  role?: "all" | "system" | "assistant" | "user";
  hide_state?: "all" | "hidden" | "unhidden";
  include_swipes?: boolean;
}
ts
type ChatMessage = {
  message_id: number;
  name: string;
  role: "system" | "assistant" | "user";
  is_hidden: boolean;
  message: string;
  data: Record<string, any>;
  extra: Record<string, any>;
}
ts
type ChatMessageSwiped = {
  message_id: number;
  name: string;
  role: "system" | "assistant" | "user";
  is_hidden: boolean;
  swipe_id: number;
  swipes: string[];
  swipes_data: Record<string, any>[];
  swipes_info: Record<string, any>[];
}

参数

range

  • 类型: number | string
  • 描述: 要获取的消息楼层号 (14) 或楼层范围 ('0-100'), 范围中可以用宏 ('0-')

role?

  • 类型: 'system' | 'assistant' | 'user'
  • 描述: 按 role 筛选消息; 默认为 'all'

hide_state?

  • 类型: 'all' | 'hidden' | 'unhidden'
  • 描述: 按是否被隐藏筛选消息; 默认为 'all'

include_swipes?

  • 类型: boolean
  • 描述: 是否包含未被 AI 使用的消息页信息, 如没选择的开局、通过点击箭头额外生成的消息页. 如果为 false 则函数返回 ChatMessage 类型, 如果为 true 则函数返回 ChatMessageSwiped 类型; 默认为 false

返回值

如果 include_swipesfalse (默认情况):

  • 返回 ChatMessage[], 每条消息只包含被 AI 使用的消息页
  • 按 message_id 从低到高排序

如果 include_swipestrue:

  • 返回 ChatMessageSwiped[], 每条消息包含所有消息页
  • 按 message_id 从低到高排序

示例

ts
const messages = await getChatMessages(10);
const messages = await getChatMessages("10");
const messages = await getChatMessages("10", { include_swipes: false });
ts
const message = getChatMessages(-1)[0]; // 或 getChatMessages('{{lastMessageId}}')[0]
ts
const messages = await getChatMessages("0-{{lastMessageId}}");
ts
const messages = await getChatMessages("0-{{lastMessageId}}", { include_swipes: true });

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