@napuketto/adapter 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,137 +3,6 @@ import "../gray-tip-8zPh4d9W.mjs";
3
3
  import { BuddyCacheEventChannel, BuddyEventChannel, CanonicalElement, ChatType, FriendApi, GroupApi, GroupCache, GroupEventChannel, GroupNotifyApi, MsgApi, MsgEventChannel, Peer, ProfileApi, ProfileLikeApi, RawMessage, RichMediaApi, TicketApi, WebApi } from "@napuketto/kernel";
4
4
  import { z } from "zod";
5
5
  import { EventBroadcaster, TransportAdapter } from "@napuketto/network";
6
- //#region src/onebot11/helper/message-unique.d.ts
7
- declare class MessageUnique {
8
- /** NT msgId → OB11 message_id。 */
9
- private readonly msgIdToInt;
10
- /** OB11 message_id → NT msgId。 */
11
- private readonly intToMsgId;
12
- /** NT msgId → Peer(delete_msg / get_msg 等只有 message_id 时反查用)。 */
13
- private readonly msgIdToPeer;
14
- /** 递增计数器。 */
15
- private cursor;
16
- /** 已释放的槽位(可复用)。 */
17
- private readonly freed;
18
- /**
19
- * 为新 NT 消息分配 OB11 message_id(幂等:同一 msgId 返回同一 id)。
20
- * peer 可选:传入则记录,供 message_id → peer 反查。
21
- */
22
- alloc(msgId: string, peer?: Peer): number;
23
- /** OB11 message_id → NT msgId。 */
24
- getMsgId(messageId: number): string | undefined;
25
- /** NT msgId → OB11 message_id(未分配返回 undefined)。 */
26
- getMessageId(msgId: string): number | undefined;
27
- /** NT msgId → Peer(alloc 时未记录返回 undefined)。 */
28
- getPeer(msgId: string): Peer | undefined;
29
- /** 释放 NT msgId 占用的槽位(消息过期/删除时调用,可选)。 */
30
- release(msgId: string): void;
31
- /** 取下一个可用 id:优先释放池,否则递增(溢出后线性扫描空洞)。 */
32
- private nextFreeId;
33
- }
34
- //#endregion
35
- //#region src/onebot11/api/one-bot-api.d.ts
36
- /** 系统类本地回调(get_version_info / clean_cache / download_file / 进程控制用)。 */
37
- interface OneBotSystemOptions {
38
- /** 运行版本(get_version_info 用,缺省 unknown)。 */
39
- appVersion: string;
40
- /** 缓存清理回调(clean_cache 用,未配置抛错)。 */
41
- cleanCache?: () => Promise<void>;
42
- /** 缓存目录(download_file 保存路径 / get_image 主动下载落盘)。 */
43
- cacheDir?: string;
44
- /** QQ NT global 目录(get_image/get_record 解析 NT 相对路径用,2026-09-08 T5)。 */
45
- mediaBaseDir?: string;
46
- /** 进程退出回调(bot_exit 用)。 */
47
- exit?: () => Promise<void>;
48
- /** 进程重启回调(set_restart 用,缺省退化为退出)。 */
49
- restart?: () => Promise<void>;
50
- }
51
- /** OneBotApi 构造参数。 */
52
- interface OneBotApiOptions {
53
- msgApi: MsgApi;
54
- groupApi: GroupApi;
55
- groupNotifyApi: GroupNotifyApi;
56
- friendApi: FriendApi;
57
- ticketApi: TicketApi;
58
- richMediaApi: RichMediaApi;
59
- profileApi: ProfileApi;
60
- profileLikeApi: ProfileLikeApi;
61
- webApi: WebApi;
62
- /** 登录身份(get_login_info 用)。 */
63
- self: {
64
- uin: string;
65
- nickname: string;
66
- };
67
- /** 系统类本地信息。 */
68
- system: OneBotSystemOptions;
69
- /** 群/成员缓存(ADR-008,读缓存动作用;未装配时动作直查 api)。 */
70
- groupCache?: GroupCache;
71
- }
72
- /**
73
- * OneBot 11 动作统一依赖聚合(P2-16)。
74
- * 各动作经 `Pick<OneBotApi, ...>` 取所需成员;注册处只构造一次本对象。
75
- */
76
- declare class OneBotApi {
77
- /** kernel 消息 API(send_msg 等消息类动作用)。 */
78
- readonly msgApi: MsgApi;
79
- /** kernel 群 API。 */
80
- readonly groupApi: GroupApi;
81
- /** kernel 群通知 API(群请求/禁言列表用)。 */
82
- readonly groupNotifyApi: GroupNotifyApi;
83
- /** kernel 好友 API。 */
84
- readonly friendApi: FriendApi;
85
- /** kernel 票据 API(get_clientkey/get_cookies 用)。 */
86
- readonly ticketApi: TicketApi;
87
- /** kernel 富媒体 API(群文件/翻译用)。 */
88
- readonly richMediaApi: RichMediaApi;
89
- /** kernel 资料 API(签名/昵称/头像用)。 */
90
- readonly profileApi: ProfileApi;
91
- /** kernel 点赞 API(send_like 用)。 */
92
- readonly profileLikeApi: ProfileLikeApi;
93
- /** kernel 群空间 web API(精华/荣誉用)。 */
94
- readonly webApi: WebApi;
95
- /** 群/成员缓存(ADR-008;翻译层只读消费,缺失惰性回填)。 */
96
- readonly groupCache: GroupCache | undefined;
97
- /** OB11 message_id ↔ NT msgId 双向映射(收链路与动作共用同一映射空间)。 */
98
- readonly messageUnique: MessageUnique;
99
- /** 登录身份(get_login_info 用)。 */
100
- readonly self: {
101
- uin: string;
102
- nickname: string;
103
- };
104
- /** 机器人自身 uin(get_cookies / csrf 用)。 */
105
- readonly selfUin: string;
106
- /** 运行版本(get_version_info 用)。 */
107
- readonly appVersion: string;
108
- /** 缓存清理回调(clean_cache 用)。 */
109
- readonly cleanCache: (() => Promise<void>) | undefined;
110
- /** 缓存目录(download_file 用)。 */
111
- readonly cacheDir: string | undefined;
112
- /** QQ NT global 目录(媒体 NT 相对路径解析用)。 */
113
- readonly mediaBaseDir: string | undefined;
114
- /** 进程退出回调(bot_exit 用)。 */
115
- readonly exit: (() => Promise<void>) | undefined;
116
- /** 进程重启回调(set_restart 用)。 */
117
- readonly restart: (() => Promise<void>) | undefined;
118
- constructor(opts: OneBotApiOptions);
119
- /** uin→uid 转换(委托 groupApi;私聊目标/成员 user_id 用)。 */
120
- uinToUid(uins: string[]): Promise<Map<string, string>>;
121
- /** uid→uin 转换(委托 groupApi;notice/grayTip 用)。 */
122
- uidToUin(uids: string[]): Promise<Map<string, string>>;
123
- }
124
- //#endregion
125
- //#region src/onebot11/action/error-map.d.ts
126
- /** OB11 错误码映射表(send_msg 等所有 OB11 动作共用)。 */
127
- declare const ob11ErrorCodeMap: ErrorCodeMap;
128
- //#endregion
129
- //#region src/onebot11/action/group/get-group-at-all-remain.d.ts
130
- /** @全体剩余次数返回结构。 */
131
- interface AtAllRemainInfo {
132
- can_at_all: boolean;
133
- remain_at_all_count_for_uin: number;
134
- remain_at_all_count_for_group: number;
135
- }
136
- //#endregion
137
6
  //#region src/onebot11/types/index.d.ts
