mirai

高效率 QQ 机器人支持库

AGPL-3.0 License

Stars
14K
Committers
131

Bot releases are visible (Hide)

mirai - 2.16.0 Latest Release

Published by Him188 12 months ago

感谢大家四年以来对 mirai 的支持。阳光穿过秋天的枫叶,留下一张张独特的风景,如此灿烂,如此艳丽。

mirai-core

优化和修复

  • 修复登录收到结果 180 时会无限重连的问题
  • 修复 ShortVideo 文档
  • 优化 ShortVideo 的内部日志

mirai-console

优化和修复

  • 修复 JVM 插件 JAR 中使用 plugin.yml 加载时无法加载的问题 (#2791 by @cssxsh)
mirai - 2.16.0-RC

Published by StageGuard about 1 year ago

mirai-core

新特性

  • 短视频消息 ShortVideo 支持 (#867, #1664, #2011, #2621, #2739)

可通过 Contact.uploadShortVideo 为好友和群上传视频消息,更多信息请查看此方法的 KDoc

  • 超级表情 SuperFace 支持 (#2621, #2722 by @cssxsh)

超级表情是类似 菜汪流泪 之类的有高级动画显示的表情,可以通过对应普通表情 Face.toSuperFace 转换

  • ANDROID_PAD 协议启用戳一戳支持 (#2771)
  • 添加 val MiraiProtocol.isNudgeSupported: Boolean 用于判断当前协议是否支持戳一戳 (#2771)

优化和修复

  • 修复获取 QIMEI 请求的载荷参数错误 (#2749 by @zhaodice)
  • 修复 Base64 工具在 Android 平台的行为与 JVM 平台不一致的问题 (#2753 by @zhaodice)
  • 在升级旧版本的设备信息文件之前检查文件写权限
  • 修复从可确定图片类型的 Mirai Code 构造的图片 时 type 为 UNKNOW 或与期望类型不一致 (#2760, #2761 @Hamusuta0320)
  • 修复在某些情况下无法收到好友消息撤回事件 (#2784)
  • 优化 NormalMember.specialTitle 文档 (#2777 by @MrY-Cat)
  • 移除 Kotlin Native 相关的注解
  • (internal) 弃用 mirai-core-api 的 jvmBase 模块,与 common 模块合并 (#2772)

mirai-console

不兼容变更

  • 弃用 PermitteeId.hasChild,改为 PermitteeId.isChildOf (#2762 by @cssxsh)

新特性

  • 添加强制性最终用户使用须知,将在 console 首次启动和须知内容变动时显示 (#2738)
  • 现在插件可通过内置配置文件资源加载插件依赖 (#1985, #2189, #2735)
  • 现在插件可依赖指定版本 console 来限制 conosle 的版本 (#1895, #2703 by @cssxsh)

优化和修复

  • 优化 AutoLogin 配置文件部分注释 (#2742 by @ParaN3xus)
  • 修复在控制台中当上次输入请求被取消导致输入队列阻塞的问题
  • 修复 Bot 登录失败后关闭 Bot 时 console 异常退出的问题 (#2740)
  • 将 console backend 的 org.slf4j.spi.SLF4JServiceProvider 移动至 console frontend base (#2443 by @cssxsh)
  • 在插件加载前排除 ID 相同的插件 (#2136, #2703 by @cssxsh)
  • 优化 AutoLoginEvent 显示 (#2750 by @cssxsh)

CI

  • 在 CI 构建时上传 Maven 本地仓库作为构建产物 (#2725 by @cssxsh)

IDEA

  • 支持 IDEA 2023.2 (#2769, #2775 by @Samarium150)
mirai - 2.15.0

Published by Karlatemp over 1 year ago

2.15.0 是 2.15 的稳定版本,此更新记录仅包含 2.15.0-RC 至 2.15.0 的更新。完整更新记录请查看前几个预览版本

mirai-core

不兼容变更

  • (Internal) EncryptService 注册方式改为 Factory (fa389f40)

新特性

  • 添加 val MiraiProtocol.isQRLoginSupported: Boolean (#2726, #2642)

优化和修复

  • 二维码登录相关修复 (#2708 by @cssxsh)
  • (Internal) 当 EncryptService 可用时提示服务来源警告
  • (Internal) EncryptService update
  • 默认关闭登录验证时的内部日志
  • 修复禁言匿名成员 (#2711 by @cssxsh, #2626, #2370)

关于包数据加密 / 签名 (Internal)(#2716)

mirai 不会内置任何第三方 签名/加密 服务,而是提供 SPI 让用户自行实现。
mirai 已经提供了外部 EncryptService SPI 供用户对接。如果您没有能力自行对接,您可以考虑到论坛寻找社区对接。

在使用社区服务前,您需要了解并理解以下内容

  1. 保证可信来源!
    当,且仅当, 服务来源可信时,使用此服务。mirai 传递给服务的内容包括但不限于:
    • 所有的 Bot 登录请求(包含 Bot 的所有敏感信息(如密码,登录凭证等))
    • Bot 发出去的全部消息内容
  2. 保护好你的网络!
    据最近观察,部分相关的服务实现并没有对消息进行加密,如果您所访问的服务位于公开网络,您的数据有被窃取的风险。
  3. 保护好你的日志!
    据最近观察,部分相关服务使用 HTTP GET 请求传递数据体,当远程服务出错时,服务对接可能会直接将此次请求的连接直接输出到日志中,此日志可能包含了此次尝试 签名/加密 的内容,而此内容可能包含关键信息。
    当您需要上传日志时,请记得移除相关的请求日志。
    如果您无法分辨哪些请求需要被抹除时,您可以参考以下规则:
    • 请求连接包含大量 Hex 文本,抹除 (Hex: 由 0-9ABCDEF 组成的序列 )
    • 请求包含大量 Base64 文本,抹除 (如您不知道什么是 Base64 文本,您可以简单当做是超长的英文与符号组合)
    • 请求连接过长,抹除(如连接日志换行了三次都还没有显示完全)
mirai - 2.15.0-RC

Published by Him188 over 1 year ago

mirai-core

不兼容变更

  • 删除 native 编译目标 (#2698)
  • 弃用 DeviceInfo 构造器及 serializer, 以 DeviceInfoBuilderDeviceInfo.serializeToString 替代 (#2674)
  • MessageSyncEventMessageSourcetargetId 由机器人 ID 变为实际的消息发送对象 (#2122, #2513)

新特性

  • 更新登录协议 (#2613, #2592)

  • 现在可以在 BotAuthorization.authorize 时通过 BotAuthInfo 获取导致重新登录的原因 (#2664)

  • 优化插件 classpath 策略 (#2666)

    文档

    • 添加选项以允许插件不搜索其他插件的 classpath
    • 添加选项以允许插件阻止其他未依赖此插件的插件进行引用
  • AudioToSilkService 现在稳定 (#2658)

  • 支持使用 JSON 保存与读取 PluginDataPluginConfig (#2498 by @NoMathExpectation)

  • 支持获取和管理群精华消息 (Group.essences) (#837, #2293, #2314 by @cssxsh)

  • 以 Android Library 形式发布 Android 编译目标 (#2635, #2699 by @MrXiaoM)

优化和修复

  • 修复扫码登录的已知问题 (无法进入登录验证等) (#2623, #2645, #2633 with @cssxsh)

  • 修复刷新令牌后令牌不保存的问题 (#2590, #2584)

    这是一个很长时间的错误, 应该只在完全重启 mirai 或更新 bot 后才会影响

  • 修复 java.lang.IllegalStateException: wLoginSigInfoField is not yet initialized (#1603, #2449, #2450 by @sandtechnology)

  • 修复获取群活跃数据失败的问题 (#2609, #2610 by @cssxsh)

  • 修复部分合并转发消息仅被作为APP消息接收的问题 (#2618, #2675)

  • 修复 MessageSource 定位相关逻辑: (#2510, #2513)

    • 发送消息时实际发送的消息会忽略通过 MessagePreSendEvent 所进行的修改 (#2525)
    • 安卓客户端发送的 Quote 中 message source id 有误 (#2495)
    • OnlineMessageSourceFromGroupImpl 的 fromId 有误 (#2277)
  • 修复获取群精华消息报错 (#2668, #2672 by @cssxsh)

  • 修复群公告协议 (#2619 by @cssxsh)

  • 修复 OnlineAnnouncement.members 只能获取 50 个人的问题 (#2531, #2530 by @cssxsh)

  • 修复发送消息时实际发送的消息会忽略通过 MessagePreSendEvent 所进行的修改的问题 (#2525 by @NoMathExpectation)

  • 优化文档 (#2639 by @cssxsh)

  • 完善了用户文档部分的内容 (#2541 by @MikkoAyaka)

  • 在文档注释手表协议不支持戳一戳事件 (#2572 by @7aGiven)

  • 在消息日志中去除特殊控制符

  • 添加 QRCodeLoginListener.onCompleted() 用于资源释放

mirai-core-mock

  • 实现 Image.isUploaded (#2582 by @Nambers)
  • 修复 mockHonorMember (#2473 by @Nambers)

mirai-console

优化和修复

  • 修复事件文档中 AutoLoginEventStartupEvent 的描述 (#2692 by @BakaFT)

IDEA

新特性

  • 新增一个勾选框,为用户提供是否使用阿里云镜像仓库的选项 (#2636 by @Samarium150)
  • 添加 Gradle 插件的阿里云镜像仓库 (#1778, #2636 by @Samarium150)
  • 支持设置 jvmTarget (#2387, #2631 by @Samarium150)
  • 使插件在新建项目时创建 gradle-wrapper.properties 文件和 src/test 文件夹 (#2617, #2622 by @Samarium150)
mirai - 2.15.0-M1

Published by Karlatemp over 1 year ago

mirai-core

不兼容变更

  • 删除了旧版的为兼容 Java 生成的阻塞式方法桥

    这只会导致依赖 mirai 2.1.0 (发布于 2 年前) 编译的 Java 代码现在无法使用 mirai 2.15.0-M1 及以上版本运行. 将它们使用 2.15.0-M1 及以上重新编译即可运行.

    这是因为 KJBB 以前有 bug, 会生成返回值为 Unit 的方法桥. mirai 为了兼容, 一直让 KJBB 既生成返回 Unit 的, 也生成返回 void 的. 但自 Kotiln 编译器 1.8.0 起, 其 IR lowering 会把 companion object 中的静态函数 @JvmStatic 的返回值由 Unit 变更为 void, 导致编译器插件 KJBB 不再能做兼容.

新特性

  • 支持扫码登录 (#2502 with @StageGuard, #1281)

新的登录方法通过 BotAuthorization & BotFactory.newBot(id: Long, authorization: BotAuthorization) 登录

关于详细的使用方法请参考 BotAuthorization 的注释

扫码登录的实现不一定稳定 (因为涉及修改了大量内部登录和维护在线逻辑), 文档也还在正在准备中.
在 2.15.0-RC 可能会修改扫码登录的 API.

mirai-console 尚未支持在命令中指定扫码登录, 但是提供了 MiraiConsole.addBot(id: Long, authorization: BotAuthorization) 用于扫码登录

优化和修复

  • 更新 Kotlin 到 1.8.10, kotlinx-serialization 到 1.5.0 (#2578)
  • 修复特殊情况可能无法加载 services 的问题 (#2268, #2511 by @Nambers, #2428 by @cssxsh)

    例如在 Minecraft 插件中

  • 增加 TxCaptchaHelper 可用性无法保证的警告 (#2564 by @MrXiaoM)
  • 修正消息多态序列化, 输出的 JSON 不再包含多余的 "type" 字段 (#2414)
  • 修正群公告发送失败报错 no login (#2069, #2512 by @cssxsh)
  • 修正使用 Announcements.get(fid) 出现 kotlinx.serialization.MissingFieldException: Field 'msg' (#2509, #2512 by @cssxsh)
  • 修正短暂断网时不能成功重连 (#2488, #2504, #2505 by @sandtechnology)
  • 修复 OfflineMessageSource 回复时, 引用回复的 At 变空白的问题 (#2501)
  • 在无法连接服务器时在报错信息中携带尝试连接的服务器 (#2576 by @cssxsh)
  • 修正 dumpTlvMap 返回值不正确的问题 (内部) (#2557 by @MrXiaoM)
  • 修正文档细节 (#2547 by @7aGiven)

mirai-core-mock

  • 在 upload 后的 MockImage 中提供 size 属性 (#2515)

mirai-console

新特性

  • JvmPlugin 以 getResource 方法获取全局资源文件 (#2536 by @ArgonarioD)
  • 添加新事件 StartupEvent, AutoLoginEvent (#2446 by @cssxsh)

    分别在 Console 启动完成后, 和自动登录后触发

优化和修复

  • 文档修正(#2503 by @7aGiven, #2506 by @7aGiven, #2457 by @char-46, #2577 by @cssxsh, #2491 by @EnchStudio)
  • 修复在Android系统运行时,被杀后台时抛出的 InterruptedException 导致崩溃 (#2474 by @zhaodice)
  • 修复使用 Console 扩展时,对于扩展的函数返回非 null 值报错的情况 (#2528 by @NoMathExpectation)
mirai - 2.14.0

Published by Karlatemp over 1 year ago

2.14.0 的稳定版本,相比 2.14.0-RC 没有更新。

mirai - 2.13.4

Published by Him188 over 1 year ago

mirai-core

优化和修复

  • 修复无法登录的问题 (#2433 by @sandtechnology)

此修复也在 2.14.0-RC 包含

mirai - 2.14.0-RC

Published by Karlatemp almost 2 years ago

mirai-core

不兼容变更

  • 删除 SwingLoginSolver (#2410)

它以前是设计给解决图形验证码, 而现在基本不会遇到图形验证码了。现在将默认使用命令行版本 LoginSolver。
以前使用 "-Dno-desktop" 可以禁用 SwingLoginSolver,现在这个选项将没有效果,不会报错。

  • 现在使用 RemoteFile 将会得到编译错误

RemoteFile 早在 2.8 就弃用了, 使用时会得到警告. 现在起使用将会得到编译错误.

新特性

  • 群聊获取历史消息 (Group 实现 RoamingSupported) (#1866, #2332 by @StageGuard )

可使用 group.roamingMessages / group.getRoamingMessages()

  • 商城表情: 石头剪刀布 (#2220 by @cssxsh )

类型名称为 RockPaperScissors

  • 群打卡事件支持 (#1663, #2217 by @cssxsh )

类型名称为 SignEvent

  • Announcement 现在可以获取 已确认/未确认 的群成员 (#2255 by @cssxsh )

优化和修复

  • 修复无法登录的问题 (#2433 by @sandtechnology )

此修复也会在 2.13.4 包含

  • 修复群员列表缓存文件不完整时会导致 bot init 失败的错误 (#2399)
  • 当设备信息等变更的时候清除缓存 (#2346, #2388)

不清除会导致登录失败等问题

  • 修复 iOS 无法查看私聊转发消息的问题 (#1575)
  • 修复转发消息存在特殊字符时无法加载的问题 (#2241)
  • 修正 contentToString() 注释不严谨处 (#2373, #2374 by @MrXiaoM )
  • 修正 PokeMessage.id (#2170)
  • 修复 QuoteReply 无法引用 bot 发出的 ForwardMessage (#2342)
  • 修改日志等级的颜色 (#2336)

    现在 WARN 是金黄色,而不是红色

mirai-core-mock

优化和修复

  • 避免 MockAbsoluteFile.md5/sha1 可能为空 (#2436 by @Nambers )
  • 修复部分信息撤回逻辑不正确的错误 (#2421 by @Nambers )
  • 修复 MockNormalMember.modiyAdmin() 逻辑错误 (#2420 by @Nambers )
  • 修复 uploadMockImage 上传相同文件时触发 java.nio.file.FileAlreadyExistsException (#2401)
  • 引入 AvatarGenerator
  • 修复联系人头像等信息更新同步的问题

mirai-console

新特性

  • JvmPlugin 中现在可以调用 mirai console 所使用的针对 Kotlin object 优化后的 SPI Service Loader (#2247 by @cssxsh)

优化和修复

  • 修复 JvmPlugin.onDisable 被多次执行的错误 (#2015, #2397)
  • 修复低版本 Android 系统报错 java.lang.NoSuchMethodError: No virtual method getDeclaredAnnotation(Ljava/lang/Class;)L (#2354 by @zhaodice)
  • 在命令的报错中去除不必要的 InvocationTargetException 包装 (#2258 by @cssxsh )
  • 优化 MiraiLogger (在 mirai-console) 性能 (#2341)
  • SLF4J 支持 (#2341)

IDEA

  • 支持 2022.3 (#2372)
    • 新插件版本号为 223-2.14.0-172-1
    • 新版本只支持 2022.3 + Kotlin 1.7.20 (因为 2022.3 捆绑 1.7.20)

关于 mirai-console SLF4J 支持 (#2341)

配置文件修改

修改均为默认配置, 先前已经生成的配置不会进行修改

Logger.yml

 # 默认日志输出等级
 # 可选值: ALL, VERBOSE, DEBUG, INFO, WARNING, ERROR, NONE
 defaultPriority: INFO
 # 特定日志记录器输出等级
 loggers: 
   example.logger: NONE
   console.debug: NONE
   Bot: ALL
+  org.eclipse.aether.internal: INFO
+  org.apache.http.wire: INFO

+# 是否启动外部日志框架桥接
+binding: 
+  slf4j: true

ABI 变更

注: 实际上 console 没有直接的 ABI 变更

依赖更新: org.slf4j:slf4j-api:1.7.32 -> 2.0.3

此依赖的更新只会影响 slf4j-api 的对接, 并不会影响 slf4j-api 的单纯使用

即不会对插件有任何影响, 只会对部分对 console 进行高度自定义的会有少许影响

其他 API 变更

  • mirai-logging-log4j2 现在使用 org.apache.logging.log4j:log4j-slf4j2-impl
  • mirai-logging-slf4j-logback 现在使用 1.3.4
  • mirai-core-all 现在携带的是 slf4j 2.0.x

新年快乐! 🎆🎉

mirai - 2.13.3

Published by Him188 almost 2 years ago

mirai-core

优化和修复

  • 修复登录时出现 DecryptionFailedException 的问题 (#2167, #2419 by @sandtechnology)
  • 修复使用 ANDROID_PHONEANDROID_PAD 登录时出现错误 "版本过低" 的问题 (#2405, #2423 by @sandtechnology)
  • friendGroupId 增加默认值 0, 以兼容旧缓存 (#2403 by @cssxsh)
mirai - 2.13.2

Published by Him188 almost 2 years ago

mirai-core

优化和修复

  • 修复发送图片时发生 java.lang.NoSuchMethodError 的问题 (#2381)

    自 2.13.0

mirai - 2.13.1

Published by Karlatemp almost 2 years ago

mirai-core

优化和修复

  • 修复找不到 OkHttp 等问题 (#2324, #2331)
  • 优化 UnsupportedSliderCaptchaException 的错误提示
  • 修复验证码解决器报错时没有按照预期停止 bot 的错误逻辑
  • 修复 java.lang.ArrayIndexOutOfBoundsException: arraycopy: last destination index 4132 out of bounds for byte[4096] (#2309)

mirai-console

优化修复

  • 修复 console 显示进度条的时候出现死锁 (#2322)
  • 修复 console 中 Gradle 缓存路径检查不正确的问题 (#2357)
  • 修复 console 中指定多个远程仓库地址时未按照预期工作的错误 (#2358 by @cssxsh)
mirai - 2.13.0

Published by Him188 almost 2 years ago

2.13.0 包含对 2.13 前几个预览版本的修复和一些优化

mirai-core

优化和修复

  • 修复使用 ANDROID_PHONE 登录时提示 "当前QQ版本过低,请升级至最新版本后再登录。" 的问题 (#2298, #2312 by @cssxsh)

    已知 ANDROID_WATCH 可能仍然无法登录

  • 修复在 Android 平台遇到 "Duplicate class" 的问题 (#2291)

    此问题由 2.13.O-M1 引入, 在 2.13.0-RC 尝试过修复但没有成功解决. 本次修复已被验证可用.

  • 为 2.13.0-RC 弃用的 LoginSolver.onSolveUnsafeDeviceLoginVerify 增加了默认实现

    所以在实现 LoginSolver 就不需要覆盖这个已经被弃用的方法了. 请覆盖新增的支持短信验证的 onSolveDeviceVerification 替代.

  • 优化一些潜在的内存泄露问题

    如果你好奇, commit 为 81a09549. 实际上它只会在很少的情况下有影响.

  • 优化了在发送消息失败时的堆栈信息
  • 优化了与群文件相关的源码内文档

    Group 类增加了引导等

mirai-console

新特性

  • 在自动登录时展示正在使用的协议类型和心跳策略 (#2304 by @cssxsh)
  • 增加了 Maven Central 仓库 https://repo1.maven.org/maven2 作为备用解决插件依赖的仓库

    因为阿里云代理不太稳定. 目前仍然优先尝试速度更快的阿里云代理, 在失败时会使用 Central 仓库.

优化和修复

  • 插件如果没有显式指定 Ktor 依赖, 则为其使用 Ktor 1.6.7 (#2297)

    以解决在 2.13 以前编译的插件的兼容性问题

  • 修复在启动过程中调整窗口大小导致报错 kotlin.UninitializedPropertyAccessException 的问题 (#2317)

    此问题非 2.13 引入

mirai-core-mock

不兼容变更

  • broadcastMsgSyncEvent 增加了 OtherClient 参数

    不兼容旧版 (2.13.0-RC, 2.13.0-RC2) 代码

mirai - 2.13.0-RC2

Published by Karlatemp almost 2 years ago

2.13.0-RC2 包含对 2.13 的补充和对 2.13.0-RC 的修复.

mirai-core

优化和修复

  • 修复无法加载 2.9.0 以前版本生成的设备信息的问题 (#2280)
  • 修复因好友分组列表加载失败而造成好友列表加载失败的问题 (#2274)
  • 修复网络断开时无法重连的错误
  • 修复重连后 Invalid number format: 'msfwifi' 导致的立刻断开连接
  • 修复 Bot.close 时出现 StackOverflowError 的问题 (#2266)
  • 修复非 snapshots 版本无法在 MPP 项目依赖的问题 (Could not resolve net.mamoe:mirai-core-api:2.13.0-RC) (#2270)
  • 修复使用 HTTP API 相关功能报错 java.lang.NoClassDefFoundError: okhttp3/Request$Builder 的问题 (#2263)
  • 修复获取群语音下载链接失败的问题 (#2269)

    此问题非 2.13 引入

  • 在使用不支持滑动验证的验证码处理器的错误中附带所使用的验证器的具体信息

mirai-core-mock

优化和修复

  • 修复在模拟环境时的信息序列化相关问题
mirai - 2.13.0-RC

Published by Him188 about 2 years ago

2.13.0-RC 包含:

  • 支持使用短信验证码进行设备锁验证
  • 支持查看和修改好友分组
  • 支持查询和修改群员头衔等活跃数据
  • Core 模拟测试框架
  • Console 下载进度条
  • 一些问题修复

mirai-core

不兼容变更

  • mirai-core-api 去除了对 kotlinx-coroutines-jdk8 的依赖.

新特性

  • 支持使用短信验证码进行设备锁验证 (#717, #2109, #2216)
  • nextEventnextEventOrNull 新增 intercept 参数, 可在满足条件时拦截事件 (#1668, #2177 by @Nambers)
  • 支持查看和修改好友分组 (#1390, #1243, #2113 by @Nambers)

    好友分组定名为 FriendGroup.

    • 新增 Friend.friendGroup 获取该好友所属分组.
    • 新增 Bot.friendGroups 获取好友分组列表并操作分组.
  • 支持查询和修改群员头衔等活跃数据 (#2204, #2086, #2115 by @cssxsh)
    • 新增 Group.active 获取群的活跃数据.
    • 新增 Member.active 获取该成员的活跃数据.
  • 新增 AbstractExternalResource.input 的默认实现

    在实现自定义 ExternalResource 时可能有帮助

优化和修复

  • 更新 ANDROID_WATCHMACOS 的协议信息 (#2228 by @cssxsh)
  • 修复网络层的异常处理流程, 优化重连逻辑
    • 修复断线重连时, 日志快速不断输出同一个异常, 之后无法恢复连接的问题 (#2148)
    • 修复离线时大量打印 HeartbeatFailedException 的问题 (#2175)
  • 优化由网络层抛出的异常的堆栈信息

    现在不再有循环引用, 而且更简洁
    CancellationException 将会被替换为真实原因

  • 修复在 Android 上遇到 'Duplicate class' 的问题 (#2248)
  • 修复合并转发内容中用户昵称错误的问题 (#2187)

    此修复也包含在 2.12.3

  • 优化各平台的 ECDH 实现 (#2161 by @AdoptOSS)
  • 修复使用静态序列化器时无法编译的问题 (#2230)

    自 2.13.0-M1

  • 在发送群公告失败时抛出有正确信息的异常而不是序列化错误 (#2069)
  • 修复日志中无法获得调试信息的问题 (#2097)
  • 提升一些已弃用的 API 的弃用等级 (#2213)

mirai-console

新特性

  • 在下载时展示进度条 (#2133, #2140)

    也公开了进度条 API 供插件使用. 见 MiraiConsole.newProcessProgress().

  • /login 登录时使用可用的自动登录配置 (#2209 by @cssxsh)
  • 增加了 Console 前端实现的基础模块 mirai-console-frontend-base

优化和修复

  • 优化文档细节 (#2207)
  • 优化日志系统 (#2196)
    • Console 现在总是使用 core 的 MiraiLogger.Factory API 创建日志
    • 禁止插件修改日志系统
    • 允许通过 classpath 修改日志系统
    • 在保存日志到文件时不包含颜色符号 (#2218)
  • 在欢迎时打印 Mirai Console 字符画

    以帮助区分 mirai-console 和 mirai-console-loader

mirai-core-mock

新增 Core 模拟测试框架 mirai-core-mock. 版本号与 mirai-core 相同. 相关文档 (#1304, #1521)

使用模拟测试框架可以构造虚拟 Bot, 模拟收到各种事件.

IDEA

  • 在创建插件项目时自动从 Maven Central 获取 mirai 使用的 Kotlin 版本 (#2240, #2244 by @MrXiaoM)
mirai - 2.12.3

Published by Him188 about 2 years ago

mirai-core

优化和修复

  • 修复合并转发内容中用户昵称错误的问题 (#2187)
mirai - 2.13.0-M1

Published by Him188 about 2 years ago

2.13.0-M1 包含:

  • Core 新的 native 编译目标
  • 支持修改好友备注
  • Console 指令参数支持 vararg 和原生类型数组
  • 大量贡献相关文档更新
  • 一些问题修复

以下内容正在进行中, 将发布在 2.13.0-RC:

  • Core 模拟测试框架
  • 支持查看和修改好友分组
  • Console 下载进度条

mirai-core

不兼容变更

  • 将 Ktor 嵌入 mirai-core 并且不公开 (#2096, #2084)

    mirai 内部现在使用 Ktor 2.0 并且不公开.
    所有曾经借由 mirai-core-api 获得 Ktor 依赖的用户都将需要显式定义 Ktor 依赖.
    但是这将会解决版本兼容问题. 用户可以任选 Ktor 1 或者 Ktor 2

  • Audio 现在继承 ConstrainSingle (#2093)

    所以它将会只能单独作为内容存在于消息链中
    这不会影响现在以正确逻辑编写的代码, 但可能影响一些边界情况

新特性

  • mirai-core 新增 native 编译目标, 可编译为动态链接库或可执行文件 (#2048)

    native 编译目标是 Kotlin/Native, 不依赖 JVM. 支持 macOS, Windows, Linux.
    目前只可以使用 Kotlin/Native 开发. C API 的导出正计划中.

    特别感谢 @AdoptOSS 的帮助:

    • 优化 CI 配置 (#2110)
    • 实现 Windows 平台的 socket 请求 (#2121)
    • ECDH 的 OpenSSL 实现 (#2123, #2161)
  • 支持修改好友备注 (#554, #2112)

    friend.remarkval 变为 var, 修改时会触发 FriendRemarkChangeEvent.

  • Image 序列化时支持全部属性 (#2036 by @cssxsh)

    以前只会输出 imageId, 现在还会输出 width 等全部必要属性. 兼容旧版本, 在读取时会使用默认 0 值.

优化和修复

  • 重写并检查了消息序列化的正确性 (#2159)

    它现在完全支持全平台.
    修复了一些元素的序列化可能有不期望行为的问题, 例如在不应该有 type (classDiscriminator) 的时候有或相反.
    正确支持并验证了 @Contextual.

    这可能导致新的问题, 建议在试用本测试版时测试是否还能正常工作并及时反馈问题以避免正式版本仍有问题

  • 修复合并转发消息在 iOS 移动端显示错位的问题 (#2071)
  • 更新贡献相关文档, 包括
    • mirai 项目组成
    • 构建多平台的 Core
    • 构建其他 JVM 项目
    • 基于新架构实现新消息协议支持
  • 优化文档细节 (#2182 @2938137849)
  • 更新依赖
    • Kotlin 1.7.10
    • kotlinx-serialization 1.3.3
    • kotlinx-coroutines 1.6.4
    • kotlinx-atomicfu 0.17.3
    • Ktor 2.1.0

mirai-console

不兼容变更

  • 新增 CommandSenderOnMessage, 修正 CommandSender 的部分扩展的行为 (#2105)

新特性

  • 指令支持 vararg 和原生数组类型参数 (#1799, #1760 by @cssxsh)
  • 新增其他客户端消息同步事件的指令发送者 OtherClientCommandSenderOnMessageSync (#1878, #1879 by @cssxsh, #2085)
mirai - 2.12.2

Published by Him188 about 2 years ago

mirai-core

优化和修复

  • 修复上传文件时没有发送文件消息的问题 (#2195)

    自 2.12.0

mirai - 2.12.1

Published by Him188 about 2 years ago

mirai-core

优化和修复

  • 修复合并转发消息显示昵称错误的问题 (#2114)

mirai-console

优化和修复

  • 修复前置插件存在私有依赖时, 插件无法链接相同依赖的问题 (#2108)
  • 修复插件使用内置依赖错误 (#2126)
  • 修复加载插件时,若插件 JAR 包含 JVM
    内置依赖,会导致其他插件直接链接到该插件内依赖并重复加载报错 (#2141)

IDEA

优化和修复

  • 支持 2022.2 (#2124)

    新插件版本号为 221-2.13.0-171-1

mirai - 2.12.0

Published by Him188 over 2 years ago

mirai-core

优化和修复

  • 修复部分情况下发送图片无法显示和发送 GIF 后图片不播放的问题 (#2114 by @sandtechnology)

    此问题并非 2.12.0-RC 引入

mirai-console

优化和修复

  • 修复前置插件存在私有依赖时, 插件无法链接相同依赖的问题 (#2108)

    此问题于 2.11 引入

mirai - 2.12.0-RC

Published by Him188 over 2 years ago

2.12 带来以下主要更新:

  • EventChannel 到协程 Flow 的对接;
  • 消息链性能优化;
  • 针对开发易用性的优化;
  • 对调试插件的更好支持;
  • 大量文档更新;
  • 以及一些问题修复。

mirai-core

不兼容变更

  • 弃用 EmptyMessageChain,以 emptyMessageChain() 函数替换 (#1997)

    因为内部结构有变更,见下文。Java 可以 MessageUtils.emptyMessageChain() 替换。

  • MarketFace.contentToString 现在在原本会返回空字符串的情况下会返回 "[商城表情]" (#2030 by
    @cssxsh)

    原本会返回空字符串是因为服务器提供的表情名称可能为空。

  • 修复 FileMessage 的序列化名称 (#2041 by @cssxsh)

    以前错误地使用了 Image,现在改为 FileMessage。以前序列化的 FileMessage 可能会无法反序列化。

  • Image.equals 现在会比较全部属性

    而不是只比较 imageId。因为现在图片没有一些详细属性时可能无法发送。

  • 弃用 EventDisabled 属性 (#1911)

    它可以关闭事件功能,但这并不是明智的做法。

  • 弃用 GroupEntranceAnnouncementChangeEvent (#1873)

    这个事件在 2.7 增加 Announcements 时就已经无效了。

新特性

  • 优化 MessageChain 实现的性能,现在在大量调用 Message.plus
    构造消息链也能获得与 MessageChainBuilder 相当的性能。(#1997)

    只修改了内部实现,API 及行为都没有变化。

  • 优化处理合并转发消息的效率
  • 新增 EventChannel.asFlow 获得事件通道的 Flow<...> (#1911)

    协程 Flow 很适合承载事件广播功能,拥有更高的通用性和扩展性。(mirai 未使用是因为在
    mirai EventChannel 设计之时 Flow 还未稳定)

  • 新增 Java 友好的 EventChannel.exceptionHandler() (#1953)
  • 新增 BotConfiguration.disableAccountSecretes 关闭 account.secrets

    account.secrets 保存账号的会话信息。
    它可加速登录过程,也可能可以减少出现验证码的次数。如果遇到一段时间后无法接收消息通知等同步问题时可尝试禁用。

优化和修复

消息

  • 部分的消息类型的 toString 将包含更多属性,涉及:

    • Image

      现在图片没有一些详细属性时可能无法发送,因此属性也与 imageId 一样重要。更多的信息将帮助调试。

    • MessageSource
    • QuoteReply
    • FileMessage
  • 重写消息协议层与发送消息流程 (#1997)

    可扩展,易于测试,为将来支持频道和模块化等做准备。这不会影响现有的功能。

  • ForwardMessage.BuilderNode 实现 toString

事件

  • 优化 EventChannel 事件异常处理机制 (#1911)

    现在广播方不会收到来自监听方的事件,监听方有全部责任处理自己的异常,未处理的异常会通过默认日志输出。

  • 优化 nextEventsyncFromEvent
    • 完善文档
    • 在遇到异常时正确停止监听器
  • 针对异常处理机制完善事件相关文档:EventEventChannelListener
  • 增加事件追踪日志,可由 -Dmirai.event.trace=true 启用

    这将会在遇到异常时输出注册事件监听器时的 stacktrace,以及记录每一个事件的广播。

  • 修复官方 macOS 客户端发送给机器人的图片后缀均为 .mirai 的问题 (#1111)

其他

  • 更新开发文档索引

    现在在开发介绍文档中能访问 mirai-console 相关文档,在《准备工作》中也能了解启动 console 的方式。

  • Bot.close 的自动登出增加超时

mirai-console

新特性

  • 新增 CommandContext,支持在指令中获得原消息链 (#2099)

    三种内置指令 RawCommandSimpleCommandCompositeCommand 的 Kotlin 以及
    Java 版(J 前缀)都支持。参考文档
    能获得原消息链也就能获得 MessageMetadata (#1835)。

  • 支持在 JSimpleCommandJCompositeCommand 修改 CommandArgumentContext

    参考文档

  • 增加 PluginCustomCommandSender 可供插件实现 CommandSender (#1964)
  • 新增 MiraiConsole.shutdown优雅地关闭 Console (#1959, #2016)
    • 修复收到 SIGINT Console 不退出的问题 (#2042)
    • 关闭时有一分钟限时,超时后强制结束

    优雅指的是会禁用插件,依次停止各种服务并保存数据。

  • 在加载配置和数据文件失败时自动备份原文件 (#2089 by @cssxsh)
  • 当插件加载失败时标记其为加载失败而不关闭 Console (#2022 by @Nambers)

    当有插件依赖这个失败的插件时,也会禁用相关插件。
    实际上该功能可由前端选择是否开启。mirai 官方的终端前端以及 Mirai Android 都会启用该功能。

  • 相反于加载顺序卸载插件 (#1994)

    若 A 依赖 B,现在会先卸载 A 再卸载 B。

优化和修复

插件

  • 修复插件无法使用更高版本的 Ktor 等 mirai-core 也使用的依赖的问题 (#2051)

    现在可以使用 Ktor 2.0

  • 修复插件在引用了相同的库时,在某些的情况下会产生冲突的问题 (#2054)
  • 修复在插件配置的路径中使用子路径出现的异常的问题 (#2088 by @MrXiaoM)
  • 现在 PluginManager.getPluginDescription 不再需要插件已被加载 (#2052)

    这可能帮助实现 PluginLoader

文档

  • 增加关于使用日志的文档 (#2003)
  • 重写指令文档

    增加大量示例、覆盖更多内容、用语更简单。
    增加关于智能参数解析的文档 (面向用户面向开发者的都有) (#1952)

  • 优化事件文档

    警告在插件中使用 GlobalEventChannel 的危险性。

  • 优化文档细节 (#2078 by @xtyuns, #2067 by @CauchyDOOM, #2095 by @Hugozys)

mirai-console-gradle

新特性

  • 新增任务 runConsole 启动模拟 Mirai Console 实例 (#2056, #2058)

    解决了在 IDEA 直接运行 RunTerminal 时出现 NoClassDefError 等错误的问题 (#2055)。现在在
    IDEA 新生成的项目可以选择 Mirai 文件夹中的 Run Mirai Console 来启动测试。详见 文档

优化和修复

  • 修复 shadowLink 打包的依赖在其他依赖也引用时无效的问题 (#2070)