二进制不兼容的修改: Bot.instances
现在返回 List<Bot>
, 而不是 List<WeakRef<Bot>>
由于他们在 JVM 签名相同, 无法做兼容.
Contact 架构改变
原有 Member
继承 QQ
, QQ
继承 Contact
架构改变.
新架构为:
- 弃用
QQ
命名 (二进制兼容到 1.0.0) - 新增
User
继承Contact
, 作为Member
和Friend
的父类 Member
继承User
Friend
继承User
迁移
由于 Member
不再是 QQ
子类, 而原本表示 '好友' 意义的 QQ
删除,
需要根据实际情况替换 QQ
的引用为 Friend
或 Group
因修改, 新增以下 API:
fun Member.asFriend(): Friend
: 得到此成员作为好友的对象或抛出异常fun Member.asFriendOrNull(): Friend
: 得到此成员作为好友的对象或返回null
inline val Member.isFriend: Boolean
: 判断此成员是否为好友
同时有以下修改:
val User.nameCardOrNick
: 获取非空群名片 (如果是群员) 或昵称- 弃用
fun Member.isMuted()
而改为属性val Member.isMuted
图片
- 构造所有类型图片时只接受唯一一个参数
imageId: String
. - 所有类型图片只能获取唯一一个属性
imageId: String
(以前可以获取长宽等数据) - 提高发送图片的性能
- 优化
BufferedImage.toExternalImage
的性能 - 统一图片后缀:
{ ... }.mirai
消息
-
新增合并转发及其 DSL
-
新增
OfflineMessageSource
构造 -
新增
MessageSource
修改:MessageSource.copyAmend(block)
-
修复 'sequence not yet available' 问题 (#)
-
修复好友消息的消息源 id 错误的问题 (#247)
-
如果群成员是好友, 则发送好友消息, 而不是临时会话消息.
-
添加
MessageSource.internalId
以便将来使用 -
添加
OnlineMessageSource.toOffline
-
添加
ContactMessage.time
-
添加
ContactMessage.senderName
OfflineMessageSource
构造
可使用 DSL 构造离线消息, 修改其发送人, 发送时间, 发送内容等. 这对于跨群转发等情况十分有用.
OfflineMessageSource.kt: Line 90
DSL 总览:
val source: OfflineMessageSource = bot.buildMessageSource {
bot sendTo target // 指定发送人和发送目标
metadata(source) // 从另一个消息源复制 id, internalId, time
messages { // 指定消息内容
+"hi"
}
}
合并转发及其 DSL
合并转发: ForwardMessage
DSL: ForwardMessageBuilder
DSL 总览:
buildForwardMessage {
123456789 named "鸽子 A" says "咕"
100200300 named "鸽子 C" at 1582315452 says "咕咕咕" // at 设置时间
987654321 named "鸽子 B" says "咕"
myFriend says "咕"
bot says { // 构造消息链, 同 `buildMessageChain`
+"发个图片试试"
+Image("{90CCED1C-2D64-313B-5D66-46625CAB31D7}.jpg")
}
}
不支持解析别人的转发.
其他
- 支持 bot 名片被其他人修改时的同步
- 修复登录时遇到服务器不可用时无法继续重连的问题
- 更名
Identified
到ContactOrBot
, 去掉其 '实验性' 注解 Bot.instances
现在返回List<Bot>
, 而不是List<WeakRef<Bot>>
(二进制兼容)- 更名
subscribingGet
到syncFromEvent
, 并将其定义为稳定 API. - 更名
subscribingGetAsync
到asyncFromEvent
, 并将其定义为稳定 API. - 添加接受
eventClass: KClass<Event>
参数的事件监听subscribe
- 在
MessageSubscribersBuilder
添加sentBy(User)
,sentFrom(Group)
,atAll
,at
DSL - 修复某些时候未处理
BotOfflineEvent.Force
的问题