138
7
  /**
139
8
  * OneBot 11 类型定义(自研描述,参考公开协议规范)
@@ -334,6 +203,168 @@ interface VersionInfo {
334
203
  walle_version?: string;
335
204
  }
336
205
  //#endregion
206
+ //#region src/onebot11/helper/data.d.ts
207
+ /** canonical 元素数组 → OB11 segment 数组(无法表达的元素静默跳过)。 */
208
+ declare function canonicalToSegments(elements: CanonicalElement[]): OB11MessageSegment[];
209
+ /** OB11 segment 数组 → canonical 元素数组。 */
210
+ declare function segmentsToCanonical(segments: OB11MessageSegment[]): CanonicalElement[];
211
+ /**
212
+ * 接收方向翻译上下文(ID 空间转换,P2-19,2026-08-07)。
213
+ * 翻译核心保持纯函数(ADR-008),调用方在协议边界准备上下文注入:
214
+ * canonical 的 at.target 是 NT uid、reply.messageId 是 NT 雪花 msgId,
215
+ * OB11 需要 uin / OB11 message_id。
216
+ */
217
+ /** OB11 sender.role 值域(群聊;私聊 sender 无 role)。 */
218
+ type GroupSenderRole = "owner" | "admin" | "member";
219
+ /** CQ 码字符串 → OB11 segment 数组(未知 CQ 类型保留为 text 段原文)。 */
220
+ declare function cqMessageToSegments(text: string): OB11MessageSegment[];
221
+ /** canonical 元素数组 → CQ 码字符串。 */
222
+ declare function canonicalToCqMessage(elements: CanonicalElement[]): string;
223
+ /** CQ 码字符串 → canonical 元素数组。 */
224
+ declare function cqMessageToCanonical(text: string): CanonicalElement[];
225
+ //#endregion
226
+ //#region src/onebot11/helper/message-unique.d.ts
227
+ declare class MessageUnique {
228
+ /** NT msgId → OB11 message_id。 */
229
+ private readonly msgIdToInt;
230
+ /** OB11 message_id → NT msgId。 */
231
+ private readonly intToMsgId;
232
+ /** NT msgId → Peer(delete_msg / get_msg 等只有 message_id 时反查用)。 */
233
+ private readonly msgIdToPeer;
234
+ /** 递增计数器。 */
235
+ private cursor;
236
+ /** 已释放的槽位(可复用)。 */
237
+ private readonly freed;
238
+ /**
239
+ * 为新 NT 消息分配 OB11 message_id(幂等:同一 msgId 返回同一 id)。
240
+ * peer 可选:传入则记录,供 message_id → peer 反查。
241
+ */
242
+ alloc(msgId: string, peer?: Peer): number;
243
+ /** OB11 message_id → NT msgId。 */
244
+ getMsgId(messageId: number): string | undefined;
245
+ /** NT msgId → OB11 message_id(未分配返回 undefined)。 */
246
+ getMessageId(msgId: string): number | undefined;
247
+ /** NT msgId → Peer(alloc 时未记录返回 undefined)。 */
248
+ getPeer(msgId: string): Peer | undefined;
249
+ /** 释放 NT msgId 占用的槽位(消息过期/删除时调用,可选)。 */
250
+ release(msgId: string): void;
251
+ /** 取下一个可用 id:优先释放池,否则递增(溢出后线性扫描空洞)。 */
252
+ private nextFreeId;
253
+ }
254
+ //#endregion
255
+ //#region src/onebot11/api/one-bot-api.d.ts
256
+ /** 系统类本地回调(get_version_info / clean_cache / download_file / 进程控制用)。 */
257
+ interface OneBotSystemOptions {
258
+ /** 运行版本(get_version_info 用,缺省 unknown)。 */
259
+ appVersion: string;
260
+ /** 缓存清理回调(clean_cache 用,未配置抛错)。 */
261
+ cleanCache?: () => Promise<void>;
262
+ /** 缓存目录(download_file 保存路径 / get_image 主动下载落盘)。 */
263
+ cacheDir?: string;
264
+ /** QQ NT global 目录(get_image/get_record 解析 NT 相对路径用,2026-09-08 T5)。 */
265
+ mediaBaseDir?: string;
266
+ /** 进程退出回调(bot_exit 用)。 */
267
+ exit?: () => Promise<void>;
268
+ /** 进程重启回调(set_restart 用,缺省退化为退出)。 */
269
+ restart?: () => Promise<void>;
270
+ }
271
+ /** OneBotApi 构造参数。 */
272
+ interface OneBotApiOptions {
273
+ msgApi: MsgApi;
274
+ groupApi: GroupApi;
275
+ groupNotifyApi: GroupNotifyApi;
276
+ friendApi: FriendApi;
277
+ ticketApi: TicketApi;
278
+ richMediaApi: RichMediaApi;
279
+ profileApi: ProfileApi;
280
+ profileLikeApi: ProfileLikeApi;
281
+ webApi: WebApi;
282
+ /** 登录身份(get_login_info 用)。 */
283
+ self: {
284
+ uin: string;
285
+ nickname: string;
286
+ };
287
+ /** 系统类本地信息。 */
288
+ system: OneBotSystemOptions;
289
+ /** 群/成员缓存(ADR-008,读缓存动作用;未装配时动作直查 api)。 */
290
+ groupCache?: GroupCache;
291
+ }
292
+ /**
293
+ * OneBot 11 动作统一依赖聚合(P2-16)。
294
+ * 各动作经 `Pick<OneBotApi, ...>` 取所需成员;注册处只构造一次本对象。
295
+ */
296
+ declare class OneBotApi {
297
+ /** kernel 消息 API(send_msg 等消息类动作用)。 */
298
+ readonly msgApi: MsgApi;
299
+ /** kernel 群 API。 */
300
+ readonly groupApi: GroupApi;
301
+ /** kernel 群通知 API(群请求/禁言列表用)。 */
302
+ readonly groupNotifyApi: GroupNotifyApi;
303
+ /** kernel 好友 API。 */
304
+ readonly friendApi: FriendApi;
305
+ /** kernel 票据 API(get_clientkey/get_cookies 用)。 */
306
+ readonly ticketApi: TicketApi;
307
+ /** kernel 富媒体 API(群文件/翻译用)。 */
308
+ readonly richMediaApi: RichMediaApi;
309
+ /** kernel 资料 API(签名/昵称/头像用)。 */
310
+ readonly profileApi: ProfileApi;
311
+ /** kernel 点赞 API(send_like 用)。 */
312
+ readonly profileLikeApi: ProfileLikeApi;
313
+ /** kernel 群空间 web API(精华/荣誉用)。 */
314
+ readonly webApi: WebApi;
315
+ /** 群/成员缓存(ADR-008;翻译层只读消费,缺失惰性回填)。 */
316
+ readonly groupCache: GroupCache | undefined;
317
+ /** OB11 message_id ↔ NT msgId 双向映射(收链路与动作共用同一映射空间)。 */
318
+ readonly messageUnique: MessageUnique;
319
+ /** 登录身份(get_login_info 用)。 */
320
+ readonly self: {
321
+ uin: string;
322
+ nickname: string;
323
+ };
324
+ /** 机器人自身 uin(get_cookies / csrf 用)。 */
325
+ readonly selfUin: string;
326
+ /** 运行版本(get_version_info 用)。 */
327
+ readonly appVersion: string;
328
+ /** 缓存清理回调(clean_cache 用)。 */
329
+ readonly cleanCache: (() => Promise<void>) | undefined;
330
+ /** 缓存目录(download_file 用)。 */
331
+ readonly cacheDir: string | undefined;
332
+ /** QQ NT global 目录(媒体 NT 相对路径解析用)。 */
333
+ readonly mediaBaseDir: string | undefined;
334
+ /** 进程退出回调(bot_exit 用)。 */
335
+ readonly exit: (() => Promise<void>) | undefined;
336
+ /** 进程重启回调(set_restart 用)。 */
337
+ readonly restart: (() => Promise<void>) | undefined;
338
+ constructor(opts: OneBotApiOptions);
339
+ /** uin→uid 转换(委托 groupApi;私聊目标/成员 user_id 用)。 */
340
+ uinToUid(uins: string[]): Promise<Map<string, string>>;
341
+ /** uid→uin 转换(委托 groupApi;notice/grayTip 用)。 */
342
+ uidToUin(uids: string[]): Promise<Map<string, string>>;
343
+ /**
344
+ * 群成员角色(GroupCache 缓存优先,缺失惰性回填;sender.role 判定用)。
345
+ * 未装配缓存 / 成员不在群 / 查询失败 → undefined(调用方回退缺省 "member",
346
+ * 不阻塞消息上报)。
347
+ */
348
+ groupMemberRole(groupCode: string, uid: string): Promise<GroupSenderRole | undefined>;
349
+ /**
350
+ * 群成员角色表(历史消息批量用:一次整表读取,uid → role)。
351
+ * 失败语义同 groupMemberRole。
352
+ */
353
+ groupMemberRoles(groupCode: string): Promise<Map<string, GroupSenderRole> | undefined>;
354
+ }
355
+ //#endregion
356
+ //#region src/onebot11/action/error-map.d.ts
357
+ /** OB11 错误码映射表(send_msg 等所有 OB11 动作共用)。 */
358
+ declare const ob11ErrorCodeMap: ErrorCodeMap;
359
+ //#endregion
360
+ //#region src/onebot11/action/group/get-group-at-all-remain.d.ts
361
+ /** @全体剩余次数返回结构。 */
362
+ interface AtAllRemainInfo {
363
+ can_at_all: boolean;
364
+ remain_at_all_count_for_uin: number;
365
+ remain_at_all_count_for_group: number;
366
+ }
367
+ //#endregion
337
368
  //#region src/onebot11/event/base.d.ts
