@zxh126/pi-qqbot 2.2.1 → 2.4.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.
- package/CHANGELOG.md +370 -275
- package/README.md +518 -402
- package/approver.ts +174 -174
- package/attachment.ts +502 -502
- package/billing.ts +579 -0
- package/config.ts +281 -271
- package/constants.ts +51 -51
- package/docs/README.zh-CN.md +477 -377
- package/index.ts +1856 -1463
- package/package.json +60 -60
- package/qq/api.ts +107 -107
- package/qq/gateway.ts +265 -265
- package/qq/upload.ts +288 -288
- package/remote.ts +81 -0
- package/selfupdate.ts +212 -0
- package/slash.ts +862 -826
package/constants.ts
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
import os from "node:os";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
|
|
4
|
-
export const TOKEN_URL = "https://api.bot.qq.com/app/getAppAccessToken";
|
|
5
|
-
export const REST_BASE_PROD = "https://api.bot.qq.com";
|
|
6
|
-
export const REST_BASE_SANDBOX = "https://sandbox.api.sgroup.qq.com";
|
|
7
|
-
export const INTENT_GROUP_AND_C2C = 1 << 25;
|
|
8
|
-
export const PASSIVE_WINDOW_MS = 60 * 60 * 1000; // 单聊被动窗口 60 分钟
|
|
9
|
-
export const MAX_REPLIES_PER_MSG_ID = 4;
|
|
10
|
-
export const APPROVAL_TIMEOUT_MS = 10 * 60 * 1000;
|
|
11
|
-
export const STREAM_FLUSH_INTERVAL_MS = 1200;
|
|
12
|
-
export const GATEWAY_PATH = "/gateway";
|
|
13
|
-
/** 队列任务派发给 pi 失败(通常是上一轮还没收尾)时的重试间隔 */
|
|
14
|
-
export const DISPATCH_RETRY_MS = 3000;
|
|
15
|
-
/** /cancel 之后等 agent_settled 的宽限时间,超时就强制释放 busy */
|
|
16
|
-
export const CANCEL_SETTLE_GRACE_MS = 8000;
|
|
17
|
-
|
|
18
|
-
// ---- 附件(图片/语音/视频/文档/压缩包/普通文件)----
|
|
19
|
-
/** 单个附件下载上限:25 MB */
|
|
20
|
-
export const DEFAULT_ATTACHMENT_MAX_BYTES = 25 * 1024 * 1024;
|
|
21
|
-
/** 单条消息最多处理几个附件 */
|
|
22
|
-
export const DEFAULT_ATTACHMENT_MAX_PER_MESSAGE = 10;
|
|
23
|
-
/** 临时文件保留时长(小时):启动时清理更早的 */
|
|
24
|
-
export const DEFAULT_ATTACHMENT_RETENTION_HOURS = 24;
|
|
25
|
-
/** 临时目录里最多保留多少个文件(超出删最旧) */
|
|
26
|
-
export const DEFAULT_ATTACHMENT_MAX_FILES = 200;
|
|
27
|
-
/** 单个附件下载超时 */
|
|
28
|
-
export const ATTACHMENT_TIMEOUT_MS = 30_000;
|
|
29
|
-
/** 单条消息内并发下载数 */
|
|
30
|
-
export const ATTACHMENT_CONCURRENCY = 3;
|
|
31
|
-
|
|
32
|
-
// ---- 发送本机文件到 QQ(富媒体分片上传)----
|
|
33
|
-
/** 默认单个文件上限:30 MB(QQ 硬限 200 MB,软限以上会降级成文件卡片) */
|
|
34
|
-
export const DEFAULT_SEND_MAX_BYTES = 30 * 1024 * 1024;
|
|
35
|
-
/** 分片大小兜底:服务端会在 upload_prepare 里下发 block_size */
|
|
36
|
-
export const UPLOAD_PART_FALLBACK_BYTES = 5 * 1024 * 1024;
|
|
37
|
-
/** 单个分片失败重试次数 */
|
|
38
|
-
export const UPLOAD_PART_ATTEMPTS = 3;
|
|
39
|
-
/** 上传请求(预上传/合并/分片)超时 */
|
|
40
|
-
export const UPLOAD_TIMEOUT_MS = 120_000;
|
|
41
|
-
|
|
42
|
-
const PI_DIR = path.join(os.homedir(), ".pi", "agent");
|
|
43
|
-
/** pi 的 agent 目录(其他扩展也往里写东西,如 pi-usage-report) */
|
|
44
|
-
export const PI_AGENT_DIR = PI_DIR;
|
|
45
|
-
export const CONFIG_PATH = () => path.join(PI_DIR, "pi-qqbot.json");
|
|
46
|
-
export const LOCK_PATH = (appId: string) => path.join(PI_DIR, `pi-qqbot-${appId}.lock`);
|
|
47
|
-
/** 记录「谁占着这个 bot」:pid/cwd/账号名 + 临时释放的预约窗口(换进程时用来生成提示) */
|
|
48
|
-
export const OWNER_PATH = (appId: string) => path.join(PI_DIR, `pi-qqbot-${appId}.owner.json`);
|
|
49
|
-
/** 日志文件(按账号分文件:多进程同机时不交错) */
|
|
50
|
-
export const LOG_PATH = (account: string, legacy = false) =>
|
|
51
|
-
path.join(PI_DIR, legacy ? "pi-qqbot.log" : `pi-qqbot-${account}.log`);
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
export const TOKEN_URL = "https://api.bot.qq.com/app/getAppAccessToken";
|
|
5
|
+
export const REST_BASE_PROD = "https://api.bot.qq.com";
|
|
6
|
+
export const REST_BASE_SANDBOX = "https://sandbox.api.sgroup.qq.com";
|
|
7
|
+
export const INTENT_GROUP_AND_C2C = 1 << 25;
|
|
8
|
+
export const PASSIVE_WINDOW_MS = 60 * 60 * 1000; // 单聊被动窗口 60 分钟
|
|
9
|
+
export const MAX_REPLIES_PER_MSG_ID = 4;
|
|
10
|
+
export const APPROVAL_TIMEOUT_MS = 10 * 60 * 1000;
|
|
11
|
+
export const STREAM_FLUSH_INTERVAL_MS = 1200;
|
|
12
|
+
export const GATEWAY_PATH = "/gateway";
|
|
13
|
+
/** 队列任务派发给 pi 失败(通常是上一轮还没收尾)时的重试间隔 */
|
|
14
|
+
export const DISPATCH_RETRY_MS = 3000;
|
|
15
|
+
/** /cancel 之后等 agent_settled 的宽限时间,超时就强制释放 busy */
|
|
16
|
+
export const CANCEL_SETTLE_GRACE_MS = 8000;
|
|
17
|
+
|
|
18
|
+
// ---- 附件(图片/语音/视频/文档/压缩包/普通文件)----
|
|
19
|
+
/** 单个附件下载上限:25 MB */
|
|
20
|
+
export const DEFAULT_ATTACHMENT_MAX_BYTES = 25 * 1024 * 1024;
|
|
21
|
+
/** 单条消息最多处理几个附件 */
|
|
22
|
+
export const DEFAULT_ATTACHMENT_MAX_PER_MESSAGE = 10;
|
|
23
|
+
/** 临时文件保留时长(小时):启动时清理更早的 */
|
|
24
|
+
export const DEFAULT_ATTACHMENT_RETENTION_HOURS = 24;
|
|
25
|
+
/** 临时目录里最多保留多少个文件(超出删最旧) */
|
|
26
|
+
export const DEFAULT_ATTACHMENT_MAX_FILES = 200;
|
|
27
|
+
/** 单个附件下载超时 */
|
|
28
|
+
export const ATTACHMENT_TIMEOUT_MS = 30_000;
|
|
29
|
+
/** 单条消息内并发下载数 */
|
|
30
|
+
export const ATTACHMENT_CONCURRENCY = 3;
|
|
31
|
+
|
|
32
|
+
// ---- 发送本机文件到 QQ(富媒体分片上传)----
|
|
33
|
+
/** 默认单个文件上限:30 MB(QQ 硬限 200 MB,软限以上会降级成文件卡片) */
|
|
34
|
+
export const DEFAULT_SEND_MAX_BYTES = 30 * 1024 * 1024;
|
|
35
|
+
/** 分片大小兜底:服务端会在 upload_prepare 里下发 block_size */
|
|
36
|
+
export const UPLOAD_PART_FALLBACK_BYTES = 5 * 1024 * 1024;
|
|
37
|
+
/** 单个分片失败重试次数 */
|
|
38
|
+
export const UPLOAD_PART_ATTEMPTS = 3;
|
|
39
|
+
/** 上传请求(预上传/合并/分片)超时 */
|
|
40
|
+
export const UPLOAD_TIMEOUT_MS = 120_000;
|
|
41
|
+
|
|
42
|
+
const PI_DIR = path.join(os.homedir(), ".pi", "agent");
|
|
43
|
+
/** pi 的 agent 目录(其他扩展也往里写东西,如 pi-usage-report) */
|
|
44
|
+
export const PI_AGENT_DIR = PI_DIR;
|
|
45
|
+
export const CONFIG_PATH = () => path.join(PI_DIR, "pi-qqbot.json");
|
|
46
|
+
export const LOCK_PATH = (appId: string) => path.join(PI_DIR, `pi-qqbot-${appId}.lock`);
|
|
47
|
+
/** 记录「谁占着这个 bot」:pid/cwd/账号名 + 临时释放的预约窗口(换进程时用来生成提示) */
|
|
48
|
+
export const OWNER_PATH = (appId: string) => path.join(PI_DIR, `pi-qqbot-${appId}.owner.json`);
|
|
49
|
+
/** 日志文件(按账号分文件:多进程同机时不交错) */
|
|
50
|
+
export const LOG_PATH = (account: string, legacy = false) =>
|
|
51
|
+
path.join(PI_DIR, legacy ? "pi-qqbot.log" : `pi-qqbot-${account}.log`);
|