Releases: mamoe/mirai
0.39.0
二进制不兼容的修改: 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
的问题
0.38.0
- 新增自定义消息 (实验性):
CustomMessage
- 新增
MessageChain.contentEquals
- 新增
Message.isPlain
,Message.isNotPlain
- 新增
MessageChain.allContent
,MessageChain.noneContent
- 修复
CombinedMessage.toString
顺序错误, 添加缓存 - 新增
BotConfiguration.inheritCoroutineContext
- 将 Java API
MessageChain.getOrNull
更名为MessageChain.firstOrNull
- 将 Java API
MessageChain.get
更名为MessageChain.first
- 将 Java API
MessageReceipt.recall(long)
更名为MessageReceipt.recallIn(long)
以与其他 API 保持一致 - 优化
MessageChainBuilder
构建逻辑
0.37.5
0.37.4
0.37.3
新增:
- 在群名片修改事件(
MemberCardChangeEvent
)中支持获取操作人 - 修复 #229, 引入
ServiceMessage
作为JsonMessage
,XmlMessage
的父类并处理所有类型富文本消息解析 - 将所有
RichMessage
标注MiraiExperimentalAPI
以警告将来改动
问题修复:
- 修复潜在的长消息上传失败问题
- 简化
MessageSubscriberBuilder
DSL, 整理linear.kt
,subscribers.kt
- 修复启动时概率解析失败 ConfigPushSvc.PushReq
- 修复 #228: 登录时没有因
LoginFailedException
中断 - 重构登录重连控制, 确保单一进程
- 处理无网络连接问题, 在无网络时将不尝试登录而等待网络连接
- 修复 #227: Android 最新版无法编译
- 修复 #226: BotUnmuteEvent
- 修复 #225: 重复接收到群消息撤回问题
- 修复 #220: 无法正常解析邀请机器人进群的富文本消息
- 修复 #217: 解析 OnlinePush confess 状态时没有覆盖全面
- 优化遇到未知消息时的日志
0.37.2
0.37.1
从 0.37.1
起 JVM 平台依赖无需带 "-jvm" 模块名
即原 "mirai-core-jvm" 和 "mirai-core-qqandroid-jvm" 依赖均需去掉 "-jvm", 变为 "mirai-core" 和 "mirai-core-qqandroid"
- 登录时尝试多个服务器, 随服务器需求切换服务器 (解决潜在的无法登录的问题) (#52)
- 优化带有
QuoteReply
时的消息长度估算 - 添加
MessageChainBuilder.build
, 效果同asMessageChain
- 在
ContactMessage
中添加At.isBot
- 在
MessageSubscribersBuilder
中添加String.invoke
,atBot
DSL
0.37.0
0.36.1
0.36.0
- 支持临时会话:
TempMessage
(#16 ) - 支持群员主动加入事件
MemberJoinEvent.Active
- 添加
subscribeTempMessages
等相关 DSL - 添加
FriendAddEvent
,FriendDeleteEvent
(#216) - 修复各种事件重复广播的问题 (#173, #212)
- 修复
OfflineMessageSource.id
- 修复
Member.kick
- 修复彩色群名片读取, 支持群名片更改事件 (#210)
- 增加超时 (#175)
- 支持合并转发消息的解析, 修复部分情况下长消息解析失败的问题
- 修复新成员加入时没有添加进成员列表的问题 (#172)