338
369
  /**
339
370
  * OneBot 11 事件基类(OB11 公开协议规范,自研描述)
@@ -694,18 +725,6 @@ declare const ob11ConfigSchema: z.ZodObject<{
694
725
  /** OB11 配置类型(由 schema 推导)。 */
695
726
  type OB11Config = z.infer<typeof ob11ConfigSchema>;
696
727
  //#endregion
697
- //#region src/onebot11/helper/data.d.ts
698
- /** canonical 元素数组 → OB11 segment 数组(无法表达的元素静默跳过)。 */
699
- declare function canonicalToSegments(elements: CanonicalElement[]): OB11MessageSegment[];
700
- /** OB11 segment 数组 → canonical 元素数组。 */
701
- declare function segmentsToCanonical(segments: OB11MessageSegment[]): CanonicalElement[];
702
- /** CQ 码字符串 → OB11 segment 数组(未知 CQ 类型保留为 text 段原文)。 */
703
- declare function cqMessageToSegments(text: string): OB11MessageSegment[];
704
- /** canonical 元素数组 → CQ 码字符串。 */
705
- declare function canonicalToCqMessage(elements: CanonicalElement[]): string;
706
- /** CQ 码字符串 → canonical 元素数组。 */
707
- declare function cqMessageToCanonical(text: string): CanonicalElement[];
708
- //#endregion
709
728
  //#region src/onebot11/adapter.d.ts
