Skip to content

Releases: mamoe/mirai

0.39.0

23 Apr 13:01
Compare
Choose a tag to compare
0.39.0 Pre-release
Pre-release

二进制不兼容的修改: Bot.instances 现在返回 List<Bot>, 而不是 List<WeakRef<Bot>> 由于他们在 JVM 签名相同, 无法做兼容.

Contact 架构改变

原有 Member 继承 QQ, QQ 继承 Contact 架构改变.

新架构为:

  • 弃用 QQ 命名 (二进制兼容到 1.0.0)
  • 新增 User 继承 Contact, 作为 MemberFriend 的父类
  • Member 继承 User
  • Friend 继承 User

迁移

由于 Member 不再是 QQ 子类, 而原本表示 '好友' 意义的 QQ 删除,
需要根据实际情况替换 QQ 的引用为 FriendGroup

因修改, 新增以下 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 名片被其他人修改时的同步
  • 修复登录时遇到服务器不可用时无法继续重连的问题
  • 更名 IdentifiedContactOrBot, 去掉其 '实验性' 注解
  • Bot.instances 现在返回 List<Bot>, 而不是 List<WeakRef<Bot>> (二进制兼容)
  • 更名 subscribingGetsyncFromEvent, 并将其定义为稳定 API.
  • 更名 subscribingGetAsyncasyncFromEvent, 并将其定义为稳定 API.
  • 添加接受 eventClass: KClass<Event> 参数的事件监听 subscribe
  • MessageSubscribersBuilder 添加 sentBy(User), sentFrom(Group), atAll, at DSL
  • 修复某些时候未处理 BotOfflineEvent.Force 的问题

0.38.0

20 Apr 14:10
Compare
Choose a tag to compare
0.38.0 Pre-release
Pre-release
  • 新增自定义消息 (实验性): 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

20 Apr 04:07
Compare
Choose a tag to compare
0.37.5 Pre-release
Pre-release
  • 上传长消息和图片时允许重试, 提高稳定性
  • 优化无网络时的重连逻辑
  • Message 中添加 equalshashCode, 将部分类型消息定义为 data class
  • MessageSource.id 现在返回非 0 序列号
  • 实现已撤回判断, 同一个 MessageSource 只能撤回一次

0.37.4

17 Apr 03:19
Compare
Choose a tag to compare
0.37.4 Pre-release
Pre-release
  • 修复 #220: 无法正常解析邀请机器人进群的富文本消息
  • 修复 #236: 删除无用的 getter 方法生成
  • 修复上传长消息时报错错误的问题

0.37.3

15 Apr 12:10
Compare
Choose a tag to compare
0.37.3 Pre-release
Pre-release

新增:

  • 在群名片修改事件(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

13 Apr 11:17
Compare
Choose a tag to compare
0.37.2 Pre-release
Pre-release
  • 修复 OnlineMessageSource.Incoming.target 类型错误
  • 引入实验性 Identified 接口作为 ContactBot 的公共接口
  • 加快图片 MD5 计算过程
  • 加快图片上传过程
  • 其他小优化

0.37.1

12 Apr 11:55
Compare
Choose a tag to compare
0.37.1 Pre-release
Pre-release

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

11 Apr 14:41
Compare
Choose a tag to compare
0.37.0 Pre-release
Pre-release
  • 支持主动退群: Group.quit, BotLeaveEvent.Active
  • 支持临时消息撤回
  • 支持好友消息撤回
  • 修复一个内存泄露问题
  • 修复彩色群名片读取失败的问题
  • 修复退群事件重复广播的问题 (#221)

0.36.1

10 Apr 15:45
Compare
Choose a tag to compare
0.36.1 Pre-release
Pre-release
  • 修复 botAsPermission
  • 删除一些无用的调试输出

0.36.0

10 Apr 14:37
Compare
Choose a tag to compare
0.36.0 Pre-release
Pre-release
  • 支持临时会话: TempMessage (#16 )
  • 支持群员主动加入事件 MemberJoinEvent.Active
  • 添加 subscribeTempMessages 等相关 DSL
  • 添加 FriendAddEvent, FriendDeleteEvent (#216)
  • 修复各种事件重复广播的问题 (#173, #212)
  • 修复 OfflineMessageSource.id
  • 修复 Member.kick
  • 修复彩色群名片读取, 支持群名片更改事件 (#210)
  • 增加超时 (#175)
  • 支持合并转发消息的解析, 修复部分情况下长消息解析失败的问题
  • 修复新成员加入时没有添加进成员列表的问题 (#172)