github mamoe/mirai v2.7.0
2.7.0

latest releases: v2.16.0, v2.16.0-RC, v2.15.0...
2 years ago

mirai-core

2.7.0 相较于 2.7-RC 的变更以斜体表示, 其他为基于 2.6.8 的变更.

不兼容变更

  • 弃用 GroupSettings.entranceAnnouncement, 以新加入的 Announcements 代替 (#1398, #1399)
  • 弃用语音 Voice, 以新增的 Audio 代替. 完全保留兼容性.
  • 现在移除群成员 (NormalMember.kick) 时默认不将目标群员加入黑名单 (#1457)
  • MessageSubscribersBuilderstartsWithendsWith 现在不再 trim 参数. (#1314)
    • 修复无法处理带首尾空格的消息的问题. (#1282)

    即如果参数有空格, 以前的代码会过滤空格, 但现在不会.

新特性

消息

  • 新语音 API Audio (#1452)
    • 支持好友语音, 提供类似于发送图片的多种发送语音的 API (#931, #1310)
    • 新增公共接口 VoiceSupported 接口, 由 GroupFriend 实现
    • 尽可能支持语音的转发, 直接转发协议数据结构
    • 支持语音的序列化 (#1368)
  • 支持最新的原生表情 (Face) (#1260)
  • 新增 Kotlin DSL subscribeUserMessages 监听 UserMessage
  • Image 实现 hashCodeequals, 仅判断 Image.imageId (#1302)
  • MusicShare 支持酷狗音乐和酷我音乐 (#1228)
  • 支持嵌套的合并转发并支持序列化 (#1183, #1267, #1195, #1196)

群操作

  • 新增群公告 API Group.announcements (#138, #140, #1141, #1389)
  • 支持在移除群成员 (NormalMember.kick) 时选择是否加入黑名单 (#1457)
  • 支持群主设置或取消群员的管理员权限 (#547, #1178)

其他

  • 重构网络层 (#1226, #1191)
  • 重新设计默认的登录解决器, 默认启用滑动验证码支持, 内嵌使用手机帮助解决滑块验证码的支持 (#1283, #1285)
  • 允许使用第三方日志库如 SLF4J, Log4J 接管 mirai 日志系统 (#1426, #1464)
  • 在 mirai-core 所有模块的 JAR META-INF/MANIFEST.MF 里存储版本信息 (#1351, #1355)
  • 在 GC 时释放泄露的资源 (#1383)
  • 添加内联的 BotFactory.newBot (#1233, #1234)

优化和修复

  • 更新到 Kotlin 1.5, 更新相关依赖 (#1245, #1246, mamoe/mirai-console#346)

    • 使 MessageChain 变为 sealed interface
    • 使 MessageEvent 变为 sealed interface
      依赖模块 原版本号 新版本号
      kotlin-compiler 1.4.30 1.5.10
      kotlin-stdlib 1.4.30 1.5.10
      kotlinx-coroutines-core 1.4.2 1.5.0
      atomicfu 0.15.1 0.16.1
      ktor 1.5.1 1.5.4
      kotlinx-serialization-core 1.1.0 1.2.1
  • 增加 @NotStableForInheritance 标注不应该被继承的接口 (#1385)

  • 删除意外添加的 kotlinx.serialization 编译器依赖 (#1197)

  • 文档更新 (#1291, #1248, ...)

网络层

  • 修复在接收到 ReqMSFOffline 时没有重连的问题
  • 修复某些情况下重连时遇到解析数据包错误的问题 (ExceptionInPacketCodecException) (#1405, #1408)
  • 修复被挤下线后反复重连失败的问题 (#1203)
  • 修复某些情况下无法识别群管理员权限的问题 (#1192)
  • 修复开启联系人缓存后无法接收好友消息的问题 (#1208)
  • 在同步好友消息记录 (序号) 失败时也继续登录 (#1222, #1253)
  • 修复 Bot 被挤下线后必须删除 account.secrets 才能登录的问题 (#1205)
  • 处理状态心跳的返回值, 解决可能的无法接收消息问题 (#1241)
  • 使用新版本登录加密算法 (#1237)
  • 绕过在 Android P 之后的版本无法使用 EC 的限制 (#1481)
  • 修复其他客户端消息同步事件的日志 (#1380)
  • 优化在遇到设备锁验证时的提示消息
  • 优化重连时的日志, 每种异常只打印一次
  • 解决潜在的内存泄露问题
  • 提升重连稳定性
  • 更好地支持单线程调度下的网络任务

Contact

  • 修复无法检测部分群的群管理员的问题 (#1192, #1257)
  • 修复无法获取群公告的问题 (IMirai.getRawGroupAnnouncements) (#1322, #1372)
  • 修正发送消息因 Bot 被禁言而失败时抛出的异常
  • 减少因群 uin 和 code 转换错误导致的问题 (#1479, fc8fd70)

Message

  • 去除合并转发消息卡片的多余的空格 (#1275)
  • 提升 MessageChain.get, MessageChain.contains 的性能
  • 修复协议内部消息类型被暴露给 MessageReceipt.source.originalMessage 的问题 (#1371)
  • Face.toString() 现在返回类似 [可怜], 而不是 [mirai:face:123] (#1382)
  • 修复转发消息 At 昵称错误的问题 (#1137)

Event

  • 修复 EventChannel.filter Java 版在执行阻塞调用时会阻塞协程调度的问题
  • 确保 BotOnlineEvent, BotOfflineEvent 以及 BotReloginEvent 广播的时机及顺序
  • 修复 EventChannelKotlinExtensions 的引用歧义
  • 修复 BotOnlineEvent 有可能在登录成功后好一会才会推送的问题 (#1051)
  • 修复群员首次在群内发言时会触发 MemberCardChangeEvent 的问题 (#1151, #1231)
  • 修复 MessageSubscribersBuilder.has 报错 ClassCastException 的问题 (#1223)

mirai-console

优化和修复

mirai-console-gradle

新特性

不兼容变更

  • 删除默认添加的 mavenCentral 仓库 (mamoe/mirai-console#389)

    使用者可能需要额外添加如下内容:

    dependencies {
      mavenCentral()
    }

优化和修复


感谢外部贡献者:

Don't miss a new mirai release

NewReleases is sending notifications on new releases.