Skip to content

Releases: mamoe/mirai

2.7.0

25 Aug 07:51
Compare
Choose a tag to compare

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()
    }

优化和修复


感谢外部贡献者:

2.6.8

25 Aug 06:36
Compare
Choose a tag to compare

从 2.7-M1, 2.7-M2, 2.7-RC 提取了一些修复:

  • 修复当 QuoteReply 处于 MessageChain 队尾时, 手机端查看会有吞字符的问题 (#1451)
  • 修复当合并转发消息内容前 4 条存在 & 时手机端会无法查看的问题
  • 修复无法撤回好友消息的问题 (#1293)
  • 修复群临时私聊消息无触发的问题 (#1094, #1232)

2.7-RC

11 Aug 13:41
Compare
Choose a tag to compare
2.7-RC Pre-release
Pre-release

mirai-core

不兼容变更

  • 弃用 GroupSettings.entranceAnnouncement, 以 2.7-M2 加入的 Announcements 代替 (#1398, #1399)
  • 弃用语音 Voice, 以新增的 Audio 代替. 完全保留兼容性.
  • 现在移除群成员 (NormalMember.kick) 时默认不将目标群员加入黑名单 (#1457)

新特性

  • 新语音 API Audio, 支持好友和群语音并提供兼容性保障 (#1452)
  • 支持在移除群成员 (NormalMember.kick) 时选择是否加入黑名单 (#1457)
  • 新增 Kotlin DSL subscribeUserMessages 监听 UserMessage
  • 允许使用第三方日志库如 SLF4J, Log4J 接管 mirai 日志系统 (#1426, #1464)

优化和修复

网络层

  • 修复在 Android 平台登录时发生 OutOfMemoryError 的问题 (#1404)
  • 修复在 Android 平台断线一分钟后仍未重连的问题 (#1361)
  • 修复可能会无限重连的问题 (配置中重连尝试次数被忽略)
  • 修复在接收到 ReqMSFOffline 时没有重连的问题
  • 修复某些情况下网络层报错 CancellationException 的问题
  • 修复某些情况下重连时遇到解析数据包错误的问题 (ExceptionInPacketCodecException) (#1405, #1408)
  • 修复某些情况下无法识别群管理员权限的问题 (#1192)
  • 修复其他客户端消息同步事件的日志 (#1380)
  • 优化在遇到设备锁验证时的提示消息

群公告

  • 修复无法发送启用了 "发送给新成员" 的群公告的问题
  • 修复读取群公告时未解码某些 HTML 转义的问题

Message

  • 修复当 QuoteReply 处于 MessageChain 队尾时, 手机端查看会有吞字符的问题 (#1451)
  • 修复当合并转发消息内容前 4 条存在 & 时手机端会无法查看的问题

mirai-console

优化和修复

mirai-console-gradle

新特性

  • 允许用户覆盖 Kotlin 版本号 (而非与 mirai-console 编译时的版本号相同) (mamoe/mirai-console#367)

    因此可以使用较旧的版本, 但若使用更新版本可能会导致不兼容.

不兼容变更

  • 删除默认添加的 mavenCentral 仓库 (#389)

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

    dependencies {
      mavenCentral()
    }

优化和修复

  • 删除对 Bintray JCenter 的引用 (#387)

2.7-M2

06 Jul 14:06
Compare
Choose a tag to compare
2.7-M2 Pre-release
Pre-release

mirai-core

新特性

  • 新增群公告 API Group.announcements (#138, #140, #1141, #1389)
  • 支持好友语音, 提供类似于发送图片的多种发送语音的 API (#931, #1310)
    • 新增 Contact 的类似 FileSupported 的公共 VoiceSupported 接口, 由 GroupFriend 实现
    • 新增 ExternalResource, InputStream, File 等资源类型发送为语音的 API (ExternalResource 静态方法)
    • 尽可能支持语音的转发, 直接转发协议数据结构
  • 支持语音的序列化 (#1368)
  • 在 mirai-core 所有模块的 JAR META-INF/MANIFEST.MF 里存储版本信息 (#1351, #1355)
  • 支持最新的原生表情 (Face) (#1260 by @sandtechnology)
  • Image 实现 hashCodeequals, 仅判断 Image.imageId (#1302)
  • 在 GC 时释放泄露的资源 (#1383)
  • 默认启用滑动验证码支持

优化和修复

  • 更新依赖
    依赖模块 原版本号 新版本号
    kotlinx-serialization-core 1.1.0 1.2.1
  • 增加 @NotStableForInheritance 标注不应该被继承的接口 (#1385)

Bot

  • 在收到密码错误等失败返回后中断 Bot.login, 并记录到 bot.logger, 解决无限验证码的问题 (2.7-M1 regression). (#1352)
  • 使用新版本登录加密算法 (#1237 by @sandtechnology)
  • 处理状态心跳的返回值, 解决可能的无法接收消息问题 (#1241 by @sandtechnology)
  • 修复滑动验证码 UI 的链接
  • 优化网络层错误时的日志
  • 更好地支持单线程调度下的网络任务
  • 提升重连稳定性

Contact

Message

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

Event

  • 修复 EventChannel.filter Java 版在执行阻塞调用时会阻塞协程调度的问题
  • 确保 BotOnlineEvent, BotOfflineEvent 以及 BotReloginEvent 广播的时机及顺序

mirai-console

优化和修复

  • Console 内置配置使用只读的 ReadOnlyPluginConfig (mamoe/mirai-console#375 by @cssxsh)
  • 更新依赖
    依赖模块 原版本号 新版本号
    yamlkt 0.9.0 0.10.0

2.7-M1

19 Jun 19:23
Compare
Choose a tag to compare
2.7-M1 Pre-release
Pre-release

mirai-core

不兼容变更

  • 重构网络层 (#1226, #1191)
    即使这可能还未稳定, 但也建议尝试 2.7-M1 并及时反馈问题
    • 模块化内部结构, 使未来开发更容易
    • 优化重连时的日志, 每种异常只打印一次
    • 解决潜在的内存泄露问题
    • 修复被挤下线后反复重连失败的问题 (#1203)
    • 修复开启联系人缓存后无法接收好友消息的问题 (#1208)
  • MessageSubscribersBuilderstartsWithendsWith 现在不再 trim 参数. (#1314 by @AdoptOSS)
    • 修复无法处理带首尾空格的消息的问题. (#1282)

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

新特性

  • 支持群主设置或取消群员的管理员权限 (#547, #1178 by @HoshinoTented)
  • 支持嵌套的合并转发并支持序列化 (#1183, #1267, #1195, #1196)
  • MusicShare 支持酷狗音乐和酷我音乐 (#1228 by @wdvxdr1123)
  • 添加内联的 BotFactory.newBot (#1234)
  • 重新设计默认的登录解决器, 内嵌使用手机帮助解决滑块验证码的支持 (#1283, #1285)

优化和修复

  • 更新到 Kotlin 1.5, 更新相关依赖 (#1245, #1246, mamoe/mirai-console#346)
    • 使 MessageChain 变为 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
  • 修复 Bot 被挤下线后必须删除 account.secrets 才能登录的问题 (#1205)
  • 修复群临时私聊消息无触发的问题 (#1094, #1232 by @sandtechnology)
  • 修复转发消息 At 昵称错误的问题 (#1137)
  • 修复 MessageSubscribersBuilder.has 报错 ClassCastException 的问题 (#1223)
  • 修复 EventChannelKotlinExtensions 的引用歧义
  • 修复 BotFactory.newBot 无法调用 BotConfiguration.inheritCoroutineContext 的问题 (#1233, #1234)
  • 修复群员首次在群内发言时会触发 MemberCardChangeEvent 的问题 (#1151, #1231 by @sandtechnology)
  • 修复 BotOnlineEvent 有可能在登录成功后好一会才会推送的问题 (#1051)
  • 删除意外添加的 kotlinx.serialization 编译器依赖 (#1197 by @AdoptOSS)
  • 在同步好友消息记录 (序号) 失败时也继续登录 (#1222, #1253)
  • 文档更新 (#1291, #1248, ...)

mirai-console

新特性

优化和修复

IDE

新特性

优化和修复

已知问题及解决方案

登录异常

问题表现

  • 登录时一直要求输入验证码 #1359
  • 登录没有反馈结果
  • 登录时一直刷 "AccountSecretsManager" 的日志

原因及解决方案

#1352, 已经在 2.7-M2-dev-1 修复. mirai-core 用户可以更换依赖为 2.7-M2-dev-1 . mirai-console 用户可以在登录无响应时在 "bots" 目录中找到日志文件获得错误信息

2.6.7

18 Jun 16:31
fb91734
Compare
Choose a tag to compare

mirai-core

2.6.6

10 Jun 16:16
Compare
Choose a tag to compare

mirai-core

  • 修复上传好友图片时出现内部错误的问题 (#1317)

2.6.5

30 May 16:15
Compare
Choose a tag to compare

mirai-core

  • 在初始化同步好友消息记录超时时也继续登录 (#1222)
  • 删除不稳定 API 的使用, 提升稳定性, 兼容 Kotlin 1.5, ktor 以及协程的未来的更高版本 (#1254, #1247, #1165)

2.6.4

05 May 22:40
Compare
Choose a tag to compare

mirai-core

  • 修复同一个 QQ 在本地和服务器来回切换提示下线通知时必须删除缓存才能重新登录的问题 (#1205)
  • 处理可能遗漏的情况, 提升连接稳定性 (#1242, #1214 by @sandtechnology)
  • 修复解析来自 iPhone 设备的纯文本长消息时会在开头加入 UnsupportedMessage 类型元素的问题 (#1210)

2.6.3

02 May 06:55
Compare
Choose a tag to compare

mirai-core

  • 修复部分情况下群消息时显示发送成功,但实际上并没有正常显示的问题 (#1209, #1230, #1214 by @sandtechnology)
  • 修复 BotConfiguration.copy() 没有复制 statHeartbeatPeriodMillis 的问题
  • 新增心跳策略, 可作为无法发送消息时的临时解决方案 (#1229)