710
729
  /** 最小 logger 面(校准日志用:未知事件形状打 raw JSON;缺省静默)。 */
711
730
  interface AdapterLoggerLike {
@@ -782,6 +801,7 @@ declare class NapukettoOneBot11Adapter extends BaseProtocolAdapter<OB11Config> {
782
801
  /**
783
802
  * 广播消息事件(P2-19:接收方向 ID 转换)。
784
803
  * 收集 at uid → 一次批量 uidToUin → 构造上下文 → 翻译广播。
804
+ * 群消息另查发送者角色(GroupCache 缓存优先,失败回退缺省 member)。
785
805
  * 翻译失败退化为原样(不阻塞上报)。
786
806
  */
787
807
  private broadcastMessageEvent;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/onebot11/helper/message-unique.ts","../../src/onebot11/api/one-bot-api.ts","../../src/onebot11/action/error-map.ts","../../src/onebot11/action/group/get-group-at-all-remain.ts","../../src/onebot11/types/index.ts","../../src/onebot11/event/base.ts","../../src/onebot11/event/message.ts","../../src/onebot11/event/meta.ts","../../src/onebot11/event/notice.ts","../../src/onebot11/event/request.ts","../../src/onebot11/event/index.ts","../../src/onebot11/action/index.ts","../../src/onebot11/helper/codec/cqcode.ts","../../src/onebot11/helper/codec/segment.ts","../../src/onebot11/helper/config.ts","../../src/onebot11/helper/data.ts","../../src/onebot11/adapter.ts","../../src/onebot11/transport.ts"],"mappings":";;;;;;cAkBa;;mBAEQ;;mBAEA;;mBAEA;;UAET;;mBAES;;;;;EAMjB,MAAM,eAAe,OAAO;;EAmB5B,SAAS;;EAKT,aAAa;;EAKb,QAAQ,gBAAgB;;EAKxB,QAAQ;;UAYA;;;;;UCvDK;;EAEb;;EAEA,mBAAmB;;EAEnB;;EAEA;;EAEA,aAAa;;EAEb,gBAAgB;;;UAIH;EACb,QAAQ;EACR,UAAU;EACV,gBAAgB;EAChB,WAAW;EACX,WAAW;EACX,cAAc;EACd,YAAY;EACZ,gBAAgB;EAChB,QAAQ;;EAER;IAAQ;IAAa;;;EAErB,QAAQ;;EAER,aAAa;;;;;;cAOJ;;WAEA,QAAQ;;WAER,UAAU;;WAEV,gBAAgB;;WAEhB,WAAW;;WAEX,WAAW;;WAEX,cAAc;;WAEd,YAAY;;WAEZ,gBAAgB;;WAEhB,QAAQ;;WAER,YAAY;;WAEZ,eAAe;;WAEf;IAAQ;IAAa;;;WAErB;;WAEA;;WAEA,mBAAmB;;WAEnB;;WAEA;;WAEA,aAAa;;WAEb,gBAAgB;EAEzB,YAAY,MAAM;;EAuBlB,SAAS,iBAAiB,QAAQ;;EAKlC,SAAS,iBAAiB,QAAQ;;;;;cCzHzB,kBAAkB;;;;UCMd;EACb;EACA;EACA;;;;;;;;;UCba,WAAW;EACxB;EACA;EACA,MAAM;EACN;EACA;;;KAIQ;EACJ;EAAc;IAAQ;;;EACtB;EAAY;IAAQ;IAAY;;;EAChC;EAAc;IAAQ;;;EACtB;EAAe;IAAQ;IAAc;;;EACrC;EAAgB;IAAQ;IAAc;;;EACtC;EAAe;IAAQ;IAAc;;;EACrC;EAAc;IAAQ;;;EACtB;EAAe;IAAQ;;;EACvB;EAAiB;IAAQ;;;EACzB;EAAc;IAAQ;;;EACtB;EAAa;IAAQ;;;EACrB;EAAgB;IAAQ;;;;KAGpB,uBAAuB;;UAGlB;EACb;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;EACA;;;UAIa;EACb;EACA;;;UAIa;EACb;EACA;EACA;EACA;IACI;IACA;IACA;IACA;;EAEJ;EACA,SAAS;EACT;EACA;EACA;;;KAIQ;;UAGK;EACb;EACA;EACA;EACA;EACA,MAAM;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;;;UAIa;EACb;EACA;EACA,MAAM;EACN;;EAEA;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;;;UAIa;EACb;EACA,oBAAoB;EACpB,gBAAgB;EAChB,gBAAgB;EAChB,aAAa;EACb,oBAAoB;EACpB,cAAc;;;UAID;EACb;EACA;EACA;;EAEA;EACA;EACA;EACA,eAAe;EACf,gBAAgB;EAChB;;;;;;;;;;;;KCtJQ;;UAGK;;EAEb;;EAEA;;EAEA,WAAW;;;;;UCPE;EACb;EACA;EACA;;;UAIa,oBAAoB;EACjC;EACA;;;UAIa,8BAA8B;EAC3C;EACA;;EAEA;EACA;EACA;EACA;EACA,SAAS;EACT;EACA;EACA,QAAQ;EACR,YAAY;;;UAIC,gCAAgC;EAC7C;EACA;;EAEA;EACA;EACA;EACA,SAAS;EACT;EACA;EACA,QAAQ;;EAER;;;KAIQ,mBAAmB,wBAAwB;;;;UC9CtC;EACb;EACA;GACC;;;UAIY,+BAA+B;EAC5C;EACA;EACA;;;UAIa,+BAA+B;EAC5C;EACA;;EAEA;EACA,QAAQ;;;KAIA,gBAAgB,yBAAyB;;;;UCvBpC;EACb;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;;;UAIa;EACb;EACA;EACA;;;UAIa,mCAAmC;EAChD;EACA;EACA;EACA;EACA,MAAM;;;UAIO,kCAAkC;EAC/C;EACA;EACA;EACA;EACA;;;UAIa,qCAAqC;EAClD;EACA;EACA;EACA;EACA;EACA;;;UAIa,qCAAqC;EAClD;EACA;EACA;EACA;EACA;EACA;;;UAIa,gCAAgC;EAC7C;EACA;EACA;EACA;EACA;EACA;;EAEA;;;UAIa,iCAAiC;EAC9C;EACA;EACA;;;UAIa,mCAAmC;EAChD;EACA;EACA;EACA;EACA;EACA;;;UAIa,oCAAoC;EACjD;EACA;EACA;EACA;;;UAIa,iCAAiC;EAC9C;EACA;EACA;EACA;EACA;EACA;;;UAIa,oCAAoC;EACjD;EACA;EACA;EACA;EACA;EACA;EACA;;;UAIa,8BAA8B;EAC3C;EACA;EACA;EACA;EACA;EACA;;EAEA;;;UAIa,mCAAmC;EAChD;EACA;EACA;EACA,MAAM;;;UAIO,iCAAiC;EAC9C;EACA;EACA;EACA;;;UAIa,oCAAoC;EACjD;EACA;EACA;EACA;EACA;EACA,OAAO;;;UAIM,kCAAkC;EAC/C;EACA;EACA;EACA;EACA;;;KAIQ,kBACN,6BACA,4BACA,+BACA,+BACA,0BACA,2BACA,6BACA,8BACA,2BACA,8BACA,wBACA,6BACA,2BACA,8BACA;;;;UCpLW,+BAA+B;EAC5C;EACA;EACA;;EAEA;;EAEA;;;UAIa,8BAA8B;EAC3C;EACA;;EAEA;EACA;EACA;EACA;EACA;;;KAIQ,mBAAmB,yBAAyB;;;;KCiB5C,YAAY,mBAAoB,kBAAmB,mBAAoB;;;;UCyDlE;;EAEb,KAAK;;;iBAIO,yBAAyB,MAAM,iBAAiB;;;;;;;;;;;;;;UCjF/C;EACb;EACA,QAAQ;;;iBAII,aAAa;;iBAKb,cAAc;;iBAKd,eAAe;;iBASf,aACZ,cACA,QAAQ;;;;;;;;iBAqBI,eAAe,eAAe,eAAe;;iBAuB7C,iBAAiB,OAAO,eAAe;;;;iBC8GvC,oBAAoB,UAAU;;;;cCxJjC,kBAAgB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuB3B,EAAA,KAAA;;KAGU,aAAa,EAAE,aAAa;;;;iBC/DxB,oBAAoB,UAAU,qBAAqB;;iBAYnD,oBAAoB,UAAU,uBAAuB;;iBAoIrD,oBAAoB,eAAe;;iBAkBnC,qBAAqB,UAAU;;iBAK/B,qBAAqB,eAAe;;;;UCjHnC;EACb,KAAK,cAAc;EACnB,KAAK,cAAc;;EAEnB,MAAM,cAAc;;;UAIP,+BAA+B;;EAE5C,QAAQ,eAAe;;EAEvB,aAAa;;EAEb,YAAY;;EAEZ,eAAe;;EAEf,gBAAgB;;EAEhB,mBAAmB;;EAEnB,SAAS;;;cAIA,iCAAiC,oBAAoB;WACrD;mBAEQ;mBACA;mBACA;mBACA;mBACA;mBACA;mBACA;;WAER,UAAU;UACX;UACA;UACA;UACA;UACA;;UAEA;;UAEA;EAER,YAAY,MAAM;;;;;UAwBJ;;UAYA;;UAyCN;;UAiBM;;UAaN;;;;;;EAmJF,iBAAiB;;EAUvB;;;;;UASQ;;;;;;UA2CM;;UA2BA;;UAiBA;;UA4BA;;UAiBN;;;;;EAWF,cAAc,cAAc,UAAU,wBAAwB;;;;;UC/dvD;;EAEb,SAAS;;EAET,YAAY;;EAEZ,aAAa;;;UAIA;;EAEb,QAAQ;;EAER,aAAa;;EAEb,gBAAgB,cAAc,UAAU;;EAExC;;;iBAiBY,uBAAuB,MAAM,gCAAgC"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/onebot11/types/index.ts","../../src/onebot11/helper/data.ts","../../src/onebot11/helper/message-unique.ts","../../src/onebot11/api/one-bot-api.ts","../../src/onebot11/action/error-map.ts","../../src/onebot11/action/group/get-group-at-all-remain.ts","../../src/onebot11/event/base.ts","../../src/onebot11/event/message.ts","../../src/onebot11/event/meta.ts","../../src/onebot11/event/notice.ts","../../src/onebot11/event/request.ts","../../src/onebot11/event/index.ts","../../src/onebot11/action/index.ts","../../src/onebot11/helper/codec/cqcode.ts","../../src/onebot11/helper/codec/segment.ts","../../src/onebot11/helper/config.ts","../../src/onebot11/adapter.ts","../../src/onebot11/transport.ts"],"mappings":";;;;;;;;;;;UAMiB,WAAW;EACxB;EACA;EACA,MAAM;EACN;EACA;;;KAIQ;EACJ;EAAc;IAAQ;;;EACtB;EAAY;IAAQ;IAAY;;;EAChC;EAAc;IAAQ;;;EACtB;EAAe;IAAQ;IAAc;;;EACrC;EAAgB;IAAQ;IAAc;;;EACtC;EAAe;IAAQ;IAAc;;;EACrC;EAAc;IAAQ;;;EACtB;EAAe;IAAQ;;;EACvB;EAAiB;IAAQ;;;EACzB;EAAc;IAAQ;;;EACtB;EAAa;IAAQ;;;EACrB;EAAgB;IAAQ;;;;KAGpB,uBAAuB;;UAGlB;EACb;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;EACA;;;UAIa;EACb;EACA;;;UAIa;EACb;EACA;EACA;EACA;IACI;IACA;IACA;IACA;;EAEJ;EACA,SAAS;EACT;EACA;EACA;;;KAIQ;;UAGK;EACb;EACA;EACA;EACA;EACA,MAAM;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;;;UAIa;EACb;EACA;EACA,MAAM;EACN;;EAEA;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;;;UAIa;EACb;EACA,oBAAoB;EACpB,gBAAgB;EAChB,gBAAgB;EAChB,aAAa;EACb,oBAAoB;EACpB,cAAc;;;UAID;EACb;EACA;EACA;;EAEA;EACA;EACA;EACA,eAAe;EACf,gBAAgB;EAChB;;;;;iBCvIY,oBAAoB,UAAU,qBAAqB;;iBAYnD,oBAAoB,UAAU,uBAAuB;;;;;;;;KAkBzD;;iBAuHI,oBAAoB,eAAe;;iBAkBnC,qBAAqB,UAAU;;iBAK/B,qBAAqB,eAAe;;;cClLvC;;mBAEQ;;mBAEA;;mBAEA;;UAET;;mBAES;;;;;EAMjB,MAAM,eAAe,OAAO;;EAmB5B,SAAS;;EAKT,aAAa;;EAKb,QAAQ,gBAAgB;;EAKxB,QAAQ;;UAYA;;;;;UCtDK;;EAEb;;EAEA,mBAAmB;;EAEnB;;EAEA;;EAEA,aAAa;;EAEb,gBAAgB;;;UAIH;EACb,QAAQ;EACR,UAAU;EACV,gBAAgB;EAChB,WAAW;EACX,WAAW;EACX,cAAc;EACd,YAAY;EACZ,gBAAgB;EAChB,QAAQ;;EAER;IAAQ;IAAa;;;EAErB,QAAQ;;EAER,aAAa;;;;;;cAOJ;;WAEA,QAAQ;;WAER,UAAU;;WAEV,gBAAgB;;WAEhB,WAAW;;WAEX,WAAW;;WAEX,cAAc;;WAEd,YAAY;;WAEZ,gBAAgB;;WAEhB,QAAQ;;WAER,YAAY;;WAEZ,eAAe;;WAEf;IAAQ;IAAa;;;WAErB;;WAEA;;WAEA,mBAAmB;;WAEnB;;WAEA;;WAEA,aAAa;;WAEb,gBAAgB;EAEzB,YAAY,MAAM;;EAuBlB,SAAS,iBAAiB,QAAQ;;EAKlC,SAAS,iBAAiB,QAAQ;;;;;;EAS5B,gBAAgB,mBAAmB,cAAc,QAAQ;;;;;EAgBzD,iBAAiB,oBAAoB,QAAQ,YAAY;;;;;cCnJtD,kBAAkB;;;;UCMd;EACb;EACA;EACA;;;;;;;;;;;;KCVQ;;UAGK;;EAEb;;EAEA;;EAEA,WAAW;;;;;UCPE;EACb;EACA;EACA;;;UAIa,oBAAoB;EACjC;EACA;;;UAIa,8BAA8B;EAC3C;EACA;;EAEA;EACA;EACA;EACA;EACA,SAAS;EACT;EACA;EACA,QAAQ;EACR,YAAY;;;UAIC,gCAAgC;EAC7C;EACA;;EAEA;EACA;EACA;EACA,SAAS;EACT;EACA;EACA,QAAQ;;EAER;;;KAIQ,mBAAmB,wBAAwB;;;;UC9CtC;EACb;EACA;GACC;;;UAIY,+BAA+B;EAC5C;EACA;EACA;;;UAIa,+BAA+B;EAC5C;EACA;;EAEA;EACA,QAAQ;;;KAIA,gBAAgB,yBAAyB;;;;UCvBpC;EACb;EACA;EACA;EACA;;;UAIa;EACb;EACA;EACA;;;UAIa;EACb;EACA;EACA;;;UAIa,mCAAmC;EAChD;EACA;EACA;EACA;EACA,MAAM;;;UAIO,kCAAkC;EAC/C;EACA;EACA;EACA;EACA;;;UAIa,qCAAqC;EAClD;EACA;EACA;EACA;EACA;EACA;;;UAIa,qCAAqC;EAClD;EACA;EACA;EACA;EACA;EACA;;;UAIa,gCAAgC;EAC7C;EACA;EACA;EACA;EACA;EACA;;EAEA;;;UAIa,iCAAiC;EAC9C;EACA;EACA;;;UAIa,mCAAmC;EAChD;EACA;EACA;EACA;EACA;EACA;;;UAIa,oCAAoC;EACjD;EACA;EACA;EACA;;;UAIa,iCAAiC;EAC9C;EACA;EACA;EACA;EACA;EACA;;;UAIa,oCAAoC;EACjD;EACA;EACA;EACA;EACA;EACA;EACA;;;UAIa,8BAA8B;EAC3C;EACA;EACA;EACA;EACA;EACA;;EAEA;;;UAIa,mCAAmC;EAChD;EACA;EACA;EACA,MAAM;;;UAIO,iCAAiC;EAC9C;EACA;EACA;EACA;;;UAIa,oCAAoC;EACjD;EACA;EACA;EACA;EACA;EACA,OAAO;;;UAIM,kCAAkC;EAC/C;EACA;EACA;EACA;EACA;;;KAIQ,kBACN,6BACA,4BACA,+BACA,+BACA,0BACA,2BACA,6BACA,8BACA,2BACA,8BACA,wBACA,6BACA,2BACA,8BACA;;;;UCpLW,+BAA+B;EAC5C;EACA;EACA;;EAEA;;EAEA;;;UAIa,8BAA8B;EAC3C;EACA;;EAEA;EACA;EACA;EACA;EACA;;;KAIQ,mBAAmB,yBAAyB;;;;KCiB5C,YAAY,mBAAoB,kBAAmB,mBAAoB;;;;UCyDlE;;EAEb,KAAK;;;iBAIO,yBAAyB,MAAM,iBAAiB;;;;;;;;;;;;;;UCjF/C;EACb;EACA,QAAQ;;;iBAII,aAAa;;iBAKb,cAAc;;iBAKd,eAAe;;iBASf,aACZ,cACA,QAAQ;;;;;;;;iBAqBI,eAAe,eAAe,eAAe;;iBAuB7C,iBAAiB,OAAO,eAAe;;;;iBC8GvC,oBAAoB,UAAU;;;;cCxJjC,kBAAgB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuB3B,EAAA,KAAA;;KAGU,aAAa,EAAE,aAAa;;;;UCTvB;EACb,KAAK,cAAc;EACnB,KAAK,cAAc;;EAEnB,MAAM,cAAc;;;UAIP,+BAA+B;;EAE5C,QAAQ,eAAe;;EAEvB,aAAa;;EAEb,YAAY;;EAEZ,eAAe;;EAEf,gBAAgB;;EAEhB,mBAAmB;;EAEnB,SAAS;;;cAIA,iCAAiC,oBAAoB;WACrD;mBAEQ;mBACA;mBACA;mBACA;mBACA;mBACA;mBACA;;WAER,UAAU;UACX;UACA;UACA;UACA;UACA;;UAEA;;UAEA;EAER,YAAY,MAAM;;;;;UAwBJ;;UAYA;;UAyCN;;UAiBM;;UAaN;;;;;;EAmJF,iBAAiB;;EAUvB;;;;;UASQ;;;;;;;UA4CM;;UAgCA;;UAiBA;;UA4BA;;UAiBN;;;;;EAWF,cAAc,cAAc,UAAU,wBAAwB;;;;;UCrevD;;EAEb,SAAS;;EAET,YAAY;;EAEZ,aAAa;;;UAIA;;EAEb,QAAQ;;EAER,aAAa;;EAEb,gBAAgB,cAAc,UAAU;;EAExC;;;iBAiBY,uBAAuB,MAAM,gCAAgC"}
