Skip to content

Releases: mamoe/mirai

1.0.0

22 May 06:21
Compare
Choose a tag to compare
  • ContactOrBot 现在继承 CoroutineScope
  • 在没有手动指定 deviceInfo 时构建 Bot 将会发出警告, 须手动选择使用 randomDeviceInfofileBasedDeviceInfo 或自定义, 详见 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 被实现为一个 Kotlin object 时无法正常拦截事件的问题
  • 修复图片链接获取为空的问题 (#318)
  • 修复成员被移除群后可能发生内存泄露的问题
  • 修复异常没有正确输出到日志的问题
  • 修复一些 DefaultLogger 的不恰当使用的问题
  • 修复 UnknownHostException 未被正常捕获的问题

  • 在 Bot 被禁言时忽略 reply 方式创建的监听器 (subscribeMessages DSL)
  • 使用更宽松的方式读取 device.json
  • Bot.selfQQ 标注 @MiraiExperimentalAPI
  • 提高默认心跳超时时间
  • 改进多处 KDoc
  • 更新 kotlinx-coroutines-core 到 1.3.7
  • ... 忽略了内部变动

1.0-RC2-1

11 May 04:35
Compare
Choose a tag to compare
1.0-RC2-1 Pre-release
Pre-release
  • 修复一个 VerifyError

1.0-RC2

11 May 02:33
Compare
Choose a tag to compare
1.0-RC2 Pre-release
Pre-release

(请使用 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 等语意不明的扩展 (无法区分 timesource 的时间还是 QuoteReply 自身时间)

优化 & 修复:

  • 删除 FileCacheStrategy.newImageCache(URL, format: String) 中的 format 参数
  • 隐藏 MessageChain 原有 Iterable 相关 API (兼容现有代码)
  • 修复 Message.repeat
  • 修复 MemberJoinEventMemberJoinRequestEvent 早广播的问题 (#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

06 May 05:02
Compare
Choose a tag to compare
1.0-RC Pre-release
Pre-release

事件优先级与拦截

特别感谢 @Karlatemp (#279)

  • 支持事件拦截: Event.intercept(), Event.isIntercepted

  • 支持事件优先级: HIGHEST, HIGH, NORMAL, LOW, LOWESTMONITOR
    事件广播时按监听器的优先级从高到低依次调用, 在任意一个监听器 拦截事件(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 作为 TempMessageEventFriendMessageEvent 的公共父类.
  • 优化扩展函数结构, 统一放置在 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

29 Apr 13:12
Compare
Choose a tag to compare
0.40.0 Pre-release
Pre-release

1.0.0 正式版发布时, 所有为旧版本做的兼容都将删除, 因此请尽快迁移.

  • Message 不再继承 CharSequence (兼容到 1.0.0)
  • 废弃 XmlMessageJsonMessage. 需使用 ServiceMessage 并手动指定 serviceId
  • 修复登录时概率失败的问题
  • 提高事件处理稳定性
  • Java 事件默认 LOCKED, 而不是 CONCURRENT
  • 弃用 PlainText.stringValue, 以 PlainText.content 替代
  • VipFace 作为 PlainText 发送, 而不是抛出异常
  • 修复 BufferedImage.toExternalImage 降低图片质量的问题

0.39.5

28 Apr 08:42
Compare
Choose a tag to compare
0.39.5 Pre-release
Pre-release
  • 优化登录初始化, 提高稳定性 (#282)
  • 支持 VIP 表情的解析: VipFace (不支持发送)
  • 支持更多的戳一戳消息 (PokeMessage) 类型
  • 修复 Android 平台的正则语法错误问题
  • 修复 BotInvitedJoinRequestEvent.ignore
  • 提升 LockFreeLinkedList 遍历性能, 即 ContactList 遍历性能
  • LockFreeLinkedList 标注 @MiraiInternalAPI 并计划于 1.0.0 修改为 internal

0.39.4

27 Apr 02:00
Compare
Choose a tag to compare
0.39.4 Pre-release
Pre-release

Mirai-core 1.0.0 Milestone 已经完成, mirai 正在进行进一步的稳定性和性能优化, 并计划发布第一个正式版本.

在 1.0.0 将会删除全部过时的 API, 目前的 API 也可能会改变.

因此建议在预览阶段更新到最新版本并及时向 mirai 反馈问题

  • 支持匿名消息解析 (#277)
  • 修复部分情况下撤回失败的问题
  • 修复部分情况下解析群名片错误的问题
  • 修复解析匿名群成员错误的问题
  • 修复 LoginSolver Swing 选择问题
  • 添加 NoStandardInputForCaptchaException, 在无可用标准输入时中断登录

0.39.3

25 Apr 06:01
Compare
Choose a tag to compare
0.39.3 Pre-release
Pre-release

Mirai-core 1.0.0 Milestone 已经完成, mirai 正在进行进一步的稳定性和性能优化, 并计划发布第一个正式版本.

在 1.0.0 将会删除全部过时的 API, 目前的 API 也可能会改变.

因此建议在预览阶段更新到最新版本并及时向 mirai 反馈问题

  • 添加 Message.isContentEmpty()Message.isContentNotEmpty()
  • 在发送消息前检查是否为空 (#268)
  • 修复重复收到一些事件的问题 (#259)
  • 支持所有图片的下载链接获取 (#250)
  • 修复部分情况下验证码窗口无法显示的问题 (#270)
  • 构造 ForwardMessage 时不允许 ForwardMessage.nodeList 为空.

0.39.2

24 Apr 11:04
Compare
Choose a tag to compare
0.39.2 Pre-release
Pre-release
  • 完善 Message 相关的 KDoc
  • 在支持图像界面的环境下弹出验证码输入 (#257)
  • 修复无法通过 id 发送图片的问题 (#262)
  • 修复彩色群名解析不全的问题 (#263)

0.39.1

24 Apr 01:20
Compare
Choose a tag to compare
0.39.1 Pre-release
Pre-release
  • 修复长消息发送失败的问题 (#256)
  • 撤销 Bot.instances 更改, 添加新的 Bot.botInstances 以兼容以前的代码
  • 修复密码错误时未停止重连的问题
  • 修复 ForwardMessage 无法从 firstOrNull 获取的问题