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)
感谢外部贡献者: