@karinjs/adapter-qqbot 1.2.10 → 2.0.0

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.
Files changed (65) hide show
  1. package/README.md +326 -85
  2. package/dist/apps/login.d.ts +20 -0
  3. package/dist/apps/login.js +57 -0
  4. package/dist/config-H7LrvlNU.js +197 -0
  5. package/dist/index.d.ts +670 -0
  6. package/dist/index.js +2847 -0
  7. package/dist/onboard-BX8g8Wik.js +249 -0
  8. package/dist/utils-DO4gEkVN.js +3 -0
  9. package/dist/web.config.d.ts +22 -0
  10. package/dist/web.config.js +173 -0
  11. package/package.json +34 -21
  12. package/config/comment/config.json +0 -3
  13. package/config/config/config.yaml +0 -53
  14. package/lib/cli/pr.d.ts +0 -2
  15. package/lib/cli/pr.js +0 -73
  16. package/lib/core/adapter/adapter.d.ts +0 -91
  17. package/lib/core/adapter/adapter.js +0 -144
  18. package/lib/core/adapter/handler.d.ts +0 -49
  19. package/lib/core/adapter/handler.js +0 -140
  20. package/lib/core/adapter/markdown.d.ts +0 -38
  21. package/lib/core/adapter/markdown.js +0 -220
  22. package/lib/core/adapter/normal.d.ts +0 -30
  23. package/lib/core/adapter/normal.js +0 -263
  24. package/lib/core/api/index.d.ts +0 -167
  25. package/lib/core/api/index.js +0 -180
  26. package/lib/core/api/sign.d.ts +0 -22
  27. package/lib/core/api/sign.js +0 -40
  28. package/lib/core/api/types.d.ts +0 -236
  29. package/lib/core/api/types.js +0 -1
  30. package/lib/core/event/conver.d.ts +0 -10
  31. package/lib/core/event/conver.js +0 -57
  32. package/lib/core/event/index.d.ts +0 -9
  33. package/lib/core/event/index.js +0 -98
  34. package/lib/core/event/message.d.ts +0 -27
  35. package/lib/core/event/message.js +0 -95
  36. package/lib/core/event/notice.d.ts +0 -50
  37. package/lib/core/event/notice.js +0 -133
  38. package/lib/core/event/types.d.ts +0 -473
  39. package/lib/core/event/types.js +0 -1
  40. package/lib/core/internal/axios.d.ts +0 -25
  41. package/lib/core/internal/axios.js +0 -46
  42. package/lib/core/internal/sign.d.ts +0 -22
  43. package/lib/core/internal/sign.js +0 -40
  44. package/lib/core/webhook/c2c.d.ts +0 -2
  45. package/lib/core/webhook/c2c.js +0 -14
  46. package/lib/core/webhook/http.d.ts +0 -2
  47. package/lib/core/webhook/http.js +0 -35
  48. package/lib/core/webhook/index.d.ts +0 -17
  49. package/lib/core/webhook/index.js +0 -87
  50. package/lib/core/webhook/ws.d.ts +0 -2
  51. package/lib/core/webhook/ws.js +0 -79
  52. package/lib/index.d.ts +0 -1
  53. package/lib/index.js +0 -5
  54. package/lib/root.d.ts +0 -5
  55. package/lib/root.js +0 -9
  56. package/lib/types/config.d.ts +0 -53
  57. package/lib/types/config.js +0 -1
  58. package/lib/utils/common.d.ts +0 -80
  59. package/lib/utils/common.js +0 -198
  60. package/lib/utils/config.d.ts +0 -9
  61. package/lib/utils/config.js +0 -54
  62. package/lib/utils/dir.d.ts +0 -1
  63. package/lib/utils/dir.js +0 -1
  64. package/lib/utils/index.d.ts +0 -4
  65. package/lib/utils/index.js +0 -4
