@tencent-connect/openclaw-qqbot 1.7.2 → 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 (291) hide show
  1. package/README.md +25 -8
  2. package/README.zh.md +24 -8
  3. package/bin/qqbot-cli.js +5 -2
  4. package/dist/index.cjs +15549 -0
  5. package/dist/index.cjs.map +1 -0
  6. package/dist/index.d.cts +890 -0
  7. package/index.ts +56 -19
  8. package/openclaw.plugin.json +19 -3
  9. package/package.json +14 -23
  10. package/preload.cjs +17 -14
  11. package/scripts/link-sdk-core.cjs +133 -50
  12. package/scripts/upgrade-via-npm.sh +42 -11
  13. package/scripts/upgrade-via-source.sh +4 -4
  14. package/skills/qqbot-channel/SKILL.md +34 -12
  15. package/src/adapter/contract.ts +69 -0
  16. package/src/adapter/gateway.ts +61 -0
  17. package/src/adapter/index.ts +15 -0
  18. package/src/adapter/lint.ts +144 -0
  19. package/src/adapter/media.ts +112 -0
  20. package/src/adapter/pairing.ts +99 -0
  21. package/src/adapter/resolve.ts +333 -0
  22. package/src/adapter/setup.ts +55 -0
  23. package/src/adapter/webhook.ts +248 -0
  24. package/src/adapter/workspace.ts +29 -0
  25. package/src/bot-instance.ts +60 -0
  26. package/src/channel.ts +202 -413
  27. package/src/commands/bot-approve.ts +143 -0
  28. package/src/commands/bot-clear-storage.ts +114 -0
  29. package/src/commands/bot-group-always.ts +62 -0
  30. package/src/commands/bot-help.ts +40 -0
  31. package/src/commands/bot-logs.ts +248 -0
  32. package/src/commands/bot-me.ts +18 -0
  33. package/src/commands/bot-pairing.ts +57 -0
  34. package/src/commands/bot-ping.ts +33 -0
  35. package/src/commands/bot-streaming.ts +55 -0
  36. package/src/commands/bot-upgrade.ts +56 -0
  37. package/src/commands/bot-version.ts +41 -0
  38. package/src/commands/config-util.ts +96 -0
  39. package/src/commands/index.ts +49 -0
  40. package/src/config.ts +46 -19
  41. package/src/dispatch/body-assembler.ts +356 -0
  42. package/src/dispatch/ctx-builder.ts +110 -0
  43. package/src/dispatch/dispatch.ts +352 -0
  44. package/src/dispatch/envelope-builder.ts +112 -0
  45. package/src/dispatch/index.ts +2 -0
  46. package/src/{approval-handler.ts → features/approval-handler.ts} +40 -94
  47. package/src/features/approval-utils.ts +41 -0
  48. package/src/features/credential-backup.ts +82 -0
  49. package/src/features/history-store.ts +19 -0
  50. package/src/features/msgid-cache.ts +55 -0
  51. package/src/features/onboarding.ts +38 -0
  52. package/src/{proactive.ts → features/proactive.ts} +68 -49
  53. package/src/features/ref-index-store.ts +282 -0
  54. package/src/{update-checker.ts → features/update-checker.ts} +15 -35
  55. package/src/gateway/event-handlers.ts +241 -0
  56. package/src/gateway/index.ts +3 -0
  57. package/src/gateway/lifecycle.ts +221 -0
  58. package/src/gateway/middleware-setup.ts +139 -0
  59. package/src/gateway/qqbot-gateway.ts +342 -0
  60. package/src/middleware/access-control.ts +130 -0
  61. package/src/middleware/attachment.ts +314 -0
  62. package/src/middleware/policy-injector.ts +66 -0
  63. package/src/openclaw-plugin-sdk.d.ts +81 -10
  64. package/src/outbound/cron-scheduler.ts +130 -0
  65. package/src/outbound/debounce.ts +102 -0
  66. package/src/outbound/deliver-pipeline.ts +235 -0
  67. package/src/outbound/image-size.ts +123 -0
  68. package/src/outbound/index.ts +3 -0
  69. package/src/outbound/local-file-router.ts +145 -0
  70. package/src/outbound/media-send.ts +377 -0
  71. package/src/outbound/outbound-service.ts +222 -0
  72. package/src/outbound/reply-limiter.ts +128 -0
  73. package/src/outbound/sanitize.ts +32 -0
  74. package/src/outbound/streaming-controller.ts +228 -0
  75. package/src/outbound/target.ts +63 -0
  76. package/src/outbound/tts-provider.ts +84 -0
  77. package/src/request-context.ts +9 -8
  78. package/src/runtime.ts +31 -6
  79. package/src/setup/account-key.ts +41 -0
  80. package/src/setup/finalize.ts +110 -0
  81. package/src/setup/login.ts +197 -0
  82. package/src/setup/surface.ts +40 -0
  83. package/src/tools/platform.ts +149 -0
  84. package/src/tools/remind.ts +2 -0
  85. package/src/types-augment.d.ts +54 -0
  86. package/src/types.ts +51 -9
  87. package/src/utils/mention.ts +52 -0
  88. package/src/utils/pkg-version.ts +84 -47
  89. package/src/utils/platform.ts +31 -7
  90. package/src/utils/plugin-logger.ts +104 -0
  91. package/src/utils/ssrf-guard.ts +32 -2
  92. package/src/utils/stt.ts +137 -0
  93. package/src/utils/voice-text.ts +61 -0
  94. package/tsconfig.json +2 -1
  95. package/tsup.config.ts +57 -0
  96. package/dist/index.d.ts +0 -18
  97. package/dist/index.js +0 -27
  98. package/dist/src/admin-resolver.d.ts +0 -33
  99. package/dist/src/admin-resolver.js +0 -157
  100. package/dist/src/api.d.ts +0 -309
  101. package/dist/src/api.js +0 -923
  102. package/dist/src/approval-handler.d.ts +0 -47
  103. package/dist/src/approval-handler.js +0 -372
  104. package/dist/src/channel.d.ts +0 -29
  105. package/dist/src/channel.js +0 -528
  106. package/dist/src/config.d.ts +0 -60
  107. package/dist/src/config.js +0 -288
  108. package/dist/src/credential-backup.d.ts +0 -31
  109. package/dist/src/credential-backup.js +0 -66
  110. package/dist/src/deliver-debounce.d.ts +0 -74
  111. package/dist/src/deliver-debounce.js +0 -174
  112. package/dist/src/gateway.d.ts +0 -18
  113. package/dist/src/gateway.js +0 -2025
  114. package/dist/src/group-history.d.ts +0 -136
  115. package/dist/src/group-history.js +0 -226
  116. package/dist/src/image-server.d.ts +0 -87
  117. package/dist/src/image-server.js +0 -570
  118. package/dist/src/inbound-attachments.d.ts +0 -60
  119. package/dist/src/inbound-attachments.js +0 -248
  120. package/dist/src/known-users.d.ts +0 -100
  121. package/dist/src/known-users.js +0 -263
  122. package/dist/src/message-gating.d.ts +0 -53
  123. package/dist/src/message-gating.js +0 -107
  124. package/dist/src/message-queue.d.ts +0 -91
  125. package/dist/src/message-queue.js +0 -257
  126. package/dist/src/onboarding.d.ts +0 -10
  127. package/dist/src/onboarding.js +0 -203
  128. package/dist/src/outbound-deliver.d.ts +0 -48
  129. package/dist/src/outbound-deliver.js +0 -392
  130. package/dist/src/outbound.d.ts +0 -220
  131. package/dist/src/outbound.js +0 -975
  132. package/dist/src/proactive.d.ts +0 -170
  133. package/dist/src/proactive.js +0 -399
  134. package/dist/src/ref-index-store.d.ts +0 -101
  135. package/dist/src/ref-index-store.js +0 -298
  136. package/dist/src/reply-dispatcher.d.ts +0 -35
  137. package/dist/src/reply-dispatcher.js +0 -311
  138. package/dist/src/request-context.d.ts +0 -25
  139. package/dist/src/request-context.js +0 -37
  140. package/dist/src/runtime.d.ts +0 -3
  141. package/dist/src/runtime.js +0 -13
  142. package/dist/src/session-store.d.ts +0 -52
  143. package/dist/src/session-store.js +0 -254
  144. package/dist/src/slash-commands.d.ts +0 -82
  145. package/dist/src/slash-commands.js +0 -2233
  146. package/dist/src/startup-greeting.d.ts +0 -30
  147. package/dist/src/startup-greeting.js +0 -97
  148. package/dist/src/streaming.d.ts +0 -247
  149. package/dist/src/streaming.js +0 -899
  150. package/dist/src/stt.d.ts +0 -21
  151. package/dist/src/stt.js +0 -70
  152. package/dist/src/tools/channel.d.ts +0 -16
  153. package/dist/src/tools/channel.js +0 -231
  154. package/dist/src/tools/remind.d.ts +0 -2
  155. package/dist/src/tools/remind.js +0 -255
  156. package/dist/src/transport/index.d.ts +0 -10
  157. package/dist/src/transport/index.js +0 -9
  158. package/dist/src/transport/webhook-transport.d.ts +0 -67
  159. package/dist/src/transport/webhook-transport.js +0 -245
  160. package/dist/src/transport/webhook-verify.d.ts +0 -48
  161. package/dist/src/transport/webhook-verify.js +0 -98
  162. package/dist/src/types.d.ts +0 -462
  163. package/dist/src/types.js +0 -22
  164. package/dist/src/typing-keepalive.d.ts +0 -27
  165. package/dist/src/typing-keepalive.js +0 -64
  166. package/dist/src/update-checker.d.ts +0 -36
  167. package/dist/src/update-checker.js +0 -171
  168. package/dist/src/utils/audio-convert.d.ts +0 -98
  169. package/dist/src/utils/audio-convert.js +0 -783
  170. package/dist/src/utils/chunked-upload.d.ts +0 -68
  171. package/dist/src/utils/chunked-upload.js +0 -341
  172. package/dist/src/utils/file-utils.d.ts +0 -61
  173. package/dist/src/utils/file-utils.js +0 -172
  174. package/dist/src/utils/image-size.d.ts +0 -51
  175. package/dist/src/utils/image-size.js +0 -234
  176. package/dist/src/utils/media-send.d.ts +0 -158
  177. package/dist/src/utils/media-send.js +0 -502
  178. package/dist/src/utils/media-tags.d.ts +0 -14
  179. package/dist/src/utils/media-tags.js +0 -165
  180. package/dist/src/utils/payload.d.ts +0 -112
  181. package/dist/src/utils/payload.js +0 -186
  182. package/dist/src/utils/pkg-version.d.ts +0 -5
  183. package/dist/src/utils/pkg-version.js +0 -61
  184. package/dist/src/utils/platform.d.ts +0 -137
  185. package/dist/src/utils/platform.js +0 -390
  186. package/dist/src/utils/ssrf-guard.d.ts +0 -25
  187. package/dist/src/utils/ssrf-guard.js +0 -91
  188. package/dist/src/utils/text-parsing.d.ts +0 -31
  189. package/dist/src/utils/text-parsing.js +0 -74
  190. package/dist/src/utils/upload-cache.d.ts +0 -34
  191. package/dist/src/utils/upload-cache.js +0 -93
  192. package/node_modules/@eshaz/web-worker/LICENSE +0 -201
  193. package/node_modules/@eshaz/web-worker/README.md +0 -134
  194. package/node_modules/@eshaz/web-worker/browser.js +0 -17
  195. package/node_modules/@eshaz/web-worker/cjs/browser.js +0 -16
  196. package/node_modules/@eshaz/web-worker/cjs/node.js +0 -219
  197. package/node_modules/@eshaz/web-worker/index.d.ts +0 -4
  198. package/node_modules/@eshaz/web-worker/node.js +0 -223
  199. package/node_modules/@eshaz/web-worker/package.json +0 -54
  200. package/node_modules/@wasm-audio-decoders/common/index.js +0 -5
  201. package/node_modules/@wasm-audio-decoders/common/package.json +0 -36
  202. package/node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderCommon.js +0 -231
  203. package/node_modules/@wasm-audio-decoders/common/src/WASMAudioDecoderWorker.js +0 -129
  204. package/node_modules/@wasm-audio-decoders/common/src/puff/README +0 -67
  205. package/node_modules/@wasm-audio-decoders/common/src/puff/build_puff.js +0 -31
  206. package/node_modules/@wasm-audio-decoders/common/src/puff/puff.c +0 -863
  207. package/node_modules/@wasm-audio-decoders/common/src/puff/puff.h +0 -35
  208. package/node_modules/@wasm-audio-decoders/common/src/utilities.js +0 -3
  209. package/node_modules/@wasm-audio-decoders/common/types.d.ts +0 -7
  210. package/node_modules/mpg123-decoder/README.md +0 -265
  211. package/node_modules/mpg123-decoder/dist/mpg123-decoder.min.js +0 -185
  212. package/node_modules/mpg123-decoder/dist/mpg123-decoder.min.js.map +0 -1
  213. package/node_modules/mpg123-decoder/index.js +0 -8
  214. package/node_modules/mpg123-decoder/package.json +0 -58
  215. package/node_modules/mpg123-decoder/src/EmscriptenWasm.js +0 -464
  216. package/node_modules/mpg123-decoder/src/MPEGDecoder.js +0 -200
  217. package/node_modules/mpg123-decoder/src/MPEGDecoderWebWorker.js +0 -21
  218. package/node_modules/mpg123-decoder/types.d.ts +0 -30
  219. package/node_modules/silk-wasm/LICENSE +0 -21
  220. package/node_modules/silk-wasm/README.md +0 -85
  221. package/node_modules/silk-wasm/lib/index.cjs +0 -16
  222. package/node_modules/silk-wasm/lib/index.d.ts +0 -70
  223. package/node_modules/silk-wasm/lib/index.mjs +0 -16
  224. package/node_modules/silk-wasm/lib/silk.wasm +0 -0
  225. package/node_modules/silk-wasm/lib/utils.d.ts +0 -4
  226. package/node_modules/silk-wasm/package.json +0 -39
  227. package/node_modules/simple-yenc/.github/FUNDING.yml +0 -1
  228. package/node_modules/simple-yenc/.prettierignore +0 -1
  229. package/node_modules/simple-yenc/LICENSE +0 -7
  230. package/node_modules/simple-yenc/README.md +0 -163
  231. package/node_modules/simple-yenc/dist/esm.js +0 -1
  232. package/node_modules/simple-yenc/dist/index.js +0 -1
  233. package/node_modules/simple-yenc/package.json +0 -50
  234. package/node_modules/simple-yenc/rollup.config.js +0 -27
  235. package/node_modules/simple-yenc/src/simple-yenc.js +0 -302
  236. package/node_modules/ws/LICENSE +0 -20
  237. package/node_modules/ws/README.md +0 -548
  238. package/node_modules/ws/browser.js +0 -8
  239. package/node_modules/ws/index.js +0 -13
  240. package/node_modules/ws/lib/buffer-util.js +0 -131
  241. package/node_modules/ws/lib/constants.js +0 -19
  242. package/node_modules/ws/lib/event-target.js +0 -292
  243. package/node_modules/ws/lib/extension.js +0 -203
  244. package/node_modules/ws/lib/limiter.js +0 -55
  245. package/node_modules/ws/lib/permessage-deflate.js +0 -528
  246. package/node_modules/ws/lib/receiver.js +0 -706
  247. package/node_modules/ws/lib/sender.js +0 -602
  248. package/node_modules/ws/lib/stream.js +0 -161
  249. package/node_modules/ws/lib/subprotocol.js +0 -62
  250. package/node_modules/ws/lib/validation.js +0 -152
  251. package/node_modules/ws/lib/websocket-server.js +0 -554
  252. package/node_modules/ws/lib/websocket.js +0 -1393
  253. package/node_modules/ws/package.json +0 -69
  254. package/node_modules/ws/wrapper.mjs +0 -8
  255. package/scripts/postinstall-link-sdk.js +0 -170
  256. package/skills/qqbot-media/SKILL.md +0 -60
  257. package/src/admin-resolver.ts +0 -181
  258. package/src/api.ts +0 -1333
  259. package/src/credential-backup.ts +0 -72
  260. package/src/deliver-debounce.ts +0 -229
  261. package/src/gateway.ts +0 -2272
  262. package/src/group-history.ts +0 -328
  263. package/src/image-server.ts +0 -675
  264. package/src/inbound-attachments.ts +0 -321
  265. package/src/known-users.ts +0 -353
  266. package/src/message-gating.ts +0 -190
  267. package/src/message-queue.ts +0 -354
  268. package/src/onboarding.ts +0 -282
  269. package/src/outbound-deliver.ts +0 -486
  270. package/src/outbound.ts +0 -1179
  271. package/src/ref-index-store.ts +0 -412
  272. package/src/reply-dispatcher.ts +0 -334
  273. package/src/session-store.ts +0 -303
  274. package/src/slash-commands.ts +0 -2431
  275. package/src/startup-greeting.ts +0 -120
  276. package/src/streaming.ts +0 -1077
  277. package/src/stt.ts +0 -86
  278. package/src/tools/channel.ts +0 -275
  279. package/src/transport/index.ts +0 -11
  280. package/src/transport/webhook-transport.ts +0 -332
  281. package/src/transport/webhook-verify.ts +0 -119
  282. package/src/typing-keepalive.ts +0 -59
  283. package/src/utils/audio-convert.ts +0 -887
  284. package/src/utils/chunked-upload.ts +0 -483
  285. package/src/utils/file-utils.ts +0 -193
  286. package/src/utils/image-size.ts +0 -266
  287. package/src/utils/media-send.ts +0 -636
  288. package/src/utils/media-tags.ts +0 -183
  289. package/src/utils/payload.ts +0 -265
  290. package/src/utils/text-parsing.ts +0 -85
  291. package/src/utils/upload-cache.ts +0 -128