@@ -1901,7 +1901,7 @@ function toOb11MessageInfo(msg, unique, ctx = {}) {
1901
1901
  if (msg.chatType === ChatType.GROUP) {
1902
1902
  info.group_id = Number(msg.peerUid);
1903
1903
  const { sender } = info;
1904
- sender.role = "member";
1904
+ sender.role = ctx.senderRole ?? "member";
1905
1905
  if (msg.sendMemberName !== void 0) sender.card = msg.sendMemberName;
1906
1906
  } else info.user_id = Number(msg.senderUin);
1907
1907
  return info;
@@ -2258,6 +2258,7 @@ function resolveStartMsgId(messageSeq, messageUnique) {
2258
2258
  /**
2259
2259
  * 拉取历史消息并翻译为 OB11 消息信息数组。
2260
2260
  * 收集全部消息 at uid → 一次批量 uidToUin → 上下文注入(P2-19)。
2261
+ * 群聊另取发送者角色表(GroupCache 一次整表读取,失败回退缺省 member)。
2261
2262
  */
2262
2263
  async function fetchAndTranslateHistory(peer, messageSeq, count, deps) {
2263
2264
  const startMsgId = resolveStartMsgId(messageSeq, deps.messageUnique);
@@ -2278,7 +2279,15 @@ async function fetchAndTranslateHistory(peer, messageSeq, count, deps) {
2278
2279
  ...uidToUin !== void 0 ? { uidToUin } : {},
2279
2280
  msgIdToOb11Id: (m) => deps.messageUnique.getMessageId(m)
2280
2281
  };
2281
- return { messages: msgs.map((msg) => toOb11MessageInfo(msg, deps.messageUnique, ctx)) };
2282
+ let senderRoles;
2283
+ if (peer.chatType === ChatType.GROUP) senderRoles = await deps.groupMemberRoles(peer.peerUid);
2284
+ return { messages: msgs.map((msg) => {
2285
+ const role = senderRoles?.get(msg.senderUid);
2286
+ return toOb11MessageInfo(msg, deps.messageUnique, {
2287
+ ...ctx,
2288
+ ...role !== void 0 ? { senderRole: role } : {}
2289
+ });
2290
+ }) };
2282
2291
  }
2283
2292
  //#endregion
2284
2293
  //#region src/onebot11/action/message/get-friend-msg-history.ts
@@ -2508,8 +2517,10 @@ var GetMsgAction = class extends BaseAction {
2508
2517
  if (atUids.length > 0) try {
2509
2518
  uidToUin = await this.deps.uidToUin(atUids);
2510
2519
  } catch {}
2520
+ const senderRole = msg.chatType === ChatType.GROUP ? await this.deps.groupMemberRole(msg.peerUid, msg.senderUid) : void 0;
2511
2521
  const ctx = {
2512
2522
  ...uidToUin !== void 0 ? { uidToUin } : {},
2523
+ ...senderRole !== void 0 ? { senderRole } : {},
2513
2524
  msgIdToOb11Id: (m) => this.deps.messageUnique.getMessageId(m)
2514
2525
  };
2515
2526
  return toOb11MessageInfo(msg, this.deps.messageUnique, ctx);
@@ -3571,6 +3582,34 @@ var OneBotApi = class {
3571
3582
  uidToUin(uids) {
3572
3583
  return this.groupApi.uidToUin(uids);
3573
3584
  }
3585
+ /**
3586
+ * 群成员角色(GroupCache 缓存优先,缺失惰性回填;sender.role 判定用)。
3587
+ * 未装配缓存 / 成员不在群 / 查询失败 → undefined(调用方回退缺省 "member",
3588
+ * 不阻塞消息上报)。
3589
+ */
3590
+ async groupMemberRole(groupCode, uid) {
3591
+ if (this.groupCache === void 0) return;
3592
+ try {
3593
+ const member = await this.groupCache.getMember(groupCode, uid);
3594
+ return member === void 0 ? void 0 : GroupApi.roleToString(member.role);
3595
+ } catch {
3596
+ return;
3597
+ }
3598
+ }
3599
+ /**
3600
+ * 群成员角色表(历史消息批量用:一次整表读取,uid → role)。
3601
+ * 失败语义同 groupMemberRole。
3602
+ */
3603
+ async groupMemberRoles(groupCode) {
3604
+ if (this.groupCache === void 0) return;
3605
+ try {
3606
+ const out = /* @__PURE__ */ new Map();
3607
+ for (const member of await this.groupCache.getMembers(groupCode)) out.set(member.uid, GroupApi.roleToString(member.role));
3608
+ return out;
3609
+ } catch {
3610
+ return;
3611
+ }
3612
+ }
3574
3613
  };
3575
3614
  //#endregion
3576
3615
  //#region src/onebot11/helper/message-event.ts
@@ -3601,7 +3640,7 @@ function toOb11MessageEvent(msg, selfUin, unique, messageFormat = "array", ctx =
3601
3640
  const sender = {
3602
3641
  user_id: userId,
3603
3642
  nickname: msg.sendNickName,
3604
- role: "member"
3643
+ role: ctx.senderRole ?? "member"
3605
3644
  };
3606
3645
  if (msg.sendMemberName !== void 0) sender.card = msg.sendMemberName;
3607
3646
  return {
@@ -4345,6 +4384,7 @@ var NapukettoOneBot11Adapter = class extends BaseProtocolAdapter {
4345
4384
  /**
4346
4385
  * 广播消息事件(P2-19:接收方向 ID 转换)。
4347
4386
  * 收集 at uid → 一次批量 uidToUin → 构造上下文 → 翻译广播。
4387
+ * 群消息另查发送者角色(GroupCache 缓存优先,失败回退缺省 member)。
4348
4388
  * 翻译失败退化为原样(不阻塞上报)。
4349
4389
  */
4350
4390
  async broadcastMessageEvent(msg) {
@@ -4353,8 +4393,10 @@ var NapukettoOneBot11Adapter = class extends BaseProtocolAdapter {
4353
4393
  if (atUids.length > 0) try {
4354
4394
  uidToUin = await this.oneBotApi.uidToUin(atUids);
4355
4395
  } catch {}
4396
+ const senderRole = msg.chatType === ChatType.GROUP ? await this.oneBotApi.groupMemberRole(msg.peerUid, msg.senderUid) : void 0;
4356
4397
  const ctx = {
4357
4398
  ...uidToUin !== void 0 ? { uidToUin } : {},
4399
+ ...senderRole !== void 0 ? { senderRole } : {},
4358
4400
  msgIdToOb11Id: (msgId) => this.oneBotApi.messageUnique.getMessageId(msgId)
4359
4401
  };
4360
4402
  this.broadcastEvent(toOb11MessageEvent(msg, this.selfUin, this.oneBotApi.messageUnique, this.messageFormat, ctx));