Releases: mamoe/mirai
Releases · mamoe/mirai
2.7.0
mirai-core
2.7.0 相较于 2.7-RC 的变更以斜体表示, 其他为基于 2.6.8 的变更.
不兼容变更
- 弃用
GroupSettings.entranceAnnouncement
, 以新加入的Announcements
代替 (#1398, #1399) - 弃用语音
Voice
, 以新增的Audio
代替. 完全保留兼容性. - 现在移除群成员 (
NormalMember.kick
) 时默认不将目标群员加入黑名单 (#1457) MessageSubscribersBuilder
的startsWith
和endsWith
现在不再 trim 参数. (#1314)- 修复无法处理带首尾空格的消息的问题. (#1282)
即如果参数有空格, 以前的代码会过滤空格, 但现在不会.
新特性
消息
- 新语音 API
Audio
(#1452) - 支持最新的原生表情 (
Face
) (#1260) - 新增 Kotlin DSL
subscribeUserMessages
监听UserMessage
- 为
Image
实现hashCode
与equals
, 仅判断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)
网络层
- 修复在接收到
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
优化和修复
- 在加载插件时打印其版本号 (mamoe/mirai-console#369)
- 在阻塞环境中执行非
suspend
的指令方法 (mamoe/mirai-console#341) - Console 内置配置使用只读的
ReadOnlyPluginConfig
(mamoe/mirai-console#375) - 更新依赖
依赖模块 原版本号 新版本号 yamlkt 0.9.0 0.10.0
mirai-console-gradle
新特性
-
简化
JSimpleCommand
的构造器 (mamoe/mirai-console#349) -
允许用户覆盖 Kotlin 版本号 (而非与 mirai-console 编译时的版本号相同) (mamoe/mirai-console#367)
因此可以使用较旧的版本, 但若使用更新版本可能会导致不兼容.
-
在生成插件项目时:
- 添加
test/kotlin/RunTerminal.kt
以帮助测试 (mamoe/mirai-console#362, mamoe/mirai-console#366) - 添加
.gitignore
- 添加
不兼容变更
- 删除默认添加的
mavenCentral
仓库 (mamoe/mirai-console#389)使用者可能需要额外添加如下内容:
dependencies { mavenCentral() }
优化和修复
- 在
LoginCommand
登录完成后将结果同时发送给指令执行人和控制台 (mamoe/mirai-console#348) - 支持 Gradle 7.0 (mamoe/mirai-console#368)
- 删除对 Bintray JCenter 的引用 (#387)
感谢外部贡献者:
2.6.8
2.7-RC
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
优化和修复
- 在加载插件时打印其版本号 (mamoe/mirai-console#369)
- 在阻塞环境中执行非
suspend
的指令方法 (mamoe/mirai-console#341)
mirai-console-gradle
新特性
- 允许用户覆盖 Kotlin 版本号 (而非与 mirai-console 编译时的版本号相同) (mamoe/mirai-console#367)
因此可以使用较旧的版本, 但若使用更新版本可能会导致不兼容.
不兼容变更
- 删除默认添加的
mavenCentral
仓库 (#389)使用者可能需要额外添加如下内容:
dependencies { mavenCentral() }
优化和修复
- 删除对 Bintray JCenter 的引用 (#387)
2.7-M2
mirai-core
新特性
- 新增群公告 API
Group.announcements
(#138, #140, #1141, #1389) - 支持好友语音, 提供类似于发送图片的多种发送语音的 API (#931, #1310)
- 新增
Contact
的类似FileSupported
的公共VoiceSupported
接口, 由Group
与Friend
实现 - 新增
ExternalResource
,InputStream
,File
等资源类型发送为语音的 API (ExternalResource
静态方法) - 尽可能支持语音的转发, 直接转发协议数据结构
- 新增
- 支持语音的序列化 (#1368)
- 在 mirai-core 所有模块的 JAR
META-INF/MANIFEST.MF
里存储版本信息 (#1351, #1355) - 支持最新的原生表情 (
Face
) (#1260 by @sandtechnology) - 为
Image
实现hashCode
与equals
, 仅判断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
- 修复无法检测部分群的群管理员的问题 (#1192, #1257 by @sandtechnology)
- 修复无法获取群公告的问题 (
IMirai.getRawGroupAnnouncements
) (#1322, #1372 by @sandtechnology)
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
mirai-core
不兼容变更
- 重构网络层 (#1226, #1191)
即使这可能还未稳定, 但也建议尝试 2.7-M1 并及时反馈问题 MessageSubscribersBuilder
的startsWith
和endsWith
现在不再 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
新特性
- 简化
JSimpleCommand
的构造器 (mamoe/mirai-console#349)
优化和修复
- 在
LoginCommand
登录完成后将结果同时发送给指令执行人和控制台 (mamoe/mirai-console#348) - 支持 Gradle 7.0 (mamoe/mirai-console#368)
IDE
新特性
- 在生成插件项目时:
- 添加
test/kotlin/RunTerminal.kt
以帮助测试 (mamoe/mirai-console#362, mamoe/mirai-console#366) - 添加
.gitignore
- 添加
优化和修复
- 兼容 Kotlin 1.5.0 (mamoe/mirai-console#363)
已知问题及解决方案
登录异常
问题表现
- 登录时一直要求输入验证码 #1359
- 登录没有反馈结果
- 登录时一直刷 "AccountSecretsManager" 的日志
原因及解决方案
#1352, 已经在 2.7-M2-dev-1
修复. mirai-core 用户可以更换依赖为 2.7-M2-dev-1
. mirai-console 用户可以在登录无响应时在 "bots" 目录中找到日志文件获得错误信息