Bot releases are visible (Hide)
新特性:
CodableMessage
作为支持 mirai 码的 Message
的接口.mirai-serialization
MessagePreSendEvent
和 MessagePostSendEvent
(#339).BotConfiguration.json
, 作为序列化时使用的 Json format, 修复潜在的因 kotlinx.serialization 进行不兼容更新而导致的不兼容.BotConfiguration.MiraiProtocol.ANDROID_WATCH
)EventHandler
现在支持 Nothing
类型.不兼容变更:
.mirai
变为图片文件实际类型, 如 .png
, .jpg
. 兼容原 .mirai
后缀.MessageSendEvent
(#339). 迁移计划: WARNING in 1.1.0, ERROR in 1.2.0, HIDDEN in 1.3.0CustomMessage.Factory.serialize
到 CustomMessage.Factory.dump
CustomMessage.Factory.deserialize
到 CustomMessage.Factory.load
VipFace
的 mirai 码表示, 详见 mirai 码规范Face.toString()
现在返回表情名称, 如 "[偷笑]", 而不是 "[表情]" (#345 @goldimax)优化和修复:
ConfigPushSvc.PushReq
解析失败的问题 (#417)_lowLevelGetGroupActiveData
SimpleListenerHost.coroutineScope
潜在的 Job 被覆盖的问题PttMessage
与 Voice
标注 @MiraiExperimentalAPI
(missing)Message.plus(another: Flow<Message>)
的 @ExperimentalCoroutinesApi
Published by Him188 over 4 years ago
1.1.0 Early Access / 1.1.0 预览版
此版本新增的 API 可能不稳定, 且可能在下一个版本中删除.
主要:
CodableMessage
作为支持 mirai 码的 Message
的接口.mirai-serialization
MessagePreSendEvent
和 MessagePostSendEvent
(#339).不兼容变更:
CustomMessage.Factory.serialize
到 CustomMessage.Factory.dump
CustomMessage.Factory.deserialize
到 CustomMessage.Factory.load
MessageSendEvent
(#339). 迁移计划: WARNING in 1.1.0, ERROR in 1.2.0, REMOVE in 1.3.0VipFace
的 mirai 码表示, 详见 mirai 码规范Face.toString()
现在返回表情名称, 如 "[偷笑]", 而不是 "[表情]" (#345 @goldimax)优化和修复:
PttMessage
与 Voice
标注 @MiraiExperimentalAPI
(missing)Message.plus(another: Flow<Message>)
的 @ExperimentalCoroutinesApi
ContactOrBot
现在继承 CoroutineScope
deviceInfo
时构建 Bot 将会发出警告, 须手动选择使用 randomDeviceInfo
或 fileBasedDeviceInfo
或自定义, 详见 BotConfiguration.kt: Lines 69-72
SimpleListenerHost
以帮助 Java 处理事件监听EventKt.broadcast(Event)
Bot.getInstanceOrNull
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
网络模块无法处理分包的问题image.queryUrl()
抛出的异常与 KDoc 描述不符的问题BotJoinGroupEvent
重复广播问题Event
被实现为一个 Kotlin object
时无法正常拦截事件的问题DefaultLogger
的不恰当使用的问题UnknownHostException
未被正常捕获的问题reply
方式创建的监听器 (subscribeMessages
DSL)device.json
Bot.selfQQ
标注 @MiraiExperimentalAPI
1.0-RC2-1
版本)
主要内容:
Bot.close
或 Bot 离线后没有从 Bot.botInstances
中删除的问题 (#317)subscribeMessages
现在默认使用 MONITOR
优先级MessageChain
现在继承 List<SingleMessage>
messageChainOf(vararg Message)
BotAvatarChangedEvent
(#271)FriendAvatarChangedEvent
nextEventOrNull
: 挂起当前协程, 直到监听到事件的广播, 返回这个事件实例. 超时时返回 null
Bot.subscribe.*
, Bot.nextMessage
, Bot.subscribe.*Messages
:Bot
实例. 在 mirai 决定好替代的 API 前需要手动筛选. (即不影响目前单 Bot 运行的服务)suspend fun onMessage(event: GroupMessageEvent): ListeningStatus {
return ListeningStatus.LISTENING
}
scope.subscribe(::onMessage /*, priority=..., concurrency=... */)
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)MessageSubscribersBuilder
一处 KDoc 错误 (#308 @wuxianucw)BufferedImage ClassNotDefFound
的问题MessageSource.internalId
KDocBot.getInstance
找不到相关 Bot
实例时的异常信息MessageMetadata.contentToString
定义为 final
特别感谢 @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
指定缓存策略*.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
这四个类.0.x.x
版本更新时做的兼容@SinceMirai("0.x.0")
MessageChain.quote
时消息链中的 MessageSource
可以为 OfflineMessageSource
)MemberPermission
比较在 1.0.0
正式版发布时, 所有为旧版本做的兼容都将删除, 因此请尽快迁移.
Message
不再继承 CharSequence
(兼容到 1.0.0
)XmlMessage
和 JsonMessage
. 需使用 ServiceMessage
并手动指定 serviceId
LOCKED
, 而不是 CONCURRENT
PlainText.stringValue
, 以 PlainText.content
替代VipFace
作为 PlainText
发送, 而不是抛出异常BufferedImage.toExternalImage
降低图片质量的问题Mirai-core 1.0.0 Milestone 已经完成, mirai 正在进行进一步的稳定性和性能优化, 并计划发布第一个正式版本.
在 1.0.0 将会删除全部过时的 API, 目前的 API 也可能会改变.
因此建议在预览阶段更新到最新版本并及时向 mirai 反馈问题
LoginSolver
Swing
选择问题NoStandardInputForCaptchaException
, 在无可用标准输入时中断登录Mirai-core 1.0.0 Milestone 已经完成, mirai 正在进行进一步的稳定性和性能优化, 并计划发布第一个正式版本.
在 1.0.0 将会删除全部过时的 API, 目前的 API 也可能会改变.
因此建议在预览阶段更新到最新版本并及时向 mirai 反馈问题
Message.isContentEmpty()
和 Message.isContentNotEmpty()
ForwardMessage
时不允许 ForwardMessage.nodeList
为空.