Skip to content
This repository has been archived by the owner on Aug 2, 2020. It is now read-only.

v4.0.0

Compare
Choose a tag to compare
@stdrc stdrc released this 07 Jun 14:11
· 442 commits to master since this release

4.0.0 版本代码完全重构,提取了 C++ SDK,且内部在核心和各功能模块之间进行了解耦,代码结构更加清晰、健壮,插件的稳定性也因此大幅提高。

与此同时不可避免地出现了一些与旧版的不兼容更改,下面会全部列出,如果你需要从 v3.x 升级到 v4.x,请参考 升级指南

✔️ 新增特性:

下面列出的是和原有功能互不影响的新增特性,不存在兼容性问题。

  • API 所有接口均支持 _async 后缀,用于异步调用
  • 新增 enable_backward_compatibility 用于开关与旧版本的兼容性,默认为 false,注意,这个配置不会影响事件过滤器所接收到的事件数据,即无论开启与否,事件过滤规则中都应该使用 4.x 版本的上报数据字段
  • 配置文件支持 JSON 格式编写,加载时按如下路径依次尝试,一旦有一个路径加载成功,则停止加载(所有路径均为相对于 app\io.github.richardchien.coolqhttpapi 的相对路径):
    • config.(cfg|ini)(扩展名的括号和竖线表示优先加载 .cfg,若没有,则加载 .ini,下同),文件中通用配置需要放在 [general] 下,QQ 号特定配置放在 [<user_id>]
    • config\general.(cfg|ini) + config\<user_id>.(cfg|ini),前者是通用配置,全部放在 [general] 下,后者是 QQ 号特定配置,全部放在 [<user_id>] 下,后者覆盖前者中已存在的内容
    • config.json,通用配置需放在根对象的 general 字段,QQ 号特定配置放在 QQ 号对应字段,例如 {"general": {"host": "0.0.0.0"}, "123456": {"port": 6666}}
    • config\general.json + config\<user_id>.json,配置项均直接放在根对象,后者覆盖前者中已存在的内容
  • 日志现在全部写入 app\io.github.richardchien.coolqhttpapi\log 中的日志文件,日志文件大小上限 6MB,info 级别以上的日志仍会写入酷 Q 的日志窗口
  • 新增 show_log_console 配置项用于开关输出日志的控制台,默认为 false
  • 消息类型的上报中,除了原有的 message 字段表示消息外,新增 raw_message 字段,用于提供未经处理的原始消息文本(没有经过 CQ 码增强和上报格式修改)
  • set_restart_plugin 接口新增 delay 参数,用于控制插件重启的延迟毫秒数,默认 0
  • 检查更新新增 alpha 更新通道用于推送最新但可能极不稳定的测试版
  • HTTP、反向 WebSocket 的请求头中新增 X-Self-ID 头用于表示当前正在上报或建立连接的 QQ 号,以便后端区分
  • /set_restart 接口新增 clean_cache 参数,用于清空酷 Q 当前登录号的缓存

🐞 Bug 修复和细节优化:

  • 修复 WebSocket 鉴权失败后仍然会执行调用的 bug
  • 修复未转义的 [CQ:] 无法发送的问题
  • 修复字符串格式的消息上报中,英文逗号被转义的 bug(与酷 Q 原生不符)
  • 修复 Docker 镜像中文件权限的 bug
  • 优化 Docker 镜像的使用体验

⚠️ 可通过 enable_backward_compatibility 保持兼容的更改:

下面列出的是已经发生了和旧版不兼容的变化,但可通过设置 enable_backward_compatibility 配置项为 true 来保持兼容的更改。

  • 群组消息中匿名信息现在以对象形式表示,例如 "anonymous": {"id": 1000019, "name": "邓八公", "flag": "AAAAAAAPQlMABrXLsMu5qwAokaXsWulfxg2hPMTHguk1acbiU1NyW2BfxEnEMR5SNYFSns6SKKVe5A=="},非匿名消息中此字段为 null
  • 通知类上报中(群成员增加、群管理员变更等),post_type 字段值从 event 变为 notice,原先的 event 字段变为 notice_type 字段
  • 请求类上报的 message 字段现变为 comment 字段

除非万不得已,不建议设置 enable_backward_compatibilitytrue,虽然这会让本次升级更容易,但会增加后续升级的工作量,且在查阅文档时容易感到困惑。这里的更改在下一个大版本中极有可能不再可配置为保持兼容。

❌ 破坏性的更改:

下面列出的是与旧版不兼容,且无法通过配置保持兼容性的更改。这意味着如果你使用了与它们相关的功能,可能必须修改配置或代码才能继续正常使用。

  • 事件过滤器不再使用 use_filter 配置项来开关,而是使用 event_filter 直接指定过滤器规则文件的相对路径(相对于 app\io.github.richardchien.coolqhttpapi),默认为空,即表示不启用事件过滤器
  • 事件过滤器规则中,旧版中对消息原始文本进行过滤的 message 字段现在改为处理过的数组格式的消息,未经处理的原始消息文本现在保存在 raw_message 字段
  • 上报和反向 WebSocket 请求头的 User-Agent 变更为形如 CQHttp/4.0.0-alpha.1 的形式(CoolQHttpApi 改为 CQHttp
  • /get_status 接口返回的数据有所变化,但常用的 goodonline 两个字段没有改变,具体请自行测试
  • 更改编译选项导致 Windows 7 和 Windows Server 2008 用户可能需要安装 通用 C 运行库更新 才能正常使用

🌈 与 beta.2 版本相比的更新

  • 切换编译选项的 CRT 为动态链接,Windows 7 和 Windows Server 2008 可能需要安装 通用 C 运行库更新