oicq-icalingua-plus-plus 1.26.26 → 1.26.28

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.
package/http-api/api.js CHANGED
@@ -6,6 +6,18 @@ let bot;
6
6
  class NotFoundError extends Error {}
7
7
 
8
8
  const available_actions = [
9
+ "getFavoriteList",
10
+ "getFavorite",
11
+ "addFavorite",
12
+ "editFavorite",
13
+ "deleteFavorite",
14
+ "getFavoriteGroups",
15
+ "addFavoriteGroup",
16
+ "editFavoriteGroup",
17
+ "deleteFavoriteGroup",
18
+ "setFavoriteGroup",
19
+ "getFavoriteSpace",
20
+
9
21
  "sendPrivateMsg",
10
22
  "sendGroupMsg",
11
23
  "sendDiscussMsg",
package/index.d.ts CHANGED
@@ -54,9 +54,12 @@ export interface ConfBot {
54
54
  /** 强制使用算法计算T544,而不使用qsign(算法为8.9.50的0C05,混用版本可能导致风控) */
55
55
  force_algo_T544?: boolean,
56
56
 
57
- /** 使用NT上线包,部分消息暂未支持 */
57
+ /** 使用 NT 上线包,部分消息暂未支持 */
58
58
  useNT?: boolean,
59
59
 
60
+ /** 使用 NT 协议上传图片,默认 false,运行时修改从下一次上传生效 */
61
+ useNTImage?: boolean,
62
+
60
63
  /** 强制使用旧版WT登录,即使当前APK支持NT登录 */
61
64
  forceWt?: boolean,
62
65
 
@@ -220,7 +223,7 @@ export interface MemberInfo extends MemberBaseInfo {
220
223
  export type MessageElem = TextElem | AtElem | FaceElem | BfaceElem | MfaceElem |
221
224
  ImgPttElem | LocationElem | MusicElem | ShareElem | JsonElem | XmlElem |
222
225
  AnonymousElem | ReplyElem | NodeElem | ShakeElem | PokeElem | FileElem | VideoElem |
223
- MiraiElem | RawElem | MarkdownElem | ButtonElem;
226
+ MiraiElem | RawElem | MarkdownElem | ButtonElem | FlashTransferElem;
224
227
 
225
228
  export type Sendable = string | MessageElem | Iterable<MessageElem | string>
226
229
 
@@ -257,9 +260,10 @@ export interface BfaceElem {
257
260
  type: "bface",
258
261
  data: {
259
262
  file: string,
260
- text: string
263
+ text: string,
261
264
  width?: number,
262
265
  height?: number,
266
+ type?: "png" | "gif",
263
267
  }
264
268
  }
265
269
 
@@ -293,6 +297,7 @@ export interface ImgPttElem {
293
297
  headers?: OutgoingHttpHeaders, //file为网络资源时请求头
294
298
  url?: string, //仅接收
295
299
  type?: "image" | "flash" | "face",
300
+ brief?: string, //传统语音预览文案
296
301
  }
297
302
  }
298
303
 
@@ -415,6 +420,23 @@ export interface MarkdownElem {
415
420
  }
416
421
  }
417
422
 
423
+ /** 收到的 QQ 闪传卡片;发送请使用 sendFlashTransferMsg 或 FlashTransfer.send。 */
424
+ export interface FlashTransferElem {
425
+ type: "qfile";
426
+ data: {
427
+ fileset_id: string;
428
+ name?: string;
429
+ file_size?: number | string;
430
+ expire_time?: number | string;
431
+ summary?: string;
432
+ thumbnail?: {
433
+ fileid: string;
434
+ url: string;
435
+ urls: { type: number; url: string }[];
436
+ };
437
+ };
438
+ }
439
+
418
440
  /** Markdown按钮消息 */
419
441
  export interface ButtonElem {
420
442
  type: "button",
@@ -895,6 +917,165 @@ export class Gfs {
895
917
  download(fid: string): Promise<FileElem["data"]>;
896
918
  }
897
919
 
920
+ ////////// QQ flash transfer
921
+
922
+ export interface FlashTransferOptions {
923
+ /** 单次 HTTP 请求超时,单位毫秒,默认 30000 */
924
+ timeout?: number;
925
+ }
926
+
927
+ export interface FlashTransferCreateOptions {
928
+ /** 有效期,单位秒,默认 7 天;服务端仍可能受账号配额限制 */
929
+ duration?: number;
930
+ /** 计划上传的普通文件总数,默认 1;upload 会按实际文件自动填写 */
931
+ total_file_count?: number;
932
+ /** 计划上传的总字节数,默认 0;upload 会自动填写 */
933
+ total_file_size?: number;
934
+ /** 顶层文件及目录的数量,默认与文件总数相同;upload 会自动填写 */
935
+ first_level_item_count?: number;
936
+ }
937
+
938
+ export interface FlashTransferTask {
939
+ fileset_id: string;
940
+ task_id: string;
941
+ share_link: string;
942
+ expire_time: number;
943
+ expire_left_time: number;
944
+ }
945
+
946
+ export interface FlashTransferMetadata {
947
+ cli_fileid: string;
948
+ name: string;
949
+ file_size: number | string;
950
+ parent_id?: string;
951
+ is_dir?: boolean;
952
+ cli_file_index?: number;
953
+ depth?: number;
954
+ file_type?: number;
955
+ /** 普通文件必需,十六进制摘要;目录无需填写 */
956
+ md5?: string;
957
+ sha1?: string;
958
+ is_cover?: boolean;
959
+ /** 目录直属子项数,普通文件为 0 */
960
+ file_count?: number;
961
+ }
962
+
963
+ export type FlashTransferUploadInput = MediaFile | { file: MediaFile; name?: string };
964
+
965
+ export interface FlashTransferUploadSource {
966
+ name: string;
967
+ size: number;
968
+ md5: Buffer | string;
969
+ sha1: Buffer | string;
970
+ }
971
+
972
+ /** 由 applyUpload 返回,保留服务端的 IndexNode、存储参数和业务透传信息。 */
973
+ export interface FlashTransferUploadTicket {
974
+ upload: Record<number, any>;
975
+ info: Record<number, any>;
976
+ ukey: string;
977
+ app_type: number;
978
+ /** sliceupload 使用的存储 appid */
979
+ appid: number;
980
+ biz_trans_info: Buffer;
981
+ storage_type: number;
982
+ storage_info: Buffer;
983
+ }
984
+
985
+ export interface FlashTransferUploadResult extends FlashTransferTask {
986
+ files: FlashTransferFile[];
987
+ }
988
+
989
+ export interface FlashTransferMessageTarget {
990
+ type: "private" | "group";
991
+ /** 私聊接受 QQ 号(需已有 UID 缓存)或 u_ 开头的 UID;群聊接受群号 */
992
+ target: number | string;
993
+ }
994
+
995
+ export interface FlashTransferMessageStatus {
996
+ /** 服务端返回的目标:私聊为 UID,群号保留十进制字符串 */
997
+ target: FlashTransferMessageTarget;
998
+ result: number;
999
+ message: string;
1000
+ }
1001
+
1002
+ export interface FlashTransferFile {
1003
+ name: string;
1004
+ file_size: number | string;
1005
+ srv_fileid: string;
1006
+ cli_fileid: string;
1007
+ sha1?: string;
1008
+ physical: {
1009
+ id: string;
1010
+ [key: string]: any;
1011
+ };
1012
+ [key: string]: any;
1013
+ }
1014
+
1015
+ export interface FlashTransferPage {
1016
+ file_list: FlashTransferFile[];
1017
+ is_end: boolean;
1018
+ pagination_info: string;
1019
+ [key: string]: any;
1020
+ }
1021
+
1022
+ export interface FlashTransferDownload {
1023
+ url: string;
1024
+ [key: string]: any;
1025
+ }
1026
+
1027
+ /** 与 Gfs 一样,以下方法会 reject;控制接口保留官网的 snake_case 字段。 */
1028
+ export class FlashTransfer {
1029
+ private constructor();
1030
+ /** 分享码或 https://qfile.qq.com/q/... 链接转换为文件集 ID */
1031
+ resolve(code: string): Promise<string>;
1032
+ /** 原生创建文件集,需要在线客户端;保留 task_id 用于完成提交 */
1033
+ create(name: string, options?: FlashTransferCreateOptions): Promise<FlashTransferTask>;
1034
+ /** 完整上传文件、目录或二进制数据,需要在线客户端;进度参数为数据传输百分比 */
1035
+ upload(files: FlashTransferUploadInput | FlashTransferUploadInput[], name?: string, callback?: (percentage: string) => void, options?: FlashTransferCreateOptions): Promise<FlashTransferUploadResult>;
1036
+ /** 分批登记目录及已计算摘要的文件,返回顺序与请求一致 */
1037
+ addFiles(task: Pick<FlashTransferTask, "fileset_id" | "task_id">, files: FlashTransferMetadata[]): Promise<FlashTransferFile[]>;
1038
+ /** 底层上传申请;文件必须是 addFiles 返回的节点,source 提供其名称、大小及摘要 */
1039
+ applyUpload(task: Pick<FlashTransferTask, "fileset_id">, file: FlashTransferFile, source: FlashTransferUploadSource): Promise<FlashTransferUploadTicket>;
1040
+ /** 分片上传或秒传成功后同步单个文件,随后才能提交整个任务 */
1041
+ completeFile(ticket: FlashTransferUploadTicket): Promise<void>;
1042
+ /** 文件级完成同步之后提交整个任务,参数是 task_id */
1043
+ submit(task_id: string): Promise<void>;
1044
+ /** 由服务端生成并发送原生闪传卡片;任一目标失败则 reject,Error.send_status 保留全部结果 */
1045
+ send(fileset_id: string, targets: FlashTransferMessageTarget | FlashTransferMessageTarget[]): Promise<FlashTransferMessageStatus[]>;
1046
+ /** 查询文件集信息 */
1047
+ stat(fileset_id: string): Promise<Record<string, any>>;
1048
+ /** 查询目录的一页文件;pagination_info 使用服务端游标,count 为 1–100 */
1049
+ dir(fileset_id: string, parent_id?: string, pagination_info?: string, count?: number): Promise<FlashTransferPage>;
1050
+ /** 按服务端游标逐页遍历当前目录 */
1051
+ files(fileset_id: string, parent_id?: string): AsyncGenerator<FlashTransferFile>;
1052
+ /** 查询多个文件集的传输进度 */
1053
+ progress(fileset_ids: string[]): Promise<Record<string, any>>;
1054
+ /** 按 srv_fileid 查询文件集内指定文件的传输进度 */
1055
+ fileProgress(fileset_id: string, srv_fileids: string[]): Promise<Record<string, any>>;
1056
+ /** 查询指定目录的文件分类信息 */
1057
+ category(fileset_id: string, parent_id?: string): Promise<Record<string, any>>;
1058
+ /** 设置用户完成官方验证码后取得的 ticket 和 randstr,供下载请求使用 */
1059
+ setCaptcha(ticket: string, randstr: string): void;
1060
+ /** 参数可以是文件元数据,或 physical.id(不是 srv_fileid) */
1061
+ getDownloadUrl(file: FlashTransferFile | string): Promise<FlashTransferDownload>;
1062
+ /** 批量获取下载信息,每批最多 30 个文件,返回顺序与输入一致 */
1063
+ getDownloadUrls(files: (FlashTransferFile | string)[]): Promise<FlashTransferDownload[]>;
1064
+ /** 下载到指定路径,验证大小和可用的 SHA1,不覆盖已有文件 */
1065
+ download(file: FlashTransferFile | string, target: string, callback?: (percentage: string) => void): Promise<{
1066
+ path: string;
1067
+ size: number;
1068
+ sha1: string;
1069
+ }>;
1070
+ /** 底层 sliceupload 数据面;自动申请凭证并提交整个任务请使用 upload */
1071
+ uploadFile(file: MediaFile, ukey: string, appid: number, name?: string, callback?: (percentage: string) => void): Promise<{
1072
+ name: string;
1073
+ size: number;
1074
+ md5: string;
1075
+ sha1: string;
1076
+ }>;
1077
+ }
1078
+
898
1079
  //////////
899
1080
 
900
1081
  export type Domain = "tenpay.com"
@@ -911,6 +1092,7 @@ export type Domain = "tenpay.com"
911
1092
  | "openmobile.qq.com"
912
1093
  | "qun.qq.com"
913
1094
  | "ti.qq.com"
1095
+ | "weiyun.com"
914
1096
  | "";
915
1097
 
916
1098
  export interface Sig {
@@ -1060,6 +1242,290 @@ export interface EventMap {
1060
1242
  "internal.input": (this: Client, data: { user_id: number, end: boolean }) => void;
1061
1243
  }
1062
1244
 
1245
+ ////////// QQ favorites
1246
+
1247
+ /** 收藏中的 uint64:安全整数返回 number,超出安全范围返回十进制字符串。 */
1248
+ export type FavoriteInteger = number | string;
1249
+
1250
+ export interface FavoriteCollection {
1251
+ cid: string;
1252
+ type?: number;
1253
+ status?: number;
1254
+ author?: FavoriteAuthor;
1255
+ bid?: number;
1256
+ src_app_id?: number;
1257
+ src_app_ver?: string;
1258
+ category?: number;
1259
+ create_time?: FavoriteInteger;
1260
+ collect_time?: FavoriteInteger;
1261
+ modify_time?: FavoriteInteger;
1262
+ sequence?: FavoriteInteger;
1263
+ biz_key?: string;
1264
+ biz_data_list: string[]; /** Base64 编码的原始字节。 */
1265
+ summary?: FavoriteCollectionSummary;
1266
+ star_mark?: boolean;
1267
+ star_time?: FavoriteInteger;
1268
+ share_url?: string;
1269
+ original_app_id?: number;
1270
+ custom_group_id?: number;
1271
+ security_beat?: number;
1272
+ qzone_ugc_key?: string;
1273
+ }
1274
+
1275
+ export interface FavoriteAuthor {
1276
+ type?: number;
1277
+ num_id?: FavoriteInteger;
1278
+ str_id?: string;
1279
+ group_id?: FavoriteInteger;
1280
+ group_name?: string;
1281
+ }
1282
+
1283
+ export interface FavoriteCollectionSummary {
1284
+ text_summary?: FavoriteTextSummary;
1285
+ link_summary?: FavoriteLinkSummary;
1286
+ gallery_summary?: FavoriteGallerySummary;
1287
+ audio_summary?: FavoriteAudioSummary;
1288
+ video_summary?: FavoriteVideoSummary;
1289
+ file_summary?: FavoriteFileSummary;
1290
+ location_summary?: FavoriteLocationSummary;
1291
+ rich_media_summary?: FavoriteRichMediaSummary;
1292
+ }
1293
+
1294
+ export interface FavoriteTextSummary {
1295
+ brief?: string;
1296
+ has_emoji?: boolean;
1297
+ }
1298
+
1299
+ export interface FavoriteLinkSummary {
1300
+ uri?: string;
1301
+ title?: string;
1302
+ publisher?: string;
1303
+ brief?: string;
1304
+ pic_list: FavoritePicInfo[];
1305
+ type?: number;
1306
+ resource_uri?: string;
1307
+ }
1308
+
1309
+ export interface FavoritePicInfo {
1310
+ uri?: string;
1311
+ md5?: string; /** Base64 编码的原始字节。 */
1312
+ sha1?: string; /** Base64 编码的原始字节。 */
1313
+ name?: string;
1314
+ note?: string;
1315
+ width?: number;
1316
+ height?: number;
1317
+ size?: number;
1318
+ type?: number;
1319
+ owner?: FavoriteAuthor;
1320
+ pic_id?: string;
1321
+ }
1322
+
1323
+ export interface FavoriteGallerySummary {
1324
+ pic_list: FavoritePicInfo[];
1325
+ notes?: string;
1326
+ }
1327
+
1328
+ export interface FavoriteAudioSummary {
1329
+ duration?: number;
1330
+ stt?: string;
1331
+ note?: string;
1332
+ }
1333
+
1334
+ export interface FavoriteVideoSummary {
1335
+ title?: string;
1336
+ duration?: number;
1337
+ format?: number;
1338
+ category?: number;
1339
+ preview_type?: number;
1340
+ preview_pic_info?: FavoritePicInfo;
1341
+ store_type?: number;
1342
+ store_file_info?: FavoriteFileInfo;
1343
+ }
1344
+
1345
+ export interface FavoriteFileInfo {
1346
+ src?: number;
1347
+ uid?: FavoriteInteger;
1348
+ bid?: number;
1349
+ fid?: string;
1350
+ name?: string;
1351
+ size?: FavoriteInteger;
1352
+ md5?: string; /** Base64 编码的原始字节。 */
1353
+ sha1?: string; /** Base64 编码的原始字节。 */
1354
+ category?: number;
1355
+ }
1356
+
1357
+ export interface FavoriteFileSummary {
1358
+ file_info?: FavoriteFileInfo;
1359
+ src_file_info?: FavoriteFileInfo;
1360
+ }
1361
+
1362
+ export interface FavoriteLocationSummary {
1363
+ name?: string;
1364
+ latitude?: number;
1365
+ longitude?: number;
1366
+ altitude?: number;
1367
+ address?: string;
1368
+ note?: string;
1369
+ }
1370
+
1371
+ export interface FavoriteRichMediaSummary {
1372
+ title?: string;
1373
+ sub_title?: string;
1374
+ brief?: string;
1375
+ pic_list: FavoritePicInfo[];
1376
+ content_type?: number;
1377
+ original_uri?: string;
1378
+ publisher?: string;
1379
+ rich_media_version?: number;
1380
+ }
1381
+
1382
+ export interface FavoriteCollectionContent {
1383
+ text_content?: FavoriteTextContent;
1384
+ link_content?: FavoriteLinkContent;
1385
+ gallery_content?: FavoriteGalleryContent;
1386
+ audio_content?: FavoriteAudioContent;
1387
+ video_content?: FavoriteVideoContent;
1388
+ file_content?: FavoriteFileContent;
1389
+ location_content?: FavoriteLocationContent;
1390
+ rich_media_content?: FavoriteRichMediaContent;
1391
+ }
1392
+
1393
+ export interface FavoriteTextContent {
1394
+ data?: string;
1395
+ has_emoji?: boolean;
1396
+ }
1397
+
1398
+ export interface FavoriteLinkContent {
1399
+ }
1400
+
1401
+ export interface FavoriteGalleryContent {
1402
+ }
1403
+
1404
+ export interface FavoriteAudioContent {
1405
+ data?: string; /** Base64 编码的原始字节。 */
1406
+ }
1407
+
1408
+ export interface FavoriteVideoContent {
1409
+ }
1410
+
1411
+ export interface FavoriteFileContent {
1412
+ }
1413
+
1414
+ export interface FavoriteLocationContent {
1415
+ }
1416
+
1417
+ export interface FavoriteRichMediaContent {
1418
+ rich_media?: FavoriteRichMedia;
1419
+ raw_data?: string; /** Base64 编码的原始字节。 */
1420
+ biz_data_list: string[]; /** Base64 编码的原始字节。 */
1421
+ pic_list: FavoritePicInfo[];
1422
+ file_list: FavoriteFileInfo[];
1423
+ }
1424
+
1425
+ export interface FavoriteRichMedia {
1426
+ sections: FavoriteSection[];
1427
+ }
1428
+
1429
+ export interface FavoriteSection {
1430
+ items: FavoriteItem[];
1431
+ }
1432
+
1433
+ export interface FavoriteItem {
1434
+ item_type?: number;
1435
+ parag?: FavoriteParagraph;
1436
+ anchor?: FavoriteAnchor;
1437
+ pic_info?: FavoritePicInfo;
1438
+ }
1439
+
1440
+ export interface FavoriteParagraph {
1441
+ content?: string;
1442
+ style?: FavoriteStyle;
1443
+ }
1444
+
1445
+ export interface FavoriteStyle {
1446
+ color?: string;
1447
+ font_family?: string;
1448
+ font_weight?: string;
1449
+ font_size?: string;
1450
+ }
1451
+
1452
+ export interface FavoriteAnchor {
1453
+ url?: string;
1454
+ desc?: string;
1455
+ }
1456
+
1457
+ export interface FavoriteCollectionFullInfo {
1458
+ collection: FavoriteCollection;
1459
+ content?: FavoriteCollectionContent;
1460
+ /** 富文本 content_type 为 1/2 时,解压后的 HTML。 */
1461
+ html?: string;
1462
+ }
1463
+
1464
+ export interface FavoriteGetCollectionListMsgRsp {
1465
+ collection_list: FavoriteCollection[];
1466
+ total_count?: number;
1467
+ result?: number;
1468
+ }
1469
+
1470
+ export interface FavoriteGetCollectionFullInfoMsgRsp {
1471
+ collection_full_info_list: FavoriteCollectionFullInfo[];
1472
+ }
1473
+
1474
+ export interface FavoriteCustomGroupInfo {
1475
+ custom_group_id?: number;
1476
+ name?: string;
1477
+ create_time?: number;
1478
+ modify_time?: number;
1479
+ total_count?: number;
1480
+ }
1481
+
1482
+ export interface FavoriteGetCustomGroupMsgRsp {
1483
+ modi_groupid_time?: number;
1484
+ total_count?: number;
1485
+ modi_group_time?: number;
1486
+ customgroupinfo_list: FavoriteCustomGroupInfo[];
1487
+ max_group_count?: number;
1488
+ }
1489
+
1490
+ export interface FavoriteGetCollectorUserInfoRsp {
1491
+ toatal_space?: FavoriteInteger;
1492
+ used_space?: FavoriteInteger;
1493
+ }
1494
+
1495
+ export interface FavoriteListOptions {
1496
+ type?: number;
1497
+ bid?: number;
1498
+ category?: number;
1499
+ /** 毫秒时间戳。 */
1500
+ start_time?: number;
1501
+ start_pos?: number;
1502
+ /** 1~100,默认 20。 */
1503
+ page_size?: number;
1504
+ order_type?: 0 | 1;
1505
+ sync_policy?: number;
1506
+ }
1507
+ export type FavoriteInput = ({ type?: "text"; text: string } |
1508
+ { type: "link"; url: string; title?: string; publisher?: string; brief?: string } |
1509
+ { type: "rich"; html: string; title?: string; brief?: string }) & {
1510
+ bid?: number; category?: number; custom_group_id?: number;
1511
+ };
1512
+ export interface FavoriteChanges {
1513
+ text?: string;
1514
+ html?: string;
1515
+ url?: string;
1516
+ title?: string;
1517
+ publisher?: string;
1518
+ brief?: string;
1519
+ category?: number;
1520
+ custom_group_id?: number;
1521
+ star_mark?: boolean;
1522
+ }
1523
+ export interface FavoriteItemResults {
1524
+ /** 批量请求可能部分失败,必须检查 success 和每项 result。 */
1525
+ success: boolean;
1526
+ results: { id: string | number; result: number }[];
1527
+ }
1528
+
1063
1529
  /**
1064
1530
  * 方法不会reject或抛出异常,使用retcode判断是否成功
1065
1531
  * @see {Ret}
@@ -1141,6 +1607,15 @@ export class Client extends EventEmitter {
1141
1607
  /** 私聊 */
1142
1608
  sendPrivateMsg(user_id: number, message: Sendable, auto_escape?: boolean): Promise<Ret<{ message_id: string }>>;
1143
1609
  sendFile(user_id: number, file: MediaFile, name?: string, process?: (percentage: string) => void): Promise<Ret<{ message_id: string }>>;
1610
+ /** 发送原生闪传卡片;group=true 为群聊,返回逐目标状态,不提供 message_id */
1611
+ sendFlashTransferMsg(recv_id: number | string, fileset_id: string, group?: boolean): Promise<Ret<{
1612
+ fileset_id: string;
1613
+ send_status: FlashTransferMessageStatus[];
1614
+ }>>;
1615
+ /** 上传单个文件或数组到同一文件集并发送闪传卡片;name为单文件名或批量文件集名称,group=true为群聊,不提供message_id */
1616
+ sendFlashTransferFile(recv_id: number | string, file: MediaFile | MediaFile[], group?: boolean, name?: string, process?: (percentage: string) => void): Promise<Ret<FlashTransferUploadResult & {
1617
+ send_status: FlashTransferMessageStatus[];
1618
+ }>>;
1144
1619
  /** 群聊 */
1145
1620
  sendGroupMsg(group_id: number, message: Sendable, auto_escape?: boolean): Promise<Ret<{ message_id: string }>>;
1146
1621
  /** 群临时会话,大多数时候可以使用私聊达到同样效果 */
@@ -1288,6 +1763,88 @@ export class Client extends EventEmitter {
1288
1763
  /** 进入群文件系统 */
1289
1764
  acquireGfs(group_id: number): Gfs;
1290
1765
 
1766
+ //----------QQ 收藏----------
1767
+ /**
1768
+ * 获取一页 QQ 收藏摘要,需要登录票据包含 weiyun.com 的 p_skey。
1769
+ * @param options 筛选条件及分页参数;默认每页 20 条,时间使用毫秒。
1770
+ * @returns 当前页收藏列表、总数及同步状态;result=215000 表示部分同步。
1771
+ */
1772
+ getFavoriteList(options?: FavoriteListOptions): Promise<Ret<FavoriteGetCollectionListMsgRsp>>;
1773
+
1774
+ /**
1775
+ * 获取指定收藏的完整元数据和正文。
1776
+ * @param cid 收藏 ID。
1777
+ * @returns 收藏信息和正文;富文本 content_type 为 1/2 时额外返回解码后的 html。
1778
+ */
1779
+ getFavorite(cid: string): Promise<Ret<FavoriteCollectionFullInfo>>;
1780
+
1781
+ /**
1782
+ * 增加文本、链接或 HTML 收藏。
1783
+ * @param favorite 收藏内容;字符串按纯文本处理,对象可指定类型及所属分组。
1784
+ * @returns 新收藏的 cid 与 collect_time。
1785
+ */
1786
+ addFavorite(favorite: FavoriteInput | string): Promise<Ret<{ cid: string; collect_time: FavoriteInteger }>>;
1787
+
1788
+ /**
1789
+ * 编辑收藏,先读取详情再合并指定字段,保留其余元数据和资源。
1790
+ * @param cid 收藏 ID。
1791
+ * @param changes 需要修改的字段;type=1 支持文本正文,type=6 支持链接字段,type=8 支持 HTML。
1792
+ * @returns 收藏 ID 与修改时间;其他类型支持元数据编辑。
1793
+ */
1794
+ editFavorite(cid: string, changes: FavoriteChanges): Promise<Ret<{ cid: string; modify_time: FavoriteInteger }>>;
1795
+
1796
+ /**
1797
+ * 删除收藏,单次支持 1~10 项。
1798
+ * @param cid 单个收藏 ID 或收藏 ID 列表。
1799
+ * @returns 整体 success 与逐项 result;协议请求成功时仍可能存在部分失败。
1800
+ */
1801
+ deleteFavorite(cid: string | string[]): Promise<Ret<FavoriteItemResults>>;
1802
+
1803
+ /**
1804
+ * 获取收藏分组及分组同步信息。
1805
+ * @returns 分组列表、数量、同步时间及分组数量上限。
1806
+ */
1807
+ getFavoriteGroups(): Promise<Ret<FavoriteGetCustomGroupMsgRsp>>;
1808
+
1809
+ /**
1810
+ * 增加收藏分组。
1811
+ * @param name 非空分组名称。
1812
+ * @returns 新分组 ID 与创建时间。
1813
+ */
1814
+ addFavoriteGroup(name: string): Promise<Ret<{ custom_group_id: number; create_time: number }>>;
1815
+
1816
+ /**
1817
+ * 修改收藏分组名称。
1818
+ * @param custom_group_id 分组 ID。
1819
+ * @param name 新的非空分组名称。
1820
+ * @returns 分组修改时间。
1821
+ */
1822
+ editFavoriteGroup(custom_group_id: number, name: string): Promise<Ret<{ modify_time: number }>>;
1823
+
1824
+ /**
1825
+ * 删除收藏分组,单次支持 1~10 项。
1826
+ * @param custom_group_id 单个分组 ID 或分组 ID 列表。
1827
+ * @returns 删除时间、整体 success 与逐项 result;需检查部分失败。
1828
+ */
1829
+ deleteFavoriteGroup(custom_group_id: number | number[]): Promise<Ret<FavoriteItemResults & { del_time?: number }>>;
1830
+
1831
+ /**
1832
+ * 设置收藏的所属分组,单次支持 1~10 条收藏。
1833
+ * @param cid 单个收藏 ID 或收藏 ID 列表。
1834
+ * @param custom_group_id 目标分组 ID。
1835
+ * @returns 整体 success 与逐项 result;需检查部分失败。
1836
+ */
1837
+ setFavoriteGroup(cid: string | string[], custom_group_id: number): Promise<Ret<FavoriteItemResults>>;
1838
+
1839
+ /**
1840
+ * 获取收藏空间使用情况。
1841
+ * @returns 空间总量 total_space 与已用量 used_space,单位为字节。
1842
+ */
1843
+ getFavoriteSpace(): Promise<Ret<{ total_space: FavoriteInteger; used_space: FavoriteInteger }>>;
1844
+
1845
+ /** 进入 QQ 闪传协议接口 */
1846
+ acquireFlashTransfer(options?: FlashTransferOptions): FlashTransfer;
1847
+
1291
1848
  on<T extends keyof EventMap>(event: T, listener: EventMap[T]): this;
1292
1849
  on<S extends string | symbol>(event: S & Exclude<S, keyof EventMap>, listener: (this: Client, ...args: any[]) => void): this;
1293
1850