package/dist/src/api.d.ts DELETED
@@ -1,309 +0,0 @@
1
- /**
2
- * QQ Bot API 鉴权和请求封装
3
- * [修复版] 已重构为支持多实例并发,消除全局变量冲突
4
- */
5
- /** API 模块的日志接口,与 GatewayContext.log 对齐 */
6
- export interface ApiLogger {
7
- info: (msg: string) => void;
8
- error: (msg: string) => void;
9
- warn?: (msg: string) => void;
10
- debug?: (msg: string) => void;
11
- }
12
- /**
13
- * 注入自定义 logger(在 gateway 启动时调用,将 api 模块的日志统一接入框架日志系统)
14
- */
15
- export declare function setApiLogger(logger: ApiLogger): void;
16
- /** API 请求错误,携带 HTTP status code 和业务错误码 */
17
- export declare class ApiError extends Error {
18
- readonly status: number;
19
- readonly path: string;
20
- /** 业务错误码(回包中的 code / err_code 字段),不一定存在 */
21
- readonly bizCode?: number | undefined;
22
- /** 回包中的原始 message 字段(用于向用户展示兜底文案) */
23
- readonly bizMessage?: string | undefined;
24
- constructor(message: string, status: number, path: string,
25
- /** 业务错误码(回包中的 code / err_code 字段),不一定存在 */
26
- bizCode?: number | undefined,
27
- /** 回包中的原始 message 字段(用于向用户展示兜底文案) */
28
- bizMessage?: string | undefined);
29
- }
30
- export declare const API_BASE: string;
31
- export declare const TOKEN_URL: string;
32
- /** 由 setQQBotRuntime 调用,将 api.runtime.version 注入到 User-Agent */
33
- export declare function setOpenClawVersion(version: string): void;
34
- export declare function getPluginUserAgent(): string;
35
- /** 出站消息元信息(结构化存储,不做预格式化) */
36
- export interface OutboundMeta {
37
- /** 消息文本内容 */
38
- text?: string;
39
- /** 媒体类型 */
40
- mediaType?: "image" | "voice" | "video" | "file";
41
- /** 媒体来源:在线 URL */
42
- mediaUrl?: string;
43
- /** 媒体来源:本地文件路径或文件名 */
44
- mediaLocalPath?: string;
45
- /** TTS 原文本(仅 voice 类型有效,用于保存 TTS 前的文本内容) */
46
- ttsText?: string;
47
- }
48
- type OnMessageSentCallback = (refIdx: string, meta: OutboundMeta) => void;
49
- /**
50
- * 注册出站消息回调
51
- * 当消息发送成功且 QQ 返回 ref_idx 时,自动回调此函数
52
- * 用于在最底层统一缓存 bot 出站消息的 refIdx
53
- */
54
- export declare function onMessageSent(callback: OnMessageSentCallback): void;
55
- /**
56
- * 初始化 API 配置
57
- */
58
- export declare function initApiConfig(options: {
59
- markdownSupport?: boolean;
60
- }): void;
61
- /**
62
- * 获取当前是否支持 markdown
63
- */
64
- export declare function isMarkdownSupport(): boolean;
65
- /**
66
- * 获取 AccessToken(带缓存 + singleflight 并发安全)
67
- *
68
- * 使用 singleflight 模式:当多个请求同时发现 Token 过期时,
69
- * 只有第一个请求会真正去获取新 Token,其他请求复用同一个 Promise。
70
- *
71
- * 按 appId 隔离,支持多机器人并发请求。
72
- */
73
- export declare function getAccessToken(appId: string, clientSecret: string): Promise<string>;
74
- /**
75
- * 清除 Token 缓存
76
- * @param appId 选填。如果有,只清空特定账号的缓存;如果没有,清空所有账号。
77
- */
78
- export declare function clearTokenCache(appId?: string): void;
79
- /**
80
- * 获取 Token 缓存状态(用于监控)
81
- */
82
- export declare function getTokenStatus(appId: string): {
83
- status: "valid" | "expired" | "refreshing" | "none";
84
- expiresAt: number | null;
85
- };
86
- /**
87
- * 获取全局唯一的消息序号(范围 0 ~ 65535)
88
- * 使用毫秒级时间戳低位 + 随机数异或混合,无状态,避免碰撞
89
- */
90
- export declare function getNextMsgSeq(_msgId: string): number;
91
- /**
92
- * API 请求封装
93
- */
94
- export declare function apiRequest<T = unknown>(accessToken: string, method: string, path: string, body?: unknown, timeoutMs?: number): Promise<T>;
95
- /**
96
- * 需要持续重试的业务错误码集合
97
- * 当 upload_part_finish 返回这些错误码时,会以固定 1s 间隔持续重试直到成功或超时
98
- */
99
- export declare const PART_FINISH_RETRYABLE_CODES: Set<number>;
100
- /**
101
- * upload_prepare 接口命中此错误码时,携带文件信息抛出 UploadDailyLimitExceededError,
102
- * 由上层(outbound.ts)构造包含文件路径和大小的兜底文案发送给用户,
103
- * 而非走通用的"文件发送失败,请稍后重试"
104
- */
105
- export declare const UPLOAD_PREPARE_FALLBACK_CODE = 40093002;
106
- export declare function getGatewayUrl(accessToken: string): Promise<string>;
107
- /** 回应按钮交互(INTERACTION_CREATE),避免客户端按钮持续 loading */
108
- export declare function acknowledgeInteraction(accessToken: string, interactionId: string, code?: 0 | 1 | 2 | 3 | 4 | 5, data?: Record<string, unknown>): Promise<void>;
109
- /** 获取插件版本号(从 package.json 读取,和 getPluginUserAgent() 同源) */
110
- export declare function getApiPluginVersion(): string;
111
- export interface MessageResponse {
112
- id: string;
113
- timestamp: number | string;
114
- /** 消息的引用索引信息(出站时由 QQ 服务端返回) */
115
- ext_info?: {
116
- ref_idx?: string;
117
- };
118
- }
119
- export declare function sendC2CMessage(accessToken: string, openid: string, content: string, msgId?: string, messageReference?: string): Promise<MessageResponse>;
120
- export declare function sendC2CInputNotify(accessToken: string, openid: string, msgId?: string, inputSecond?: number): Promise<{
121
- refIdx?: string;
122
- }>;
123
- export declare function sendChannelMessage(accessToken: string, channelId: string, content: string, msgId?: string): Promise<{
124
- id: string;
125
- timestamp: string;
126
- }>;
127
- /**
128
- * 发送频道私信消息
129
- * @param guildId - 私信会话的 guild_id(由 DIRECT_MESSAGE_CREATE 事件提供)
130
- * @param msgId - 被动回复时必填
131
- */
132
- export declare function sendDmMessage(accessToken: string, guildId: string, content: string, msgId?: string): Promise<{
133
- id: string;
134
- timestamp: string;
135
- }>;
136
- export declare function sendGroupMessage(accessToken: string, groupOpenid: string, content: string, msgId?: string, messageReference?: string): Promise<MessageResponse>;
137
- /** 发送带 Inline Keyboard 的 C2C 消息(回调型按钮,触发 INTERACTION_CREATE) */
138
- export declare function sendC2CMessageWithInlineKeyboard(accessToken: string, openid: string, content: string, inlineKeyboard: import("./types.js").InlineKeyboard, msgId?: string): Promise<MessageResponse>;
139
- /** 发送带 Inline Keyboard 的 Group 消息(回调型按钮,触发 INTERACTION_CREATE) */
140
- export declare function sendGroupMessageWithInlineKeyboard(accessToken: string, groupOpenid: string, content: string, inlineKeyboard: import("./types.js").InlineKeyboard, msgId?: string): Promise<MessageResponse>;
141
- export declare function sendProactiveC2CMessage(accessToken: string, openid: string, content: string): Promise<MessageResponse>;
142
- export declare function sendProactiveGroupMessage(accessToken: string, groupOpenid: string, content: string): Promise<{
143
- id: string;
144
- timestamp: string;
145
- }>;
146
- export declare enum MediaFileType {
147
- IMAGE = 1,
148
- VIDEO = 2,
149
- VOICE = 3,
150
- FILE = 4
151
- }
152
- export interface UploadMediaResponse {
153
- file_uuid: string;
154
- file_info: string;
155
- ttl: number;
156
- id?: string;
157
- }
158
- /** 分片信息 */
159
- export interface UploadPart {
160
- /** 分片索引(从 1 开始) */
161
- index: number;
162
- /** 预签名上传链接 */
163
- presigned_url: string;
164
- }
165
- /** 申请上传响应 */
166
- export interface UploadPrepareResponse {
167
- /** 上传任务 ID */
168
- upload_id: string;
169
- /** 分块大小(字节) */
170
- block_size: number;
171
- /** 分片列表(含预签名链接) */
172
- parts: UploadPart[];
173
- /** 上传并发数(由服务端控制,可选,不返回时使用客户端默认值) */
174
- concurrency?: number;
175
- /** upload_part_finish 特定错误码的重试超时时间(秒),由服务端控制,客户端上限 10 分钟 */
176
- retry_timeout?: number;
177
- }
178
- /** 完成文件上传响应(与 UploadMediaResponse 一致) */
179
- export interface MediaUploadResponse {
180
- /** 文件 UUID */
181
- file_uuid: string;
182
- /** 文件信息(用于发送消息),是 InnerUploadRsp 的序列化 */
183
- file_info: string;
184
- /** 文件信息过期时长(秒) */
185
- ttl: number;
186
- }
187
- /** 申请上传时的文件哈希信息 */
188
- export interface UploadPrepareHashes {
189
- /** 整个文件的 MD5(十六进制) */
190
- md5: string;
191
- /** 整个文件的 SHA1(十六进制) */
192
- sha1: string;
193
- /** 文件前 10002432 Bytes 的 MD5(十六进制);文件不足该大小时为整文件 MD5 */
194
- md5_10m: string;
195
- }
196
- /**
197
- * 申请上传(C2C)
198
- * POST /v2/users/{user_id}/upload_prepare
199
- *
200
- * @param accessToken - 访问令牌
201
- * @param userId - 用户 openid
202
- * @param fileType - 业务类型(1=图片, 2=视频, 3=语音, 4=文件)
203
- * @param fileName - 文件名
204
- * @param fileSize - 文件大小(字节)
205
- * @param hashes - 文件哈希信息(md5, sha1, md5_10m)
206
- * @returns 上传任务 ID、分块大小、分片预签名链接列表
207
- */
208
- export declare function c2cUploadPrepare(accessToken: string, userId: string, fileType: MediaFileType, fileName: string, fileSize: number, hashes: UploadPrepareHashes): Promise<UploadPrepareResponse>;
209
- /**
210
- * 完成分片上传(C2C)
211
- * POST /v2/users/{user_id}/upload_part_finish
212
- *
213
- * @param accessToken - 访问令牌
214
- * @param userId - 用户 openid
215
- * @param uploadId - 上传任务 ID
216
- * @param partIndex - 分片索引(从 1 开始)
217
- * @param blockSize - 分块大小(字节)
218
- * @param md5 - 分片数据的 MD5(十六进制)
219
- */
220
- export declare function c2cUploadPartFinish(accessToken: string, userId: string, uploadId: string, partIndex: number, blockSize: number, md5: string, retryTimeoutMs?: number): Promise<void>;
221
- /**
222
- * 完成文件上传(C2C)
223
- * POST /v2/users/{user_id}/files
224
- *
225
- * @param accessToken - 访问令牌
226
- * @param userId - 用户 openid
227
- * @param uploadId - 上传任务 ID
228
- * @returns 文件信息(file_uuid, file_info, ttl)
229
- */
230
- export declare function c2cCompleteUpload(accessToken: string, userId: string, uploadId: string): Promise<MediaUploadResponse>;
231
- /**
232
- * 申请上传(Group)
233
- * POST /v2/groups/{group_id}/upload_prepare
234
- */
235
- export declare function groupUploadPrepare(accessToken: string, groupId: string, fileType: MediaFileType, fileName: string, fileSize: number, hashes: UploadPrepareHashes): Promise<UploadPrepareResponse>;
236
- /**
237
- * 完成分片上传(Group)
238
- * POST /v2/groups/{group_id}/upload_part_finish
239
- */
240
- export declare function groupUploadPartFinish(accessToken: string, groupId: string, uploadId: string, partIndex: number, blockSize: number, md5: string, retryTimeoutMs?: number): Promise<void>;
241
- /**
242
- * 完成文件上传(Group)
243
- * POST /v2/groups/{group_id}/files
244
- */
245
- export declare function groupCompleteUpload(accessToken: string, groupId: string, uploadId: string): Promise<MediaUploadResponse>;
246
- export declare function uploadC2CMedia(accessToken: string, openid: string, fileType: MediaFileType, url?: string, fileData?: string, srvSendMsg?: boolean, fileName?: string): Promise<UploadMediaResponse>;
247
- export declare function uploadGroupMedia(accessToken: string, groupOpenid: string, fileType: MediaFileType, url?: string, fileData?: string, srvSendMsg?: boolean, fileName?: string): Promise<UploadMediaResponse>;
248
- export declare function sendC2CMediaMessage(accessToken: string, openid: string, fileInfo: string, msgId?: string, content?: string, meta?: OutboundMeta): Promise<MessageResponse>;
249
- export declare function sendGroupMediaMessage(accessToken: string, groupOpenid: string, fileInfo: string, msgId?: string, content?: string): Promise<{
250
- id: string;
251
- timestamp: string;
252
- }>;
253
- export declare function sendC2CImageMessage(accessToken: string, openid: string, imageUrl: string, msgId?: string, content?: string, localPath?: string): Promise<MessageResponse>;
254
- export declare function sendGroupImageMessage(accessToken: string, groupOpenid: string, imageUrl: string, msgId?: string, content?: string): Promise<{
255
- id: string;
256
- timestamp: string;
257
- }>;
258
- export declare function sendC2CVoiceMessage(accessToken: string, openid: string, voiceBase64?: string, voiceUrl?: string, msgId?: string, ttsText?: string, filePath?: string): Promise<MessageResponse>;
259
- export declare function sendGroupVoiceMessage(accessToken: string, groupOpenid: string, voiceBase64?: string, voiceUrl?: string, msgId?: string): Promise<{
260
- id: string;
261
- timestamp: string;
262
- }>;
263
- export declare function sendC2CFileMessage(accessToken: string, openid: string, fileBase64?: string, fileUrl?: string, msgId?: string, fileName?: string, localFilePath?: string): Promise<MessageResponse>;
264
- export declare function sendGroupFileMessage(accessToken: string, groupOpenid: string, fileBase64?: string, fileUrl?: string, msgId?: string, fileName?: string): Promise<{
265
- id: string;
266
- timestamp: string;
267
- }>;
268
- export declare function sendC2CVideoMessage(accessToken: string, openid: string, videoUrl?: string, videoBase64?: string, msgId?: string, content?: string, localPath?: string): Promise<MessageResponse>;
269
- export declare function sendGroupVideoMessage(accessToken: string, groupOpenid: string, videoUrl?: string, videoBase64?: string, msgId?: string, content?: string): Promise<{
270
- id: string;
271
- timestamp: string;
272
- }>;
273
- interface BackgroundTokenRefreshOptions {
274
- refreshAheadMs?: number;
275
- randomOffsetMs?: number;
276
- minRefreshIntervalMs?: number;
277
- retryDelayMs?: number;
278
- log?: {
279
- info: (msg: string) => void;
280
- error: (msg: string) => void;
281
- debug?: (msg: string) => void;
282
- };
283
- }
284
- export declare function startBackgroundTokenRefresh(appId: string, clientSecret: string, options?: BackgroundTokenRefreshOptions): void;
285
- /**
286
- * 停止后台 Token 刷新
287
- * @param appId 选填。如果有,仅停止该账号的定时刷新。
288
- */
289
- export declare function stopBackgroundTokenRefresh(appId?: string): void;
290
- export declare function isBackgroundTokenRefreshRunning(appId?: string): boolean;
291
- import type { StreamMessageRequest } from "./types.js";
292
- /**
293
- * 发送流式消息(C2C 私聊)
294
- *
295
- * 流式协议:
296
- * - 首次调用时不传 stream_msg_id,由平台返回
297
- * - 后续分片携带 stream_msg_id 和递增 msg_seq
298
- * - input_state="1" 表示生成中,"10" 表示生成结束(终结状态)
299
- *
300
- * 仅在终结分片(input_state=DONE)时触发 refIdx 回调,
301
- * 中间分片直接调用 apiRequest,避免存入过多无效的中间态数据。
302
- *
303
- * @param accessToken - access_token
304
- * @param openid - 用户 openid
305
- * @param req - 流式消息请求体
306
- * @returns 消息响应(复用 MessageResponse,错误会直接抛出异常)
307
- */
308
- export declare function sendC2CStreamMessage(accessToken: string, openid: string, req: StreamMessageRequest): Promise<MessageResponse>;
309
- export {};