hotcat-bot-qq 0.0.1

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.
@@ -0,0 +1,1163 @@
1
+ import { NCWebsocket, NCWebsocketOptions } from 'node-napcat-ts';
2
+ import { Message } from './message';
3
+ import type { BotClient } from './botClient';
4
+ export declare class BotApi {
5
+ napcat: NCWebsocket;
6
+ private _client;
7
+ get client(): BotClient;
8
+ set client(c: BotClient);
9
+ constructor(config: NCWebsocketOptions, debug?: boolean);
10
+ /** 建立 WebSocket 连接 */
11
+ connect(): Promise<void>;
12
+ /**
13
+ * 获取当前 bot 登录信息
14
+ * @returns `{ user_id: number, nickname: string }`
15
+ */
16
+ getLoginInfo(): Promise<{
17
+ user_id: number;
18
+ nickname: string;
19
+ }>;
20
+ /**
21
+ * 发送消息(群聊或私聊)
22
+ * @param target - `{ group_id: number }` 发群聊,`{ user_id: number }` 发私聊
23
+ * @param messages - 消息段
24
+ */
25
+ sendMessage(target: {
26
+ group_id: number;
27
+ } | {
28
+ user_id: number;
29
+ }, ...messages: Message[]): Promise<void>;
30
+ /**
31
+ * 发送群聊消息
32
+ * @param groupId - 群号
33
+ * @param messages - 消息段
34
+ */
35
+ sendGroupMessage(groupId: number, ...messages: Message[]): Promise<void>;
36
+ /**
37
+ * 发送私聊消息
38
+ * @param userId - QQ 号
39
+ * @param messages - 消息段
40
+ */
41
+ sendPrivateMessage(userId: number, ...messages: Message[]): Promise<void>;
42
+ /**
43
+ * 发送合并转发(通用,自动判断群/私聊)
44
+ * @param target - `{ group_id }` 或 `{ user_id }`
45
+ * @param nodes - 转发节点,由 `Message.node()` / `Message.customNode()` 构建
46
+ */
47
+ sendForwardMsg(target: {
48
+ group_id: number;
49
+ } | {
50
+ user_id: number;
51
+ }, nodes: Message[]): Promise<void>;
52
+ /**
53
+ * 发送群合并转发
54
+ * @param groupId - 群号
55
+ * @param nodes - 转发节点
56
+ */
57
+ sendGroupForwardMsg(groupId: number, nodes: Message[]): Promise<void>;
58
+ /**
59
+ * 发送私聊合并转发
60
+ * @param userId - QQ 号
61
+ * @param nodes - 转发节点
62
+ */
63
+ sendPrivateForwardMsg(userId: number, nodes: Message[]): Promise<void>;
64
+ /**
65
+ * 转发单条消息到私聊
66
+ * @param userId - 目标 QQ
67
+ * @param messageId - 消息 ID
68
+ */
69
+ forwardFriendSingleMsg(userId: number, messageId: number): Promise<void>;
70
+ /**
71
+ * 转发单条消息到群聊
72
+ * @param groupId - 群号
73
+ * @param messageId - 消息 ID
74
+ */
75
+ forwardGroupSingleMsg(groupId: number, messageId: number): Promise<void>;
76
+ /**
77
+ * 撤回消息
78
+ * @param messageId - 消息 ID
79
+ */
80
+ deleteMessage(messageId: number): Promise<void>;
81
+ /**
82
+ * 获取单条消息详情
83
+ * @param messageId - 消息 ID
84
+ */
85
+ getMessage(messageId: number): Promise<({
86
+ message_type: "private";
87
+ sender: {
88
+ user_id: number;
89
+ nickname: string;
90
+ card: string;
91
+ };
92
+ sub_type: "friend";
93
+ } | {
94
+ message_type: "group";
95
+ group_id: number;
96
+ sender: {
97
+ user_id: number;
98
+ nickname: string;
99
+ card: string;
100
+ role: "owner" | "admin" | "member";
101
+ };
102
+ sub_type: "normal";
103
+ }) & {
104
+ self_id: number;
105
+ user_id: number;
106
+ time: number;
107
+ message_id: number;
108
+ message_seq: number;
109
+ real_id: number;
110
+ real_seq: string;
111
+ raw_message: string;
112
+ font: number;
113
+ post_type: "message" | "message_sent";
114
+ emoji_likes_list: {
115
+ emoji_id: string;
116
+ emoji_type: string;
117
+ likes_cnt: string;
118
+ }[];
119
+ } & import("node-napcat-ts").MessageType>;
120
+ /**
121
+ * 获取合并转发消息
122
+ * @param messageId - 消息 ID
123
+ */
124
+ getForwardMsg(messageId: number): Promise<{
125
+ messages: import("node-napcat-ts").WSSendReturn["get_msg"][];
126
+ }>;
127
+ /**
128
+ * 获取群聊历史消息
129
+ * @param groupId - 群号
130
+ * @param messageSeq - 起始消息序号
131
+ * @param count - 获取数量
132
+ */
133
+ getGroupMsgHistory(groupId: number, messageSeq?: number, count?: number): Promise<{
134
+ messages: import("node-napcat-ts").WSSendReturn["get_msg"][];
135
+ }>;
136
+ /**
137
+ * 获取私聊消息历史
138
+ * @param userId - QQ 号
139
+ * @param messageSeq - 起始消息序号
140
+ * @param count - 获取数量
141
+ */
142
+ getFriendMsgHistory(userId: number, messageSeq?: number, count?: number): Promise<{
143
+ messages: import("node-napcat-ts").WSSendReturn["get_msg"][];
144
+ }>;
145
+ /**
146
+ * 标记消息已读
147
+ * @param target - `{ group_id: number }` | `{ user_id: number }` | `{ message_id: number }`
148
+ */
149
+ markMsgAsRead(target: {
150
+ group_id: number;
151
+ } | {
152
+ user_id: number;
153
+ } | {
154
+ message_id: number;
155
+ }): Promise<void>;
156
+ /** 标记私聊已读 */
157
+ markPrivateMsgAsRead(userId: number): Promise<void>;
158
+ /** 标记群聊已读 */
159
+ markGroupMsgAsRead(groupId: number): Promise<void>;
160
+ /** 标记所有消息已读 */
161
+ markAllAsRead(): Promise<void>;
162
+ /**
163
+ * 设置消息表情回应
164
+ * @param messageId - 消息 ID
165
+ * @param emojiId - 表情 ID
166
+ * @param set - true 添加 / false 移除
167
+ */
168
+ setMsgEmojiLike(messageId: number, emojiId: string, set?: boolean): Promise<void>;
169
+ /**
170
+ * 拉取表情回应列表
171
+ * @param messageId - 消息 ID
172
+ * @param emojiId - 表情 ID
173
+ */
174
+ fetchEmojiLike(messageId: number, emojiId?: string): Promise<{
175
+ result: 0;
176
+ errMsg: string;
177
+ emojiLikesList: {
178
+ tinyId: string;
179
+ nickName: string;
180
+ headUrl: string;
181
+ }[];
182
+ cookie: string;
183
+ isLastPage: boolean;
184
+ isFirstPage: boolean;
185
+ }>;
186
+ /** 英译中翻译 */
187
+ translateEn2zh(words: string[]): Promise<string[]>;
188
+ /**
189
+ * 群内禁言
190
+ * @param groupId - 群号
191
+ * @param userId - 目标 QQ
192
+ * @param duration - 禁言时长(秒),0 解除
193
+ */
194
+ banMember(groupId: number, userId: number, duration: number): Promise<void>;
195
+ /**
196
+ * 踢出群成员
197
+ * @param groupId - 群号
198
+ * @param userId - 目标 QQ
199
+ * @param rejectAdd - 是否拒绝再次加群
200
+ */
201
+ kickMember(groupId: number, userId: number, rejectAdd?: boolean): Promise<void>;
202
+ /**
203
+ * 全员禁言
204
+ * @param groupId - 群号
205
+ * @param enable - true 开启 / false 关闭,默认 true
206
+ */
207
+ setGroupWholeBan(groupId: number, enable?: boolean): Promise<void>;
208
+ /**
209
+ * 设置/取消管理员
210
+ * @param groupId - 群号
211
+ * @param userId - 目标 QQ
212
+ * @param enable - true 设为管理 / false 取消,默认 true
213
+ */
214
+ setGroupAdmin(groupId: number, userId: number, enable?: boolean): Promise<void>;
215
+ /**
216
+ * 修改群名片
217
+ * @param groupId - 群号
218
+ * @param userId - 目标 QQ
219
+ * @param card - 新群名片
220
+ */
221
+ setGroupCard(groupId: number, userId: number, card: string): Promise<void>;
222
+ /**
223
+ * 修改群名称
224
+ * @param groupId - 群号
225
+ * @param groupName - 新群名
226
+ */
227
+ setGroupName(groupId: number, groupName: string): Promise<void>;
228
+ /**
229
+ * 设置群备注
230
+ * @param groupId - 群号
231
+ * @param remark - 备注名
232
+ */
233
+ setGroupRemark(groupId: number, remark: string): Promise<void>;
234
+ /**
235
+ * 设置群头衔
236
+ * @param groupId - 群号
237
+ * @param userId - 目标 QQ
238
+ * @param title - 头衔内容
239
+ */
240
+ setGroupSpecialTitle(groupId: number, userId: number, title: string): Promise<void>;
241
+ /**
242
+ * 退出 / 解散群
243
+ * @param groupId - 群号
244
+ * @param isDismiss - true 解散(群主),默认 false 仅退出
245
+ */
246
+ leaveGroup(groupId: number, isDismiss?: boolean): Promise<void>;
247
+ /**
248
+ * 处理加群申请
249
+ * @param flag - 申请标识(从事件中获取)
250
+ * @param approve - true 同意 / false 拒绝
251
+ * @param reason - 拒绝理由
252
+ */
253
+ handleGroupAddRequest(flag: string, approve?: boolean, reason?: string): Promise<void>;
254
+ /** 设置群头像,file 支持本地路径/base64/URL */
255
+ setGroupPortrait(groupId: number, file: string): Promise<void>;
256
+ /** 群打卡 */
257
+ sendGroupSign(groupId: number): Promise<void>;
258
+ /** 发送群公告 */
259
+ sendGroupNotice(groupId: number, title: string, content: string): Promise<void>;
260
+ /** 获取群公告 */
261
+ getGroupNotice(groupId: number): Promise<{
262
+ notice_id: string;
263
+ sender_id: number;
264
+ publish_time: number;
265
+ message: {
266
+ text: string;
267
+ images: {
268
+ id: string;
269
+ height: string;
270
+ width: string;
271
+ }[];
272
+ };
273
+ }[]>;
274
+ /** 删除群公告 */
275
+ deleteGroupNotice(groupId: number, noticeId: string): Promise<void>;
276
+ /**
277
+ * 获取群信息
278
+ * @param groupId - 群号
279
+ */
280
+ getGroupInfo(groupId: number): Promise<{
281
+ group_all_shut: number;
282
+ group_remark: string;
283
+ group_id: number;
284
+ group_name: string;
285
+ member_count: number;
286
+ max_member_count: number;
287
+ }>;
288
+ /** 获取群额外信息 */
289
+ getGroupInfoEx(groupId: number): Promise<{
290
+ groupCode: string;
291
+ resultCode: 0;
292
+ extInfo: {
293
+ groupInfoExtSeq: number;
294
+ reserve: number;
295
+ luckyWordId: string;
296
+ lightCharNum: number;
297
+ luckyWord: string;
298
+ starId: number;
299
+ essentialMsgSwitch: number;
300
+ todoSeq: number;
301
+ blacklistExpireTime: number;
302
+ isLimitGroupRtc: number;
303
+ companyId: number;
304
+ hasGroupCustomPortrait: number;
305
+ bindGuildId: string;
306
+ groupOwnerId: {
307
+ memberUin: string;
308
+ memberUid: string;
309
+ memberQid: string;
310
+ };
311
+ essentialMsgPrivilege: number;
312
+ msgEventSeq: string;
313
+ inviteRobotSwitch: number;
314
+ gangUpId: string;
315
+ qqMusicMedalSwitch: number;
316
+ showPlayTogetherSwitch: number;
317
+ groupFlagPro1: string;
318
+ groupBindGuildIds: {
319
+ guildIds: string[];
320
+ };
321
+ viewedMsgDisappearTime: string;
322
+ groupExtFlameData: {
323
+ switchState: number;
324
+ state: number;
325
+ dayNums: string[];
326
+ version: number;
327
+ updateTime: string;
328
+ isDisplayDayNum: false;
329
+ };
330
+ groupBindGuildSwitch: number;
331
+ groupAioBindGuildId: string;
332
+ groupExcludeGuildIds: {
333
+ guildIds: string[];
334
+ };
335
+ fullGroupExpansionSwitch: number;
336
+ fullGroupExpansionSeq: string;
337
+ inviteRobotMemberSwitch: number;
338
+ inviteRobotMemberExamine: number;
339
+ groupSquareSwitch: number;
340
+ };
341
+ }>;
342
+ /**
343
+ * 获取群列表
344
+ * @param noCache - true 跳过缓存
345
+ */
346
+ getGroupList(noCache?: boolean): Promise<{
347
+ group_all_shut: number;
348
+ group_remark: string;
349
+ group_id: number;
350
+ group_name: string;
351
+ member_count: number;
352
+ max_member_count: number;
353
+ }[]>;
354
+ /**
355
+ * 获取群成员信息
356
+ * @param groupId - 群号
357
+ * @param userId - QQ 号
358
+ * @param noCache - true 跳过缓存
359
+ */
360
+ getGroupMemberInfo(groupId: number, userId: number, noCache?: boolean): Promise<{
361
+ group_id: number;
362
+ user_id: number;
363
+ nickname: string;
364
+ card: string;
365
+ sex: "male" | "female" | "unknown";
366
+ age: number;
367
+ area: string;
368
+ level: string;
369
+ qq_level: number;
370
+ join_time: number;
371
+ last_sent_time: number;
372
+ title_expire_time: number;
373
+ unfriendly: boolean;
374
+ card_changeable: boolean;
375
+ is_robot: boolean;
376
+ shut_up_timestamp: number;
377
+ role: "owner" | "admin" | "member";
378
+ title: string;
379
+ }>;
380
+ /**
381
+ * 获取群成员列表
382
+ * @param groupId - 群号
383
+ * @param noCache - true 跳过缓存
384
+ */
385
+ getGroupMemberList(groupId: number, noCache?: boolean): Promise<{
386
+ group_id: number;
387
+ user_id: number;
388
+ nickname: string;
389
+ card: string;
390
+ sex: "male" | "female" | "unknown";
391
+ age: number;
392
+ area: string;
393
+ level: string;
394
+ qq_level: number;
395
+ join_time: number;
396
+ last_sent_time: number;
397
+ title_expire_time: number;
398
+ unfriendly: boolean;
399
+ card_changeable: boolean;
400
+ is_robot: boolean;
401
+ shut_up_timestamp: number;
402
+ role: "owner" | "admin" | "member";
403
+ title: string;
404
+ }[]>;
405
+ /**
406
+ * 获取群荣誉信息
407
+ * @param groupId - 群号
408
+ * @param type - 荣誉类型: all/talkative/performer/legend/strong_newbie/emotion
409
+ */
410
+ getGroupHonorInfo(groupId: number, type?: 'all' | 'talkative' | 'performer' | 'legend' | 'strong_newbie' | 'emotion'): Promise<{
411
+ group_id: string;
412
+ current_talkative: {
413
+ user_id: number;
414
+ nickname: string;
415
+ avatar: string;
416
+ description: string;
417
+ };
418
+ talkative_list: {
419
+ user_id: number;
420
+ nickname: string;
421
+ avatar: string;
422
+ description: string;
423
+ }[];
424
+ performer_list: {
425
+ user_id: number;
426
+ nickname: string;
427
+ avatar: string;
428
+ description: string;
429
+ }[];
430
+ legend_list: {
431
+ user_id: number;
432
+ nickname: string;
433
+ avatar: string;
434
+ description: string;
435
+ }[];
436
+ emotion_list: {
437
+ user_id: number;
438
+ nickname: string;
439
+ avatar: string;
440
+ description: string;
441
+ }[];
442
+ strong_newbie_list: {
443
+ user_id: number;
444
+ nickname: string;
445
+ avatar: string;
446
+ description: string;
447
+ }[];
448
+ }>;
449
+ /** 获取群系统消息 */
450
+ getGroupSystemMsg(count?: number): Promise<{
451
+ invited_requests: {
452
+ request_id: number;
453
+ invitor_uin: number;
454
+ invitor_nick: string;
455
+ group_id: number;
456
+ message: string;
457
+ group_name: string;
458
+ checked: boolean;
459
+ actor: number;
460
+ requester_nick: string;
461
+ }[];
462
+ join_requests: {
463
+ request_id: number;
464
+ invitor_uin: number;
465
+ invitor_nick: string;
466
+ group_id: number;
467
+ message: string;
468
+ group_name: string;
469
+ checked: boolean;
470
+ actor: number;
471
+ requester_nick: string;
472
+ }[];
473
+ }>;
474
+ /** 获取群 @全体成员 剩余次数 */
475
+ getGroupAtAllRemain(groupId: number): Promise<{
476
+ can_at_all: boolean;
477
+ remain_at_all_count_for_group: number;
478
+ remain_at_all_count_for_uin: number;
479
+ }>;
480
+ /** 获取群被禁言用户列表 */
481
+ getGroupShutList(groupId: number): Promise<{
482
+ uid: string;
483
+ qid: string;
484
+ uin: string;
485
+ nick: string;
486
+ remark: string;
487
+ cardType: number;
488
+ cardName: string;
489
+ role: number;
490
+ avatarPath: string;
491
+ shutUpTime: number;
492
+ isDelete: boolean;
493
+ isSpecialConcerned: boolean;
494
+ isSpecialShield: boolean;
495
+ isRobot: boolean;
496
+ groupHonor: {
497
+ [key: string]: number;
498
+ };
499
+ memberRealLevel: number;
500
+ memberLevel: number;
501
+ globalGroupLevel: number;
502
+ globalGroupPoint: number;
503
+ memberTitleId: number;
504
+ memberSpecialTitle: string;
505
+ specialTitleExpireTime: string;
506
+ userShowFlag: number;
507
+ userShowFlagNew: number;
508
+ richFlag: number;
509
+ mssVipType: number;
510
+ bigClubLevel: number;
511
+ bigClubFlag: number;
512
+ autoRemark: string;
513
+ creditLevel: number;
514
+ joinTime: number;
515
+ lastSpeakTime: number;
516
+ memberFlag: number;
517
+ memberFlagExt: number;
518
+ memberMobileFlag: number;
519
+ memberFlagExt2: number;
520
+ isSpecialShielded: boolean;
521
+ cardNameId: number;
522
+ }[]>;
523
+ /** 获取群忽略的加群请求 */
524
+ getGroupIgnoreAddRequest(groupId: number): Promise<{
525
+ request_id: number;
526
+ invitor_uin: number;
527
+ invitor_nick: string;
528
+ group_id: number;
529
+ message: string;
530
+ group_name: string;
531
+ checked: boolean;
532
+ actor: number;
533
+ requester_nick: string;
534
+ }[]>;
535
+ /** 获取精华消息列表 */
536
+ getEssenceMsgList(groupId: number): Promise<{
537
+ msg_seq: number;
538
+ msg_random: number;
539
+ sender_id: number;
540
+ sender_nick: string;
541
+ operator_id: number;
542
+ operator_nick: string;
543
+ message_id: number;
544
+ operator_time: number;
545
+ content: import("node-napcat-ts").Receive[keyof import("node-napcat-ts").Receive][];
546
+ }[]>;
547
+ /** 设置精华消息 */
548
+ setEssenceMsg(messageId: number): Promise<void>;
549
+ /** 移出精华消息 */
550
+ deleteEssenceMsg(messageId: number): Promise<void>;
551
+ /**
552
+ * 获取陌生人信息
553
+ * @param userId - QQ 号
554
+ */
555
+ getStrangerInfo(userId: number): Promise<{
556
+ uid: string;
557
+ uin: string;
558
+ nick: string;
559
+ remark: string;
560
+ constellation: number;
561
+ shengXiao: number;
562
+ kBloodType: number;
563
+ homeTown: string;
564
+ makeFriendCareer: number;
565
+ pos: string;
566
+ college: string;
567
+ country: string;
568
+ province: string;
569
+ city: string;
570
+ postCode: string;
571
+ address: string;
572
+ regTime: number;
573
+ interest: string;
574
+ labels: string[];
575
+ qqLevel: number;
576
+ qid: string;
577
+ longNick: string;
578
+ birthday_year: number;
579
+ birthday_month: number;
580
+ birthday_day: number;
581
+ age: number;
582
+ sex: "male" | "female" | "unknown";
583
+ eMail: string;
584
+ phoneNum: string;
585
+ categoryId: number;
586
+ richTime: number;
587
+ richBuffer: {
588
+ [key: string]: number;
589
+ };
590
+ topTime: string;
591
+ isBlock: boolean;
592
+ isMsgDisturb: boolean;
593
+ isSpecialCareOpen: boolean;
594
+ isSpecialCareZone: boolean;
595
+ ringId: string;
596
+ isBlocked: boolean;
597
+ recommendImgFlag: number;
598
+ disableEmojiShortCuts: number;
599
+ qidianMasterFlag: number;
600
+ qidianCrewFlag: number;
601
+ qidianCrewFlag2: number;
602
+ isHideQQLevel: number;
603
+ isHidePrivilegeIcon: number;
604
+ status: number;
605
+ extStatus: number;
606
+ batteryStatus: number;
607
+ termType: number;
608
+ netType: number;
609
+ iconType: number;
610
+ customStatus: null;
611
+ setTime: string;
612
+ specialFlag: number;
613
+ abiFlag: number;
614
+ eNetworkType: number;
615
+ showName: string;
616
+ termDesc: string;
617
+ musicInfo: {
618
+ buf: {
619
+ [key: string]: number;
620
+ };
621
+ };
622
+ extOnlineBusinessInfo: {
623
+ buf: {
624
+ [key: string]: number;
625
+ };
626
+ customStatus: null;
627
+ videoBizInfo: {
628
+ cid: string;
629
+ tvUrl: string;
630
+ synchType: string;
631
+ };
632
+ videoInfo: {
633
+ name: string;
634
+ };
635
+ };
636
+ extBuffer: {
637
+ buf: {
638
+ [key: string]: number;
639
+ };
640
+ };
641
+ user_id: number;
642
+ nickname: string;
643
+ long_nick: string;
644
+ reg_time: number;
645
+ is_vip: boolean;
646
+ is_years_vip: boolean;
647
+ vip_level: number;
648
+ login_days: number;
649
+ }>;
650
+ /** 获取好友列表 */
651
+ getFriendList(): Promise<{
652
+ birthday_year: number;
653
+ birthday_month: number;
654
+ birthday_day: number;
655
+ user_id: number;
656
+ age: number;
657
+ phone_num: string;
658
+ email: string;
659
+ category_id: number;
660
+ nickname: string;
661
+ remark: string;
662
+ sex: "male" | "female" | "unknown";
663
+ level: number;
664
+ }[]>;
665
+ /** 获取好友分类列表 */
666
+ getFriendsWithCategory(): Promise<{
667
+ categoryId: number;
668
+ categorySortId: number;
669
+ categoryName: string;
670
+ categoryMbCount: number;
671
+ onlineCount: number;
672
+ buddyList: import("node-napcat-ts").WSSendReturn["get_friend_list"];
673
+ }[]>;
674
+ /**
675
+ * 删除好友
676
+ * @param userId - QQ 号
677
+ * @param tempBlock - 是否拉黑
678
+ * @param tempBothDel - 是否双向删除
679
+ */
680
+ deleteFriend(userId: number, tempBlock?: boolean, tempBothDel?: boolean): Promise<void>;
681
+ /**
682
+ * 处理好友申请
683
+ * @param flag - 申请标识(从事件中获取)
684
+ * @param approve - true 同意 / false 拒绝
685
+ * @param remark - 好友备注
686
+ */
687
+ handleFriendAddRequest(flag: string, approve?: boolean, remark?: string): Promise<void>;
688
+ /** 获取用户在线状态 */
689
+ getUserStatus(userId: number): Promise<{
690
+ status: number;
691
+ ext_status: number;
692
+ }>;
693
+ /** 设置个人签名 */
694
+ setSelfLongnick(longnick: string): Promise<void>;
695
+ /**
696
+ * 群内戳一戳
697
+ * @param groupId - 群号
698
+ * @param userId - 目标 QQ
699
+ */
700
+ groupPoke(groupId: number, userId: number): Promise<void>;
701
+ /**
702
+ * 好友戳一戳
703
+ * @param userId - 目标 QQ
704
+ */
705
+ friendPoke(userId: number): Promise<void>;
706
+ /** 发送戳一戳(通用,自动判断群/私聊) */
707
+ sendPoke(userId: number, groupId?: number): Promise<void>;
708
+ /**
709
+ * 点赞
710
+ * @param userId - 目标 QQ
711
+ * @param times - 次数,默认 1
712
+ */
713
+ sendLike(userId: number, times?: number): Promise<void>;
714
+ /**
715
+ * 获取图片文件
716
+ * @param file - 图片 file_id 或 URL
717
+ */
718
+ getImage(file: string): Promise<{
719
+ file: string;
720
+ url: string;
721
+ file_size: string;
722
+ file_name: string;
723
+ }>;
724
+ /**
725
+ * 获取语音文件
726
+ * @param file - 语音 file_id 或 URL
727
+ * @param outFormat - 输出格式
728
+ */
729
+ getRecord(file: string, outFormat?: 'mp3' | 'amr' | 'wma' | 'm4a' | 'spx' | 'ogg' | 'wav' | 'flac'): Promise<{
730
+ file: string;
731
+ url: string;
732
+ file_size: string;
733
+ file_name: string;
734
+ }>;
735
+ /**
736
+ * 上传群文件
737
+ * @param groupId - 群号
738
+ * @param file - 本地文件路径
739
+ * @param name - 显示名称
740
+ * @param folderId - 目标文件夹 ID
741
+ */
742
+ uploadGroupFile(groupId: number, file: string, name: string, folderId?: string): Promise<void>;
743
+ /**
744
+ * 上传私聊文件
745
+ * @param userId - QQ 号
746
+ * @param file - 本地文件路径
747
+ * @param name - 显示名称
748
+ */
749
+ uploadPrivateFile(userId: number, file: string, name: string): Promise<void>;
750
+ /**
751
+ * 获取群文件下载链接
752
+ * @param groupId - 群号
753
+ * @param fileId - 文件 ID
754
+ */
755
+ getGroupFileUrl(groupId: number, fileId: string): Promise<{
756
+ url: string;
757
+ }>;
758
+ /**
759
+ * 图片 OCR 识别
760
+ * @param image - 图片 file_id 或 base64
761
+ */
762
+ ocrImage(image: string): Promise<{
763
+ text: string;
764
+ pt1: {
765
+ x: string;
766
+ y: string;
767
+ };
768
+ pt2: {
769
+ x: string;
770
+ y: string;
771
+ };
772
+ pt3: {
773
+ x: string;
774
+ y: string;
775
+ };
776
+ pt4: {
777
+ x: string;
778
+ y: string;
779
+ };
780
+ charBox: {
781
+ charText: string;
782
+ charBox: {
783
+ pt1: {
784
+ x: string;
785
+ y: string;
786
+ };
787
+ pt2: {
788
+ x: string;
789
+ y: string;
790
+ };
791
+ pt3: {
792
+ x: string;
793
+ y: string;
794
+ };
795
+ pt4: {
796
+ x: string;
797
+ y: string;
798
+ };
799
+ };
800
+ }[];
801
+ score: string;
802
+ }[]>;
803
+ /** 获取文件信息 */
804
+ getFile(file: string): Promise<{
805
+ file: string;
806
+ url: string;
807
+ file_size: string;
808
+ file_name: string;
809
+ }>;
810
+ /** 下载文件到缓存目录 */
811
+ downloadFile(url: string, name?: string, headers?: string[]): Promise<{
812
+ file: string;
813
+ }>;
814
+ /** 获取收藏表情 */
815
+ fetchCustomFace(count?: number): Promise<string[]>;
816
+ /** 删除群文件 */
817
+ deleteGroupFile(groupId: number, fileId: string): Promise<void>;
818
+ /** 创建群文件夹 */
819
+ createGroupFileFolder(groupId: number, folderName: string): Promise<void>;
820
+ /** 删除群文件夹 */
821
+ deleteGroupFolder(groupId: number, folderId: string): Promise<void>;
822
+ /** 获取群文件系统信息 */
823
+ getGroupFileSystemInfo(groupId: number): Promise<{
824
+ file_count: number;
825
+ limit_count: 10000;
826
+ used_space: 0;
827
+ total_space: 10737418240;
828
+ }>;
829
+ /** 获取群根目录文件列表 */
830
+ getGroupRootFiles(groupId: number): Promise<{
831
+ files: {
832
+ group_id: number;
833
+ file_id: string;
834
+ file_name: string;
835
+ busid: number;
836
+ size: number;
837
+ file_size: number;
838
+ upload_time: number;
839
+ dead_time: number;
840
+ modify_time: number;
841
+ download_times: number;
842
+ uploader: number;
843
+ uploader_name: string;
844
+ }[];
845
+ folders: {
846
+ group_id: number;
847
+ folder_id: string;
848
+ folder: string;
849
+ folder_name: string;
850
+ create_time: number;
851
+ creator: number;
852
+ creator_name: string;
853
+ total_file_count: number;
854
+ }[];
855
+ }>;
856
+ /** 获取群子目录文件列表 */
857
+ getGroupFilesByFolder(groupId: number, folderId: string): Promise<{
858
+ files: {
859
+ group_id: number;
860
+ file_id: string;
861
+ file_name: string;
862
+ busid: number;
863
+ size: number;
864
+ file_size: number;
865
+ upload_time: number;
866
+ dead_time: number;
867
+ modify_time: number;
868
+ download_times: number;
869
+ uploader: number;
870
+ uploader_name: string;
871
+ }[];
872
+ folders: {
873
+ group_id: number;
874
+ folder_id: string;
875
+ folder: string;
876
+ folder_name: string;
877
+ create_time: number;
878
+ creator: number;
879
+ creator_name: string;
880
+ total_file_count: number;
881
+ }[];
882
+ }>;
883
+ /** 获取最近的聊天记录 */
884
+ getRecentContact(): Promise<({
885
+ lastestMsg: import("node-napcat-ts").WSSendReturn["get_msg"];
886
+ peerUin: string;
887
+ remark: string;
888
+ msgTime: string;
889
+ chatType: number;
890
+ msgId: string;
891
+ sendNickName: string;
892
+ sendMemberName: string;
893
+ peerName: string;
894
+ } | {
895
+ peerUin: string;
896
+ remark: string;
897
+ msgTime: number;
898
+ chatType: number;
899
+ msgId: string;
900
+ sendNickName: string;
901
+ sendMemberName: string;
902
+ peerName: string;
903
+ })[]>;
904
+ /** 获取自身点赞列表 */
905
+ getProfileLike(): Promise<{
906
+ uid: string;
907
+ time: number;
908
+ favoriteInfo: {
909
+ total_count: number;
910
+ last_time: number;
911
+ today_count: number;
912
+ userInfos: {
913
+ age: number;
914
+ bAvailableCnt: number;
915
+ bTodayVotedCnt: number;
916
+ count: number;
917
+ customId: number;
918
+ gender: number;
919
+ giftCount: number;
920
+ isFriend: boolean;
921
+ isSvip: boolean;
922
+ isvip: boolean;
923
+ lastCharged: number;
924
+ latestTime: number;
925
+ nick: string;
926
+ src: number;
927
+ uid: string;
928
+ uin: number;
929
+ }[];
930
+ };
931
+ voteInfo: {
932
+ total_count: number;
933
+ new_count: number;
934
+ new_nearby_count: number;
935
+ last_visit_time: number;
936
+ userInfos: {
937
+ age: number;
938
+ bAvailableCnt: number;
939
+ bTodayVotedCnt: number;
940
+ count: number;
941
+ customId: number;
942
+ gender: number;
943
+ giftCount: number;
944
+ isFriend: boolean;
945
+ isSvip: boolean;
946
+ isvip: boolean;
947
+ lastCharged: number;
948
+ latestTime: number;
949
+ nick: string;
950
+ src: number;
951
+ uid: string;
952
+ uin: number;
953
+ }[];
954
+ };
955
+ }[]>;
956
+ /** 创建文本收藏 */
957
+ createCollection(rawData: string, brief: string): Promise<void>;
958
+ /** 获取收藏列表 */
959
+ getCollectionList(category?: number, count?: number): Promise<{
960
+ result: 0;
961
+ errMsg: string;
962
+ collectionSearchList: {
963
+ collectionItemList: {
964
+ cid: string;
965
+ type: number;
966
+ status: number;
967
+ author: {
968
+ type: number;
969
+ numId: string;
970
+ strId: string;
971
+ groupId: string;
972
+ groupName: string;
973
+ uid: string;
974
+ };
975
+ bid: number;
976
+ category: number;
977
+ createTime: string;
978
+ collectTime: string;
979
+ modifyTime: string;
980
+ sequence: string;
981
+ shareUrl: string;
982
+ customGroupId: number;
983
+ securityBeat: boolean;
984
+ summary: {
985
+ textSummary: unknown;
986
+ linkSummary: unknown;
987
+ gallerySummary: unknown;
988
+ audioSummary: unknown;
989
+ videoSummary: unknown;
990
+ fileSummary: unknown;
991
+ locationSummary: unknown;
992
+ richMediaSummary: unknown;
993
+ };
994
+ }[];
995
+ hasMore: boolean;
996
+ bottomTimeStamp: string;
997
+ };
998
+ }>;
999
+ /** 推荐联系人/群聊 */
1000
+ recommendContact(userId: number, phoneNumber?: string): Promise<void>;
1001
+ /** 推荐群聊 */
1002
+ recommendGroup(groupId: number): Promise<void>;
1003
+ /** 获取 AI 语音角色列表 */
1004
+ getAiCharacters(): Promise<{
1005
+ type: string;
1006
+ characters: {
1007
+ character_id: string;
1008
+ character_name: string;
1009
+ preview_url: string;
1010
+ }[];
1011
+ }[]>;
1012
+ /** AI 文字转语音 */
1013
+ getAiRecord(characterId: string, text: string): Promise<string>;
1014
+ /** 群聊发送 AI 语音 */
1015
+ sendGroupAiRecord(groupId: number, characterId: string, text: string): Promise<void>;
1016
+ /** 签名小程序卡片(如 B 站分享卡片) */
1017
+ getMiniAppArk(app: string, bizSrc: string, meta: any): Promise<{
1018
+ data: {
1019
+ ver: string;
1020
+ prompt: string;
1021
+ config: {
1022
+ type: string;
1023
+ width: number;
1024
+ height: number;
1025
+ forward: number;
1026
+ autoSize: number;
1027
+ ctime: number;
1028
+ token: string;
1029
+ };
1030
+ app: string;
1031
+ view: string;
1032
+ meta: {
1033
+ detail_1: {
1034
+ appid: string;
1035
+ appType: number;
1036
+ title: string;
1037
+ desc: string;
1038
+ icon: string;
1039
+ preview: string;
1040
+ url: string;
1041
+ scene: number;
1042
+ host: {
1043
+ uin: number;
1044
+ nick: string;
1045
+ };
1046
+ shareTemplateId: string;
1047
+ shareTemplateData: {
1048
+ [key: string]: number;
1049
+ };
1050
+ showLittleTail: string;
1051
+ gamePoints: string;
1052
+ gamePointsUrl: string;
1053
+ shareOrigin: number;
1054
+ };
1055
+ };
1056
+ miniappShareOrigin: number;
1057
+ miniappOpenRefer: string;
1058
+ } | {
1059
+ appName: string;
1060
+ appView: string;
1061
+ ver: string;
1062
+ desc: string;
1063
+ prompt: string;
1064
+ metaData: {
1065
+ detail_1: {
1066
+ appid: string;
1067
+ appType: number;
1068
+ title: string;
1069
+ desc: string;
1070
+ icon: string;
1071
+ preview: string;
1072
+ url: string;
1073
+ scene: number;
1074
+ host: {
1075
+ uin: number;
1076
+ nick: string;
1077
+ };
1078
+ shareTemplateId: string;
1079
+ shareTemplateData: {
1080
+ [key: string]: number;
1081
+ };
1082
+ showLittleTail: string;
1083
+ gamePoints: string;
1084
+ gamePointsUrl: string;
1085
+ shareOrigin: number;
1086
+ };
1087
+ };
1088
+ config: {
1089
+ type: string;
1090
+ width: number;
1091
+ height: number;
1092
+ forward: number;
1093
+ autoSize: number;
1094
+ ctime: number;
1095
+ token: string;
1096
+ };
1097
+ };
1098
+ }>;
1099
+ /** 获取 bot 运行状态 */
1100
+ getStatus(): Promise<{
1101
+ online: boolean;
1102
+ good: true;
1103
+ stat: {};
1104
+ }>;
1105
+ /** 获取 napcat 版本信息 */
1106
+ getVersionInfo(): Promise<{
1107
+ app_name: "NapCat.Onebot";
1108
+ protocol_version: "v11";
1109
+ app_version: string;
1110
+ }>;
1111
+ /** 获取 Cookies */
1112
+ getCookies(domain: string): Promise<{
1113
+ cookies: string;
1114
+ bkn: string;
1115
+ }>;
1116
+ /** 获取 CSRF Token */
1117
+ getCsrfToken(): Promise<{
1118
+ token: number;
1119
+ }>;
1120
+ /** 获取 QQ 相关接口凭证 (cookies + csrf_token) */
1121
+ getCredentials(): Promise<{
1122
+ cookies: string;
1123
+ token: number;
1124
+ }>;
1125
+ /** 检查是否可以发送图片 */
1126
+ canSendImage(): Promise<{
1127
+ yes: true;
1128
+ }>;
1129
+ /** 检查是否可以发送语音 */
1130
+ canSendRecord(): Promise<{
1131
+ yes: true;
1132
+ }>;
1133
+ /** 清理缓存 */
1134
+ cleanCache(): Promise<void>;
1135
+ /** 获取 Rkey */
1136
+ getRkey(): Promise<{
1137
+ rkey: string;
1138
+ ttl: string;
1139
+ time: number;
1140
+ type: number;
1141
+ }[]>;
1142
+ /** 获取 PacketServer 状态 */
1143
+ getPacketStatus(): Promise<undefined>;
1144
+ /** 获取机器人 QQ 号区间 */
1145
+ getRobotUinRange(): Promise<{
1146
+ minUin: string;
1147
+ maxUin: string;
1148
+ }[]>;
1149
+ /** 设置在线状态 */
1150
+ setOnlineStatus(status: number, extStatus?: number, batteryStatus?: number): Promise<void>;
1151
+ /** 设置 QQ 资料 */
1152
+ setQQProfile(nickname: string, personalNote?: string, sex?: number): Promise<void>;
1153
+ /** 设置 QQ 头像,file 支持本地路径/base64/URL */
1154
+ setQQAvatar(file: string): Promise<void>;
1155
+ /**
1156
+ * 设置输入状态("正在输入…")
1157
+ * @param userId - QQ 号
1158
+ * @param eventType - 状态类型(具体值参考 napcat 文档)
1159
+ */
1160
+ setInputStatus(userId: number, eventType: number): Promise<void>;
1161
+ /** 对事件执行快速操作(隐藏 API) */
1162
+ handleQuickOperation(context: any, operation: any): Promise<void>;
1163
+ }