Commit Graph

18 Commits

Author SHA1 Message Date
a7f52e33fb 🐛 fix(command): 回调超时从 10s 改为可配置,默认 180s
- 新增 COMMAND_CALLBACK_TIMEOUT 配置项,默认 180 秒
- 生图等耗时命令不再因超时中断
2026-05-03 00:37:16 +08:00
fa5d61dbfa Merge pull request 'feat: 添加命令监听与外接回调功能' (#1) from test/command-listener into main
Reviewed-on: #1
2026-05-02 21:39:18 +08:00
e62fc13f7c feat(command): 命令名支持中文、数字、字母等任意非空白字符
- 正则从仅匹配中文改为匹配任意非空白字符(\S)
- 中文、数字、字母、其他字符均按 1 个字符计数
- 长度范围仍由 COMMAND_LENGTH_MIN/MAX 控制
2026-05-02 21:30:19 +08:00
7c72b1c97a 🐛 fix(command): 修复 plugin.py 引用已删除的 COMMAND_LENGTH 导致启动报错
- 导入改为 COMMAND_LENGTH_MIN / COMMAND_LENGTH_MAX
- 启动日志适配范围格式 %d~%d
2026-05-02 21:20:57 +08:00
d4962a840d feat(command): 命令名长度改为可配置范围 2~4 个中文字
- 将 COMMAND_LENGTH 拆分为 COMMAND_LENGTH_MIN 和 COMMAND_LENGTH_MAX
- 正则匹配支持 2~4 个中文字,范围通过 .env 配置
- 默认最小 2 字、最大 4 字
2026-05-02 21:13:22 +08:00
c6ba7e2e37 feat(command): 支持无参数命令触发
- 正则改为允许命令后无空格和内容,如 `#测试命令` 也可触发
- 命令内容为空时 content 返回空字符串而非匹配失败
2026-05-02 21:01:33 +08:00
89461b6ed6 🐛 fix(command): 修复 Event 对象无 reply 方法
- events() 返回的是 Event(data=GroupMessageEvent) 包装对象
- 改用 event.data(消息事件实体)构建回复
- 手动构建 MessageArray + add_reply 实现引用回复
- 群聊默认 @发送者,at_sender=false 可关闭
2026-05-02 20:38:09 +08:00
601bce8847 feat(command): 回复时引用原消息
- 使用 event.reply() 替代手动调用 send_group/private_text
- 自动引用触发命令的原消息,回复带引用效果
- 群聊默认 @发送者,可通过 at_sender=false 关闭
2026-05-02 19:58:47 +08:00
af0f6c7ec6 feat(command): 回调响应自动回复到 QQ
- 回调服务器可返回 reply 或 messages 字段,插件自动回复到原消息来源
- reply 为纯文本回复,messages 格式同 /webhook 接口
- 支持通过 group_id/user_id 覆盖回复目标
- 无需回复时返回空 JSON 即可
- 更新 README 文档说明回调响应格式
2026-05-02 19:29:18 +08:00
ee1bd583d8 feat(command): 添加命令监听与外接回调功能
- 新增 `#四个中文字+空格` 消息匹配规则,可配置前缀和长度
- 匹配成功后 POST 到 COMMAND_CALLBACK_URL,携带命令名、内容、用户信息
- 使用 EventMixin.events() 订阅消息流,on_close 自动取消监听
- 新增配置项:COMMAND_PREFIX、COMMAND_LENGTH、COMMAND_CALLBACK_URL
- 更新 .env.example 和 README 文档
2026-05-02 19:02:40 +08:00
b86a2d4c4e 🐛 fix(*): 修复代码审查中发现的问题
- **Bug 修复**
  - `message.py`: 批量发送时使用 `(index, msg)` 元组替代 `messages.index(msg)`,避免重复 dict 查找错误
  - `message.py`: 多张图片逐张发送,不再静默丢弃后续图片
  - `plugin.py`: API Key 日志只打印"已配置/自动生成",不再泄露密钥

- **潜在问题修复**
  - `message.py`: lambda 闭包添加默认参数绑定,防止循环变量捕获问题
  - `upload.py`: 文件超限后消费剩余 multipart 数据,避免 reader 状态异常
  - `config.py`: PORT 环境变量非法值容错,默认回退 8081
  - `plugin.py`: cleanup task 保存引用,on_close 时正确取消,避免热重载泄漏

- **代码风格**
  - `message.py`: 无插值 f-string 改为普通字符串
  - `upload.py`: read_chunk 硬编码提取为 CHUNK_SIZE 常量
v0.1.1
2026-05-02 15:28:54 +08:00
67e328942c 📖 docs(*): 完善项目文档
更新 README,添加功能特性、接口文档、批量发送示例和部署说明
2026-05-02 13:31:23 +08:00
bd3be0d914 feat(message): 添加消息组合发送 2026-05-01 23:01:23 +08:00
92cb9901fb fix(upload): 修复上传文件问题 2026-05-01 22:46:06 +08:00
7c01ecaf60 fix(conf): 修复无法读取配置文件 2026-05-01 22:29:34 +08:00
55ae431d10 fix(*): 将文件导入从绝对路径给为相对路径 2026-05-01 22:06:11 +08:00
26ee46bb7b feat(conf): 向配置文件添加内容 2026-05-01 21:26:33 +08:00
f4eba61365 feat(*): 添加测试项目代码 2026-05-01 21:22:57 +08:00