@@ -0,0 +1,670 @@
1
+ import { AdapterBase, AdapterType, Contact, CreateGroupFolderResponse, DownloadFileOptions, DownloadFileResponse, ElementTypes, ForwardOptions, GetAiCharactersResponse, GetAtAllCountResponse, GetGroupFileListResponse, GetGroupFileSystemInfoResponse, GetGroupHighlightsResponse, GetGroupMuteListResponse, GetRkeyResponse, GroupInfo, GroupMemberInfo, LogMethodNames, Message, MessageResponse, NodeElement, QQGroupHonorInfo, SendMsgResults, UserInfo, karinToQQBot } from "node-karin";
2
+ import FormData from "form-data";
3
+ import * as _$node_karin_axios0 from "node-karin/axios";
4
+
5
+ //#region src/core/api/types.d.ts
6
+ /** 上传富媒体文件场景 */
7
+ type Scene = 'user' | 'group';
8
+ /** 上传富媒体文件类型 */
9
+ type MediaType = 'image' | 'video' | 'record' | 'file';
10
+ /** 发送QQ消息请求参数基类 */
11
+ interface SendQQMessageRequest {
12
+ /** 消息类型:0 是文本,2 是 markdown, 3 ark,4 embed,7 media 富媒体 */
13
+ msg_type: 0 | 2 | 3 | 4 | 7;
14
+ }
15
+ /** 消息引用对象 */
16
+ interface MessageReference {
17
+ /** 需要引用回复的消息 id */
18
+ message_id: string;
19
+ /** 是否忽略获取引用消息详情错误,默认否 */
20
+ ignore_get_message_error?: boolean;
21
+ }
22
+ /** 发送QQ被动消息参数 */
23
+ interface QQMessageID {
24
+ /** 前置收到的事件 ID,用于发送被动消息,支持事件:"INTERACTION_CREATE"、"C2C_MSG_RECEIVE"、"FRIEND_ADD" */
25
+ event_id?: string;
26
+ /** 前置收到的用户发送过来的消息 ID,用于发送被动(回复)消息 */
27
+ msg_id?: string;
28
+ /** 回复消息的序号,与 msg_id 联合使用,避免相同消息id回复重复发送,不填默认是1。相同的 msg_id + msg_seq 重复发送会失败。 */
29
+ msg_seq?: number;
30
+ /** 指明发送消息为互动召回消息,与 msg_id,event_id 互斥使用 */
31
+ is_wakeup?: boolean;
32
+ /** 引用消息对象,QQ单聊和群聊场景均支持 */
33
+ message_reference?: MessageReference;
34
+ }
35
+ /** 发送QQ文本消息请求参数 */
36
+ interface SendQQTextMessageRequest extends SendQQMessageRequest, QQMessageID {
37
+ msg_type: 0;
38
+ /**
39
+ * 消息内容 支持如下内嵌格式
40
+ * - `<qqbot-at-user id="" />` `@用户` **注意双引号不能省略**
41
+ * - `<qqbot-at-everyone />` `@所有人`
42
+ */
43
+ content: string;
44
+ }
45
+ /** markdown 消息结构(官方已全量开放原生 markdown,2.0 不再支持模板模式) */
46
+ interface Markdown {
47
+ /** markdown 文本 */
48
+ content: string;
49
+ }
50
+ /** 按钮消息结构(官方已全量开放自定义 keyboard,2.0 不再支持模板按钮) */
51
+ interface Keyboard {
52
+ content: {
53
+ rows: ReturnType<typeof karinToQQBot>;
54
+ };
55
+ }
56
+ /** 发送QQ Markdown 消息请求参数 */
57
+ interface SendQQMarkdownMessageRequest extends SendQQMessageRequest, QQMessageID {
58
+ msg_type: 2;
59
+ /**
60
+ * markdown 消息内容 支持如下内嵌格式
61
+ * - `<qqbot-cmd-enter text="xxx" />` `回车按钮: 点击后,文本直接发送`
62
+ * - `<qqbot-cmd-input text="xxx" show="xxx" reference="false" />` `点击后,文本输入框弹出`
63
+ * - `text 用户点击后插入输入框的文本,参数必填,最大限制 100 字符,传值时需要 urlencode`
64
+ * - `show 用户在消息内看到的文本,参数选填,默认取 text 值,最大限制 100 字符,传值时需要 urlencode。`
65
+ * - `reference 插入输入框时是否带消息原文回复引用,参数选填,默认为 false,填入 true 时则带引用回复到输入框中。`
66
+ *
67
+ * {@link https://bot.q.qq.com/wiki/develop/api-v2/server-inter/message/trans/text-chain.html}
68
+ */
69
+ markdown: Markdown;
70
+ /** 按钮 */
71
+ keyboard?: Keyboard;
72
+ }
73
+ /** 发送QQ Ark 消息请求参数 */
74
+ interface SendQQArkMessageRequest extends SendQQMessageRequest, QQMessageID {
75
+ msg_type: 3;
76
+ /** ark 消息内容 */
77
+ ark: {
78
+ /** ark 模版id */template_id: number; /** 模版内变量与填充值的kv映射 tips: 未经测试 先any */
79
+ kv: any[];
80
+ };
81
+ }
82
+ /** 发送QQ Embed 消息请求参数 文档没看到发送接口 */
83
+ /** 发送QQ Media 消息请求参数 */
84
+ interface SendQQMediaMessageRequest extends SendQQMessageRequest, QQMessageID {
85
+ msg_type: 7;
86
+ /** media 消息内容 */
87
+ media: {
88
+ /** 文件信息,用于发消息接口的 media 字段使用 */file_info: string;
89
+ };
90
+ /** 当 msg_type = 7 时,content 字段需要填入一个值,譬如一个空格 “ ”,后续版本会修复该问题。 */
91
+ content: string;
92
+ }
93
+ /** 发送QQ消息请求参数 */
94
+ type SendQQMsg = SendQQTextMessageRequest | SendQQMarkdownMessageRequest | SendQQArkMessageRequest | SendQQMediaMessageRequest;
95
+ /** 发送频道被动消息参数 */
96
+ interface SendGuildMessageID {
97
+ /** 消息ID */
98
+ msg_id?: string;
99
+ /** 事件id */
100
+ event_id?: string;
101
+ /** 引用消息对象 */
102
+ message_reference?: MessageReference;
103
+ }
104
+ /** 发送频道引用消息参数 */
105
+ interface SendGuildQuoteMessage {
106
+ /** 引用消息的ID */
107
+ message_id?: string;
108
+ /** 是否忽略获取引用消息详情错误,默认否 */
109
+ ignore_get_message_error?: boolean;
110
+ }
111
+ /** 发送频道消息请求参数基类 */
112
+ interface SendGuildMessageRequest {
113
+ /** 单独加一个类型 用于区分不同的消息类型 */
114
+ type: 'text' | 'image' | 'embed' | 'ark' | 'markdown';
115
+ }
116
+ /** 发送频道 文本 消息请求参数 */
117
+ interface SendGuildTextMessageRequest extends SendGuildMessageID, SendGuildQuoteMessage, SendGuildMessageRequest {
118
+ type: 'text';
119
+ /**
120
+ * 消息内容 支持如下内嵌格式
121
+ * - `<@user_id>` `@用户`
122
+ * - `@everyone` `@所有人`
123
+ * - `<#channel_id>` `#子频道`
124
+ * - `<emoji:id>` `表情`
125
+ */
126
+ content: string;
127
+ /** 图片url地址 */
128
+ image?: string;
129
+ }
130
+ /** 发送频道 图片 消息请求参数 */
131
+ interface SendGuildImageMessageRequest extends SendGuildMessageID, SendGuildQuoteMessage, SendGuildMessageRequest {
132
+ type: 'image';
133
+ /** 图片url地址 */
134
+ image: string;
135
+ }
136
+ /** embeds消息结构 */
137
+ interface Embeds {
138
+ /** 标题 */
139
+ title: string;
140
+ /** 消息弹窗内容 */
141
+ prompt: string;
142
+ /** 缩略图 */
143
+ thumbnail: {
144
+ /** 图片地址 */url: string;
145
+ };
146
+ /** embed 字段数据 */
147
+ fields: Record<string, any>[];
148
+ }
149
+ /** 发送频道 embed 消息请求参数 */
150
+ interface SendGuildEmbedMessageRequest extends SendGuildMessageID, SendGuildMessageRequest {
151
+ type: 'embed';
152
+ /** embed 消息内容 */
153
+ embed: Embeds;
154
+ }
155
+ /** ark消息结构 */
156
+ interface Ark {
157
+ /** 模版id */
158
+ template_id: number;
159
+ /** 模版内变量与填充值的kv映射 */
160
+ kv: {
161
+ key: string;
162
+ value: string; /** 这个嵌套是认真的嘛... */
163
+ obj: {
164
+ obj_kv: {
165
+ key: string;
166
+ value: string;
167
+ }[];
168
+ }[];
169
+ }[];
170
+ }
171
+ /** 发送频道 ark 消息请求参数 */
172
+ interface SendGuildArkMessageRequest extends SendGuildMessageID, SendGuildMessageRequest {
173
+ type: 'ark';
174
+ /** ark 消息内容 */
175
+ ark: Ark;
176
+ }
177
+ /** 发送频道 markdown 消息请求参数 */
178
+ interface SendGuildMarkdownMessageRequest extends SendGuildMessageID, SendGuildMessageRequest {
179
+ type: 'markdown';
180
+ /** markdown 消息内容 */
181
+ markdown: Markdown;
182
+ /** 按钮 */
183
+ keyboard?: Keyboard;
184
+ }
185
+ /** 发送频道消息请求参数 */
186
+ type SendGuildMsg = SendGuildTextMessageRequest | SendGuildImageMessageRequest | SendGuildEmbedMessageRequest | SendGuildArkMessageRequest | SendGuildMarkdownMessageRequest;
187
+ /** 获取当前机器人详情接口响应 */
188
+ interface GetMeResponse {
189
+ /** 机器人的频道ID */
190
+ id: string;
191
+ /** 机器人的昵称 */
192
+ username: string;
193
+ /** 用户头像 */
194
+ avatar: string;
195
+ /** 特殊关联应用的 openid */
196
+ union_openid: string;
197
+ /** 机器人关联的互联应用的用户信息 */
198
+ union_user_account: string;
199
+ /** 机器人的分享url */
200
+ share_url: string;
201
+ /** 机器人介绍 */
202
+ welcome_msg: string;
203
+ }
204
+ /** 创建私信会话接口响应 */
205
+ interface DmsResponse {
206
+ /** 频道ID 用于私信会话使用 */
207
+ guild_id: string;
208
+ /** 子频道ID 用于私信会话使用 */
209
+ channel_id: string;
210
+ /** 创建时间 */
211
+ create_time: string;
212
+ }
213
+ /** 发送QQ消息后响应 */
214
+ interface SendQQMsgResponse {
215
+ /** 消息唯一 ID */
216
+ id: string;
217
+ /** 发送时间 */
218
+ timestamp: number;
219
+ }
220
+ /** 发送频道消息后响应 */
221
+ interface SendGuildResponse {
222
+ /** 消息唯一 ID */
223
+ id: string;
224
+ /** 发送时间 ISO8601 timestamp */
225
+ timestamp: string;
226
+ }
227
+ /** 上传富媒体文件响应 */
228
+ interface UploadMediaResponse {
229
+ /** 文件 ID */
230
+ file_uuid: string;
231
+ /** 文件信息,用于发消息接口的 media 字段使用 */
232
+ file_info: string;
233
+ /** 有效期,表示剩余多少秒到期,到期后 file_info 失效,当等于 0 时,表示可长期使用 */
234
+ ttl: number;
235
+ /** 发送消息的唯一ID,当srv_send_msg设置为true时返回 */
236
+ id: string;
237
+ }
238
+ //#endregion
239
+ //#region src/core/internal/axios.d.ts
240
+ /**
241
+ * 创建 axios 实例,自动从 tokens map 取最新 access_token
242
+ */
243
+ declare const createAxiosInstance: (baseURL: string, appId: string) => _$node_karin_axios0.AxiosInstance;
244
+ //#endregion
245
+ //#region src/core/api/http.d.ts
246
+ type AxiosInstance = ReturnType<typeof createAxiosInstance>;
247
+ /**
248
+ * Http 基础类,子模块继承此类共享 axios 实例与错误格式化
249
+ */
250
+ declare class Http {
251
+ readonly axios: AxiosInstance;
252
+ constructor(axios: AxiosInstance);
253
+ protected get<T>(path: string): Promise<T>;
254
+ protected post<T>(path: string, body?: unknown, headers?: Record<string, string>): Promise<T>;
255
+ protected put<T>(path: string, body?: unknown, headers?: Record<string, string>): Promise<T>;
256
+ protected delete<T>(path: string): Promise<T>;
257
+ }
258
+ //#endregion
259
+ //#region src/core/api/messages.d.ts
260
+ /**
261
+ * 消息发送 + 撤回
262
+ */
263
+ declare class MessagesApi extends Http {
264
+ /** 单聊消息 */
265
+ sendFriendMsg(openid: string, body: SendQQMsg): Promise<SendQQMsgResponse>;
266
+ /** 群聊消息 */
267
+ sendGroupMsg(groupOpenid: string, body: SendQQMsg): Promise<SendQQMsgResponse>;
268
+ /** 文字子频道消息 */
269
+ sendChannelMsg(channelId: string, body: SendGuildMsg | FormData): Promise<SendGuildResponse>;
270
+ /**
271
+ * 频道私信消息
272
+ * - 单参 (guildId, body):guildId 已知
273
+ * - 双参 (recipientId, srcGuildId, body):先创建会话再发送
274
+ */
275
+ sendDmsMsg(guildId: string, body: SendGuildMsg | FormData): Promise<SendGuildResponse>;
276
+ sendDmsMsg(recipientId: string, srcGuildId: string, body: SendGuildMsg | FormData): Promise<SendGuildResponse>;
277
+ /**
278
+ * 撤回消息
279
+ * - 'user' / 'group' 对应 QQ 单聊 / 群聊
280
+ * - 'channels' / 'dms' 对应频道 / 频道私信,支持 hidetip
281
+ */
282
+ recall(type: 'user' | 'group', peer: string, messageId: string): Promise<true>;
283
+ recall(type: 'channels' | 'dms', peer: string, messageId: string, hidetip?: boolean): Promise<true>;
284
+ }
285
+ //#endregion
286
+ //#region src/core/api/media.d.ts
287
+ /**
288
+ * 富媒体上传
289
+ */
290
+ declare class MediaApi extends Http {
291
+ /**
292
+ * @param scene user(单聊) / group(群聊)
293
+ * @param peer openid 或 group_openid
294
+ * @param type 文件类型
295
+ * @param source 必须是 http url 或 base64 字符串
296
+ * @param srvSendMsg 上传后是否由服务端直接发送
297
+ */
298
+ upload(scene: Scene, peer: string, type: MediaType, source: string, srvSendMsg?: boolean): Promise<UploadMediaResponse>;
299
+ }
300
+ //#endregion
301
+ //#region src/core/api/interaction.d.ts
302
+ /** ack 返回码 */
303
+ type AckCode = 0 | 1 | 2 | 3 | 4 | 5;
304
+ /**
305
+ * INTERACTION_CREATE 回应
306
+ */
307
+ declare class InteractionApi extends Http {
308
+ /**
309
+ * @param interactionId INTERACTION_CREATE 事件中的 id
310
+ * @param code 0 成功 / 1 操作失败 / 2 操作频繁 / 3 重复操作 / 4 无权限 / 5 仅管理员
311
+ */
312
+ ack(interactionId: string, code?: AckCode): Promise<void>;
313
+ }
314
+ //#endregion
315
+ //#region src/core/api/meta.d.ts
316
+ /**
317
+ * 元信息接口:@me / dms / gateway
318
+ */
319
+ declare class MetaApi extends Http {
320
+ /** 当前机器人详情 */
321
+ getMe(): Promise<GetMeResponse>;
322
+ /** 创建频道私信会话 */
323
+ createDms(recipientId: string, srcGuildId: string): Promise<DmsResponse>;
324
+ /** 获取通用 WSS 地址 */
325
+ getGateway(): Promise<{
326
+ url: string;
327
+ }>;
328
+ }
329
+ //#endregion
330
+ //#region src/core/api/index.d.ts
331
+ /**
332
+ * QQBot 官方 API 门面
333
+ *
334
+ * 子模块按职能拆分:
335
+ * - messages:发送 / 撤回
336
+ * - media:富媒体上传
337
+ * - interaction:按钮回调 ack
338
+ * - meta:@me / dms / gateway
339
+ *
340
+ * 请求体构造器 {@link buildQQMsg} / {@link buildGuildMsg} 独立导出,避免与 HTTP 调用耦合
341
+ */
342
+ declare class QQBotApi {
343
+ readonly axios: AxiosInstance;
344
+ readonly messages: MessagesApi;
345
+ readonly media: MediaApi;
346
+ readonly interaction: InteractionApi;
347
+ readonly meta: MetaApi;
348
+ /** 请求体构造器(静态便利) */
349
+ readonly qq: {
350
+ text(content: string): SendQQTextMessageRequest;
351
+ markdown(markdown: Markdown, keyboard?: Keyboard): SendQQMarkdownMessageRequest;
352
+ ark(ark: SendQQArkMessageRequest["ark"]): SendQQArkMessageRequest;
353
+ media(fileInfo: string): SendQQMediaMessageRequest;
354
+ };
355
+ readonly guild: {
356
+ text(content: string, image?: string): SendGuildTextMessageRequest;
357
+ image(image: string): SendGuildImageMessageRequest;
358
+ embed(embed: Embeds): SendGuildEmbedMessageRequest;
359
+ ark(ark: Ark): SendGuildArkMessageRequest;
360
+ markdown(markdown: Markdown, keyboard?: Keyboard): SendGuildMarkdownMessageRequest;
361
+ };
362
+ constructor(axios: AxiosInstance);
363
+ }
364
+ //#endregion
365
+ //#region src/types/config.d.ts
366
+ /**
367
+ * 单个 QQBot 配置
368
+ */
369
+ interface QQBotConfig {
370
+ /** 机器人名称 */
371
+ name: string;
372
+ /** 机器人 ID */
373
+ appId: string;
374
+ /** 机器人密钥 */
375
+ secret: string;
376
+ /** 正式环境 API */
377
+ prodApi: string;
378
+ /** 测试环境 API */
379
+ sandboxApi: string;
380
+ /** 调用凭证 API */
381
+ tokenApi: string;
382
+ /** 开启沙盒环境 */
383
+ sandbox: boolean;
384
+ /** 开启 QQ 场景能力(单聊 / 群聊) */
385
+ qqEnable: boolean;
386
+ /** 开启频道场景能力 */
387
+ guildEnable: boolean;
388
+ /** 频道场景模式 0 公域 / 1 私域 */
389
+ guildMode: 0 | 1;
390
+ /** 收到消息后对文本进行表达式处理 */
391
+ regex: {
392
+ reg: string | RegExp;
393
+ rep: string;
394
+ }[];
395
+ /** 按钮自动化 */
396
+ keyboard: {
397
+ /** 是否将文本中的 URL 自动转换为 keyboard 按钮 */enable: boolean;
398
+ };
399
+ /** 事件接收配置 */
400
+ event: {
401
+ /** 接收方式 0 关闭 / 1 webhook / 2 ws */type: 0 | 1 | 2;
402
+ };
403
+ }
404
+ //#endregion
405
+ //#region src/core/adapter/base.d.ts
406
+ /**
407
+ * QQ Official Bot 适配器
408
+ *
409
+ * 全场景统一走 msg_type=2 Markdown 通道(详见 pipeline-qq / pipeline-guild)。
410
+ * 视频 / 语音 / 文件由 pipeline 内部以 msg_type=7 紧随主消息补发。
411
+ */
412
+ declare class AdapterQQBot extends AdapterBase implements AdapterType {
413
+ /** 与官方 API 交互 */
414
+ super: QQBotApi;
415
+ /** 当前 bot 配置 */
416
+ cfg: QQBotConfig;
417
+ /** openId / member_openid -> 昵称 缓存 */
418
+ nicknameCache: Map<string, string>;
419
+ constructor(cfg: QQBotConfig, api: QQBotApi);
420
+ logger(level: LogMethodNames, ...args: any[]): void;
421
+ /**
422
+ * 主消息回复入口(karin 调用)
423
+ */
424
+ srcReply(e: Message, elements: ElementTypes[]): Promise<SendMsgResults>;
425
+ /**
426
+ * 发送消息
427
+ */
428
+ sendMsg(contact: Contact, elements: Array<ElementTypes>, _retryCount?: number): Promise<SendMsgResults>;
429
+ /**
430
+ * 撤回消息
431
+ */
432
+ recallMsg(contact: Contact, messageId: string): Promise<void>;
433
+ /**
434
+ * 构造空发送结果,pipeline 内填充 rawData
435
+ */
436
+ initSendMsgResults(): SendMsgResults;
437
+ /**
438
+ * 将 rawData[0].id / timestamp 同步到顶层字段
439
+ */
440
+ handleResponse(data: SendMsgResults): SendMsgResults;
441
+ /**
442
+ * 发送长消息
443
+ */
444
+ sendLongMsg(_contact: Contact, _resId: string): Promise<SendMsgResults>;
445
+ /**
446
+ * 发送合并转发消息
447
+ *
448
+ * 将 NodeElement 拆解为文本 + 图片等元素,拼接成 markdown 发送。
449
+ * 节点之间仅用换行隔开,不添加任何前缀提示文本。
450
+ */
451
+ sendForwardMsg(contact: Contact, elements: Array<NodeElement>, _options?: ForwardOptions): Promise<{
452
+ messageId: string;
453
+ forwardId: string;
454
+ }>;
455
+ /**
456
+ * 获取头像 url
457
+ */
458
+ getAvatarUrl(_userId: string, _size?: 0 | 40 | 100 | 140): Promise<string>;
459
+ /**
460
+ * 获取群头像 url
461
+ */
462
+ getGroupAvatarUrl(_groupId: string, _size?: 0 | 40 | 100 | 140, _history?: number): Promise<string>;
463
+ /**
464
+ * 获取消息
465
+ */
466
+ getMsg(_contact: Contact | string, _messageId?: string): Promise<MessageResponse>;
467
+ /**
468
+ * 获取历史消息(通过消息 ID)
469
+ */
470
+ getHistoryMsg(_contact: Contact, _startMsgId: string, _count: number): Promise<Array<MessageResponse>>;
471
+ /**
472
+ * 获取历史消息(通过消息序列号)
473
+ */
474
+ getHistoryMsg(_contact: Contact, _startMsgSeq: number, _count: number): Promise<Array<MessageResponse>>;
475
+ /**
476
+ * 获取合并转发消息
477
+ */
478
+ getForwardMsg(_resId: string): Promise<Array<MessageResponse>>;
479
+ /**
480
+ * 获取精华消息
481
+ */
482
+ getGroupHighlights(_groupId: string, _page: number, _pageSize: number): Promise<Array<GetGroupHighlightsResponse>>;
483
+ /**
484
+ * 构造资源 ID
485
+ */
486
+ createResId(_contact: Contact, _elements: Array<NodeElement>): Promise<string>;
487
+ /**
488
+ * 设置、取消群精华消息
489
+ */
490
+ setGroupHighlights(_groupId: string, _messageId: string, _create: boolean): Promise<void>;
491
+ /**
492
+ * 发送好友赞
493
+ */
494
+ sendLike(_targetId: string, _count: number): Promise<void>;
495
+ /**
496
+ * 群踢人
497
+ */
498
+ groupKickMember(_groupId: string, _targetId: string, _rejectAddRequest?: boolean, _kickReason?: string): Promise<void>;
499
+ /**
500
+ * 禁言群成员
501
+ */
502
+ setGroupMute(_groupId: string, _targetId: string, _duration: number): Promise<void>;
503
+ /**
504
+ * 群全员禁言
505
+ */
506
+ setGroupAllMute(_groupId: string, _isBan: boolean): Promise<void>;
507
+ /**
508
+ * 设置群管理员
509
+ */
510
+ setGroupAdmin(_groupId: string, _targetId: string, _isAdmin: boolean): Promise<void>;
511
+ /**
512
+ * 设置群名片
513
+ */
514
+ setGroupMemberCard(_groupId: string, _targetId: string, _card: string): Promise<void>;
515
+ /**
516
+ * 设置群名
517
+ */
518
+ setGroupName(_groupId: string, _groupName: string): Promise<void>;
519
+ /**
520
+ * 退出群组
521
+ */
522
+ setGroupQuit(_groupId: string, _isDismiss: boolean): Promise<void>;
523
+ /**
524
+ * 设置群专属头衔
525
+ */
526
+ setGroupMemberTitle(_groupId: string, _targetId: string, _title: string): Promise<void>;
527
+ /**
528
+ * 获取陌生人信息
529
+ */
530
+ getStrangerInfo(_targetId: string): Promise<UserInfo>;
531
+ /**
532
+ * 获取好友列表
533
+ */
534
+ getFriendList(_refresh?: boolean): Promise<Array<UserInfo>>;
535
+ /**
536
+ * 获取群信息
537
+ */
538
+ getGroupInfo(_groupId: string, _noCache?: boolean): Promise<GroupInfo>;
539
+ /**
540
+ * 获取群列表
541
+ */
542
+ getGroupList(_refresh?: boolean): Promise<Array<GroupInfo>>;
543
+ /**
544
+ * 获取群成员信息
545
+ */
546
+ getGroupMemberInfo(_groupId: string, _targetId: string, _refresh?: boolean): Promise<GroupMemberInfo>;
547
+ /**
548
+ * 获取群成员列表
549
+ */
550
+ getGroupMemberList(_groupId: string, _refresh?: boolean): Promise<Array<GroupMemberInfo>>;
551
+ /**
552
+ * 获取群荣誉信息
553
+ */
554
+ getGroupHonor(_groupId: string): Promise<Array<QQGroupHonorInfo>>;
555
+ /**
556
+ * 设置好友请求结果
557
+ */
558
+ setFriendApplyResult(_requestId: string, _isApprove: boolean, _remark?: string): Promise<void>;
559
+ /**
560
+ * 设置申请加入群请求结果
561
+ */
562
+ setGroupApplyResult(_requestId: string, _isApprove: boolean, _denyReason?: string): Promise<void>;
563
+ /**
564
+ * 设置邀请加入群请求结果
565
+ */
566
+ setInvitedJoinGroupResult(_requestId: string, _isApprove: boolean): Promise<void>;
567
+ /**
568
+ * 设置消息表情回应
569
+ */
570
+ setMsgReaction(_contact: Contact, _messageId: string, _faceId: number | string, _isSet: boolean): Promise<void>;
571
+ /**
572
+ * 上传群文件、私聊文件
573
+ */
574
+ uploadFile(_contact: Contact, _file: string, _name: string, _folder?: string): Promise<void>;
575
+ /**
576
+ * 下载文件到协议端本地
577
+ */
578
+ downloadFile(_options?: DownloadFileOptions): Promise<DownloadFileResponse>;
579
+ /**
580
+ * 创建群文件夹
581
+ */
582
+ createGroupFolder(_groupId: string, _name: string): Promise<CreateGroupFolderResponse>;
583
+ /**
584
+ * 重命名群文件夹
585
+ */
586
+ renameGroupFolder(_groupId: string, _folderId: string, _name: string): Promise<boolean>;
587
+ /**
588
+ * 删除群文件夹
589
+ */
590
+ delGroupFolder(_groupId: string, _folderId: string): Promise<boolean>;
591
+ /**
592
+ * 上传群文件
593
+ */
594
+ uploadGroupFile(_groupId: string, _file: string, _name?: string): Promise<boolean>;
595
+ /**
596
+ * 获取文件 url
597
+ */
598
+ getFileUrl(_contact: Contact, _fileId: string): Promise<string>;
599
+ /**
600
+ * 删除群文件
601
+ */
602
+ delGroupFile(_groupId: string, _fileId: string, _busId: number): Promise<boolean>;
603
+ /**
604
+ * 获取群文件系统信息
605
+ */
606
+ getGroupFileSystemInfo(_groupId: string): Promise<GetGroupFileSystemInfoResponse>;
607
+ /**
608
+ * 获取群文件夹下文件列表
609
+ */
610
+ getGroupFileList(_groupId: string, _folderId?: string): Promise<GetGroupFileListResponse>;
611
+ /**
612
+ * 设置群备注
613
+ */
614
+ setGroupRemark(_groupId: string, _remark: string): Promise<boolean>;
615
+ /**
616
+ * 获取陌生群信息
617
+ */
618
+ getNotJoinedGroupInfo(_groupId: string): Promise<GroupInfo>;
619
+ /**
620
+ * 获取艾特全体成员剩余次数
621
+ */
622
+ getAtAllCount(_groupId: string): Promise<GetAtAllCountResponse>;
623
+ /**
624
+ * 获取群被禁言用户列表
625
+ */
626
+ getGroupMuteList(_groupId: string): Promise<Array<GetGroupMuteListResponse>>;
627
+ /**
628
+ * 戳一戳用户
629
+ */
630
+ pokeUser(_contact: Contact, _targetId: string, _count?: number): Promise<boolean>;
631
+ /**
632
+ * 获取 Cookies
633
+ */
634
+ getCookies(_domain: string): Promise<{
635
+ cookie: string;
636
+ }>;
637
+ /**
638
+ * 获取 QQ 相关接口凭证
639
+ */
640
+ getCredentials(_domain: string): Promise<{
641
+ cookies: string;
642
+ csrf_token: number;
643
+ }>;
644
+ /**
645
+ * 获取 CSRF Token
646
+ */
647
+ getCSRFToken(): Promise<{
648
+ token: number;
649
+ }>;
650
+ /**
651
+ * 设置头像
652
+ */
653
+ setAvatar(_file: string): Promise<void>;
654
+ /**
655
+ * 获取 rkey
656
+ */
657
+ getRkey(): Promise<Array<GetRkeyResponse>>;
658
+ /**
659
+ * 获取群 Ai 语音可用声色列表
660
+ */
661
+ getAiCharacters(): Promise<Array<GetAiCharactersResponse>>;
662
+ /**
663
+ * 设置群 Ai 语音声色
664
+ */
665
+ sendAiCharacter(_groupId: string, _characterId: string, _text: string): Promise<{
666
+ messageId: string;
667
+ }>;
668
+ }
669
+ //#endregion
670
+ export { type AdapterQQBot };