Releases: mamoe/mirai
1.0.0
ContactOrBot
现在继承CoroutineScope
- 在没有手动指定
deviceInfo
时构建 Bot 将会发出警告, 须手动选择使用randomDeviceInfo
或fileBasedDeviceInfo
或自定义, 详见 BotConfiguration.kt: Lines 69-72
- 引入
SimpleListenerHost
以帮助 Java 处理事件监听 - 添加 Java 广播事件的方式:
EventKt.broadcast(Event)
- 添加
Bot.getInstanceOrNull
- 改进 JVM 平台的
PlatformLogger
, 添加DirectoryLogger
,SingleFileLogger
以提供重定向日志的快捷方式 - 统一日志格式, 使用 (正则)
^([\w-]*\s[\w:]*)\s(\w)\/(.*?):\s(.+)$
. 详见 PlatformLogger.jvm.kt: Line 46
- 弃用
Bot.queryUrl(Image)
, 改用image.queryUrl()
扩展. (保留兼容到 1.2.0) - 弃用
Bot.accept*
,Bot.reject*
等相应入群请求等事件的方法, 改用事件的成员函数. (保留兼容到 1.2.0)
- 修复
Bot
实例化时NPE
问题 - 修复网络状态差时
Bot
网络模块无法处理分包的问题 - 修复当无 Bot 在线时调用
image.queryUrl()
抛出的异常与 KDoc 描述不符的问题 - 修复
BotJoinGroupEvent
重复广播问题 - 修复邀请 Bot 进群时事件处理异常的问题 (#319)
- 修复当
Event
被实现为一个 Kotlinobject
时无法正常拦截事件的问题 - 修复图片链接获取为空的问题 (#318)
- 修复成员被移除群后可能发生内存泄露的问题
- 修复异常没有正确输出到日志的问题
- 修复一些
DefaultLogger
的不恰当使用的问题 - 修复
UnknownHostException
未被正常捕获的问题
- 在 Bot 被禁言时忽略
reply
方式创建的监听器 (subscribeMessages
DSL) - 使用更宽松的方式读取
device.json
- 将
Bot.selfQQ
标注@MiraiExperimentalAPI
- 提高默认心跳超时时间
- 改进多处 KDoc
- 更新 kotlinx-coroutines-core 到 1.3.7
- ... 忽略了内部变动
1.0-RC2-1
1.0-RC2
(请使用 1.0-RC2-1
版本)
主要内容:
- 增强网络稳定性 (#298, #317), 修复
Bot.close
或 Bot 离线后没有从Bot.botInstances
中删除的问题 (#317) subscribeMessages
现在默认使用MONITOR
优先级MessageChain
现在继承List<SingleMessage>
- 新增
messageChainOf(vararg Message)
- 支持 Bot 头像更改事件:
BotAvatarChangedEvent
(#271) - 支持好友头像更改事件:
FriendAvatarChangedEvent
- 新增
nextEventOrNull
: 挂起当前协程, 直到监听到事件的广播, 返回这个事件实例. 超时时返回null
- 弃用
Bot.subscribe.*
,Bot.nextMessage
,Bot.subscribe.*Messages
:
为了更好的协程生命周期管理, 这些函数已经被隐藏, 保留二进制兼容到 1.3.0.
现有源代码不会被破坏, 但将不再筛选事件的Bot
实例. 在 mirai 决定好替代的 API 前需要手动筛选. (即不影响目前单 Bot 运行的服务) - 支持在事件监听时使用 Kotlin 函数引用:
suspend fun onMessage(event: GroupMessageEvent): ListeningStatus { return ListeningStatus.LISTENING } scope.subscribe(::onMessage /*, priority=..., concurrency=... */)
- 支持反射式事件监听, 改善 Java 的事件监听体验. 示例查看 JvmMethodEventsTest.kt: Line 22
- 添加
typealias EventPriority = Listener.EventPriority
- 优化
Face
的构造器: 现在Face
拥有一个参数为id
的公开构造器 - 让
ContactList
实现接口Collection
- 弃用
QuoteReply.time
等语意不明的扩展 (无法区分time
是source
的时间还是QuoteReply
自身时间)
优化 & 修复:
- 删除
FileCacheStrategy.newImageCache(URL, format: String)
中的format
参数 - 隐藏
MessageChain
原有Iterable
相关 API (兼容现有代码) - 修复
Message.repeat
- 修复
MemberJoinEvent
比MemberJoinRequestEvent
早广播的问题 (#288) - 修复 Bot 接受好友申请时 groupId 处理错误 (#309)
- 修复
MessageSubscribersBuilder
一处 KDoc 错误 (#308 @wuxianucw) - 修复 Android 平台
BufferedImage ClassNotDefFound
的问题 - 优化
MessageSource.internalId
KDoc - 优化 重连时的计时显示 (#311 @Karlatemp)
- 优化
Bot.getInstance
找不到相关Bot
实例时的异常信息 - 将
MessageMetadata.contentToString
定义为final
- 忽略了 732 类型同步消息 (原启动后会大量显示)
- 忽略 'VIP 进群提示' 的群同步消息
- 让随机设备信息更随机
- 其他一些内部优化 (无公开 API 变更)
1.0-RC
事件优先级与拦截
特别感谢 @Karlatemp (#279)
-
支持事件拦截:
Event.intercept()
,Event.isIntercepted
-
支持事件优先级:
HIGHEST, HIGH, NORMAL, LOW, LOWEST
和MONITOR
事件广播时按监听器的优先级从高到低依次调用, 在任意一个监听器 拦截事件(Event.intercept()
) 后停止广播, 不调用后续监听器.
最后调用MONITOR
级别的监听器. -
在
subscribe
,subscribeAlways
,nextMessage
,syncFromEvent
,subscribeMessages
等所有事件监听函数中添加priority
参数, 默认使用NORMAL
优先级.
兼容1.0
以前的 API 到1.2.0
, 旧版本 API 使用MONITOR
级别.
图片缓存策略 FileCacheStrategy
- 新增
FileCacheStrategy
, 可管理上传图片等操作时的缓存行为. - 内置内存缓存 (
FileCacheStrategy.MemoryCache
) 与默认使用的临时文件 (FileCacheStrategy.TempCache
) 缓存, 可选临时文件存放目录 - 新增
BotConfiguration.fileCacheStrategy
, 为单个Bot
指定缓存策略 - 在图片上传 (无论是否成功) 完成后删除临时文件
- 图片上传失败时支持自动重试
- 修复部分情况下文件没有关闭的问题 (#302)
- 因新架构为懒惰处理, 弃用所有
*.suspendToExternalImage
修正 ContactMessage
命名歧义
(#299)
-
原有
ContactMessage
实际上是一个事件, 而其命名与消息Message
易产生迷惑.
弃用 (兼容到1.2.0
):MessagePacket
MessagePacketBase
进行如下更名:
ContactMessage
->MessageEvent
FriendMessage
->FriendMessageEvent
GroupMessage
->GroupMessageEvent
TempMessage
->TempMessageEvent
暂未决定是否提供UserMessageEvent
作为TempMessageEvent
和FriendMessageEvent
的公共父类.
-
优化扩展函数结构, 统一放置在
MessageEventExtensions
, 以使MessageEvent
结构清晰.
支持平板登录方式
- 可选, 且默认作为平板身份登录, 与手机电脑不冲突.
- 可通过
BotConfiguration.protocol
切换协议.
其他
MessageChain.get
现在返回可空的Message
. 可迁移到MessageChain.getOrFail
.- 添加
nextEvent
: 挂起当前协程, 直到监听到事件[E]
的广播, 返回这个事件实例. - 删除部分冗长的如
nextMessageContainingOrNullAsync
等函数. - 添加
Message.content
扩展属性作为Message.contentToString()
的捷径 - 简化图片结构, 弃用
OnlineFriendImage
,OnlineGroupImage
,OfflineGroupImage
,OfflineFriendImage
这四个类. - 修复关闭验证码窗口后阻塞协程的问题 (#296)
- 删除全部
0.x.x
版本更新时做的兼容 - 删除全部
@SinceMirai("0.x.0")
- 支持接收群语音消息
- 优化图片 ID 正则表达式
- 优化大量 KDoc
- 优化上传图片和长消息时的日志内容
- 允许引用回复离线的消息源 (在
MessageChain.quote
时消息链中的MessageSource
可以为OfflineMessageSource
) - 拆分 JCE 序列化到独立的库 (#300)
- 在重连时增加计时
- 简化
MemberPermission
比较 - 在消息事件中使用强引用 (#303)
- 修复邀请机器人进群事件无法解析的问题 (#301)
0.40.0
在 1.0.0
正式版发布时, 所有为旧版本做的兼容都将删除, 因此请尽快迁移.
Message
不再继承CharSequence
(兼容到1.0.0
)- 废弃
XmlMessage
和JsonMessage
. 需使用ServiceMessage
并手动指定serviceId
- 修复登录时概率失败的问题
- 提高事件处理稳定性
- Java 事件默认
LOCKED
, 而不是CONCURRENT
- 弃用
PlainText.stringValue
, 以PlainText.content
替代 - 将
VipFace
作为PlainText
发送, 而不是抛出异常 - 修复
BufferedImage.toExternalImage
降低图片质量的问题
0.39.5
0.39.4
Mirai-core 1.0.0 Milestone 已经完成, mirai 正在进行进一步的稳定性和性能优化, 并计划发布第一个正式版本.
在 1.0.0 将会删除全部过时的 API, 目前的 API 也可能会改变.
因此建议在预览阶段更新到最新版本并及时向 mirai 反馈问题
- 支持匿名消息解析 (#277)
- 修复部分情况下撤回失败的问题
- 修复部分情况下解析群名片错误的问题
- 修复解析匿名群成员错误的问题
- 修复
LoginSolver
Swing
选择问题 - 添加
NoStandardInputForCaptchaException
, 在无可用标准输入时中断登录
0.39.3
Mirai-core 1.0.0 Milestone 已经完成, mirai 正在进行进一步的稳定性和性能优化, 并计划发布第一个正式版本.
在 1.0.0 将会删除全部过时的 API, 目前的 API 也可能会改变.
因此建议在预览阶段更新到最新版本并及时向 mirai 反馈问题