mirai

高效率 QQ 机器人支持库

AGPL-3.0 License

Stars
14K
Committers
131

Bot releases are visible (Hide)

mirai - 2.2.2

Published by Karlatemp over 3 years ago

  • 修复部分群发送的图片无法显示的情况 (#939)
  • 修复部分图片ID没有正确处理的情况 (#933)
mirai - 2.2.1

Published by Him188 over 3 years ago

  • 修复部分情况下 mirai-core 依赖无法更新的问题. 如有疑惑请参考 Configuring Projects
mirai - 2.2.0

Published by Him188 over 3 years ago

mirai-core

  • 通过稳定的 highway 通道上传所有资源 (图片, 语音, 长消息, 合并转发) (#916, #917)
    • 提升上传好友图片的稳定性 (#194)
    • 提升发送长消息的稳定性 (#892)
    • 支持发送高音质的语音 (silk) (#577)
    • 支持多线上传,大幅加快上传速度
    • 新增 BotConfiguration.highwayUploadCoroutineCount 设置多线上传连接数量
  • 支持设置群精华消息 Group.setEssenceMessage (#837)
  • 支持自动 key 刷新 (skey, pskey 等用于 HTTP API) (#901)
  • 支持自动切换登录服务器
  • 新增供 Java 用户使用的 EventChannel.filter
  • 新增 Stranger.asFriendStranger.asFriendOrNull
  • 新增 nextEventAsyncnextEventOrNullAsync
  • 修复 nextEvent 没有正确处理协程取消的问题
  • 修复发送 MusicShare 到部分群失败的问题 (#918)
  • 修复一些消息发送后报错 'sequence ids not yet available' 的问题 (#930)
  • 修复资源后缀无法自动检测时没有使用 ExternalResource.DEFAULT_FORMAT_NAME 的问题
  • 将官方客户端有时候发送的 "null" 文件后缀名转换为 ExternalResource.DEFAULT_FORMAT_NAME
  • 将官方客户端有时候发送的大写文件后缀名转为小写
  • 提升登录和重连稳定性
  • 不再发布 JVM 模块到根模块, 因为在 Android 环境会无法解决依赖. Maven JVM 用户需要使用 -jvm 后缀的模块.

mirai-console

自 2.2 起,mirai-console 系列所有模块将与 mirai-core 同步版本发布

  • 新增 Enum 参数解析器 EnumValueArgumentParser (mamoe/mirai-console#267)
  • 提升 IntelliJ 插件的性能
mirai - 2.1.1

Published by Him188 over 3 years ago

  • 提升重连稳定性 (#900)
  • 修复 BotConfiguration.reconnectionRetryTimes 不起作用和 LoginFailedException 时无限重连的问题 (#895)
  • 优化重连时的日志
mirai - 2.1.0

Published by Him188 over 3 years ago

新特性

  • 支持获取群成员加群时间 (#865)
  • 支持获取群成员最后发言时间 (#394)
  • 支持识别官方机器人群员 (#439, #810 by @sandtechnology)
  • 支持查询用户详细资料 (#866)
  • 支持解析群成员邀请其他人的事件 MemberJoinRequestEvent.invitor (#458, #882 by @sandtechnology)
  • 支持使用 QQ 互联通道发送音乐分享 MusicShare (#682, #889, #690 by @wdvxdr1123)
  • 支持自动在被挤下线时重连 BotConfiguration.autoReconnectOnForceOffline (#835)
  • 添加 ForwardMessageBuilder.add(MessageEvent) 以便从一个消息时间获取信息

优化和修复

  • 修复无限重连的问题 (#894), 提升重连稳定性
  • 修复部分消息如引用回复带图片无法发送的问题, 提升长消息稳定性
  • 修复部分 Java API 调用时产生 NoSuchMethodError 的问题
  • 修复新用户入群 MemberJoinEvent 事件无法触发的问题 (#641)
  • 修复主动请求处理时 FriendAddEvent 没有广播的问题
  • 提升加载群成员列表的速度
mirai - 2.0.0

Published by Him188 almost 4 years ago

  • 修复消息长度判定
  • 修复新人加群聊事件无法触发 (#856, #859 by @sandtechnology)
  • 修复分片消息解析时 PlainText 没有合并的问题
  • 修复其他客户端上线事件可能的解析失败

迁移指南 Migration From 1.x

mirai - 2.0-RC

Published by Him188 almost 4 years ago

由旧版本迁移

请查看 Migration From 1.x

未来规划

Mirai 已完成 2.0 重构。
2.0-RC 是一个稳定版本。 之后版本更新将会有兼容性保证。下一个版本 2.0.0 将会在修复 2.0-RC 的问题和完善文档后发布。

新特性

  • 支持同步其他客户端加入的群 (#804 by @sandtechnology)
  • 支持同步其他客户端的私聊消息 (#841 by @sandtechnology)
  • 支持从 MemberJoinEvent.Invite 获取邀请人 (#804 by @sandtechnology)
  • 支持群图片和私聊图片的互相转换 (#307)
  • 统一图片的 ID, 现在所有图片 ID 都为原群图片格式
  • 稳定消息序列化 (#817)
  • 稳定 Nudge API
  • 新增 BotOfflineEvent.reconnect 以支持控制掉线自动重连
  • 新增 BotConfiguration.workingDir 配置工作目录
  • 新增 UserEvent 接口
  • 新增 recallIn 结果获取

不兼容变更

  • TempMessageEvent 更名为 GroupTempMessageEvent, 因计划支持更多临时会话消息 (#429)
  • 更名 MessageChain 相关的 asMessageChaintoMessageChain
  • 弃用 MessageChain 相关的 flatten
  • 弃用 Message.isPlain, Message.isNotPlain, Message.isContentNotEmpty
  • 弃用 Member.isNormal, Member.isAnonymous
  • 弃用 ContactList.idContentString
  • 删除 MessageSourceisAboutFriend, isAboutGroup, isAboutTemp
  • Listener.ConcurrencyKindListener.EventPriority 由嵌套类移动到顶层
  • 简化戳一戳相关事件: 删除所有 XXXNudgeEvent, 以单一 NudgeEvent 替代
  • MessageSource.originalMessage 不再带有 MessageSource
  • 过滤 Android 客户端发送的引用回复后包含的多余的 At
  • Bot.getFriend 现在在 id == bot.id 时返回 bot.asFriend
  • OtherClient.id 变为一个特定的 id, 而不是与 Bot.id 相同
  • IMirai 低级 API 函数名现在不再带有 _lowLevel 前缀

优化和修复

  • 在重连时不捕获 Error (#824)
  • 修复 ListenerHost.registerTo 没有调用 EventChannel.parentScope 的问题
  • 修复 NormalMember.toString
  • 修复禁言事件解析错误的问题 (#811)
  • 修复发送 At 内容有误的问题
  • 修复戳一戳发起人解析异常的问题 (#664, #795 by @sandtechnology)
  • 修复 QuoteReply StackOverflowError
  • 修复 QuoteReply.sourceMessageSource.kind 错误的问题
  • 修复 RichMessage.KeybaseKey
  • ExternalResource.uploadImageExternalResource.sendImage 添加 formatName 参数
  • 实现 ForwardMessage.contentToString
  • 在资源关闭后自动删除缓存文件
  • 在 Bot 离线时不会关闭 Bot (#838)
  • 修复部分 PC 客户端的消息不能同步的问题 (#787, #836 by @sandtechnology)
  • 修复内存泄露问题 (#556)
  • 一些小类型变更
  • 大量代码优化和文档更新

兼容性

2.0-M2 -> 2.0-RC 有部分二进制不兼容,因此可能需要重新编译。

2.0-RC 和之后版本, 你可以使用 mirai 官方维护的项目的以下同步版本:

mirai - 2.0-M2-2

Published by Him188 almost 4 years ago

优化和修复

  • 修复图片发送失败的问题 (#797)
  • 修复可能的网络层内存泄露问题

兼容性

2.0-M2 -> 2.0-M2-2 是兼容的。意味着使用 2.0-M2 和 2.0-M2-1 编译的应用可以直接与 2.0-M2-2 运行。

在 2.0-M2-2, 你可以使用 mirai 官方维护的项目的以下同步版本:

mirai - 2.0-M2-1

Published by Karlatemp almost 4 years ago

优化和修复

  • 修正发送私聊信息时错误发送的问题
  • 优化 LoginSolver 提示

兼容性

2.0-M2 -> 2.0-M2-1 是兼容的。意味着使用 2.0-M2 编译的应用可以直接与 2.0-M2-1 运行。

在 2.0-M2-1, 你可以使用 mirai 官方维护的项目的以下同步版本:

mirai - 2.0-M2

Published by Him188 almost 4 years ago

新特性

  • 支持解析分片消息 (#440)

  • 支持禁言匿名群成员 (#432)

  • 支持滑动验证码处理 (#772, #745) (文档)

  • 支持匿名群成员消息解析

  • 支持发送私聊长消息 (#171)

  • 支持商城表情 MarketFace (#761 by @sandtechnology)

  • 支持更多系统表情(Face)(#720 by @sandtechnology)

  • 支持根据服务器要求调整心跳频率 (#765 by @sandtechnology)

  • 支持群龙王状态变化事件 (#774 by @sandtechnology)

  • 支持删除好友 (#776 by @sandtechnology)

  • 新增 OtherClient 代表 Bot 账号登录的其他客户端

    • 支持查询在线的客户端列表:Bot.otherClients
    • 支持其他客户端上线事件:OtherClientOnlineEvent
    • 支持其他客户端离线事件:OtherClientOfflineEvent
    • 支持其他客户端发送消息给 Bot:OtherClientMessageEvent
    • 支持其他客户端发送群消息时的同步:GroupMessageSyncEvent (#644)
  • 新增 MessageChain.findIsInstance 扩展获取第一个指定类型 SingleMessage 实例

  • 新增 MessageRecallEvent.author

  • 新增 Message.deserializeFromJsonStringMessage.serializeToJsonString

  • 新增 Message.contentEquals 参数 strict 以检测各个消息元素

  • 新增 ContactOrBot.avatarUrl 通用获取头像 (#756)

  • 新增 ContactOrBot.bot 获取有关 Bot

  • 新增 Group.getMemberGroup.getMemberOrFail 用于不适合使用 Group.get 的场合

  • 新增 ContactList.getOrFail 获取联系人,在目标不存在时抛出异常

  • 新增 EventChannel,弃用原 CoroutineScope.subscribe 等函数 (#514, #753) (文档)

  • 新增 ExternalResource 替代 ExternalImage 以支持通用的语音,文件和图片的发送的 API (#754, #752)

  • 更好的 Java API (#751, #755)

优化和修复

  • 处理登录错误 239 (#744)
  • 重新设计 mirai 码, 添加转义语法 (#685, #768)
  • 语音现在使用 ExternalResource 并支持多种输入
  • Group.botAsMember, Bot.asFriend 现在稳定
  • 实现 MessageChain.hashCodeMessageChain.equals
  • 弃用 MessageEventExtensions
  • 在服务器要求时重新登录 (#691)
  • 优化 LoginSolver (#703):
    • DefaultLoginSolver 更名为 StandardCharImageLoginSolver
    • LoginSolver.Default 现在在 Android 平台返回 null
    • BotConfiguration.loginSolver 现在可空,为空时表示使用 Mirai 内置,在 Android 平台须提供 (#703)
  • SimpleListenerHost 事件处理器中抛出的异常现在会被包装成 ExceptionInEventHandlerException 以允许获取相关事件 (#533)
  • HummerMessage 变为接口
  • selectMessageswhileSelectMessages 添加 @BuilderInference,现在无需手动指定泛型
  • 修复 MessageRecallEvent.FriendRecall.authorId 的歧义 (#704)
  • 修复撤回群消息时 MessageRecallEvent.GroupRecall 重复广播的问题
  • 协议内部优化(#742, #749, #724, #728 by @sandtechnology, #671 by @jihuayu)
  • 来自社区的文档更新 (#710 by @StageGuard, #735 by @iceBear67, #748 by @lc6a, #715 by @Kininaru, #780 by @Cyl18)

由旧版本迁移

要从 2.0-M1 升级到 2.0-M2,请先了解 新的事件系统

  • 在 Kotlin 大部分改动都可以由 IDE 自动完成。
  • 在 Java,有大量上传图片和语音相关的 API 变动,请参考 #751。

要从 1.x 升级到 2.0-M2,请首先升级到 2.0-M1。

兼容性

2.0-M1 -> 2.0-M2 有部分二进制不兼容,因此可能需要重新编译。

在 2.0-M2, 你可以使用 mirai 官方维护的项目的以下同步版本:

未来规划

mirai 已经完成 2.0 的两个里程碑。

下一个版本 2.0-RC 将在消息序列化完成后发布。届时,mirai 将提供稳定的 API(同时对于源码或二进制)。

即使 2.0-M2 还不保证向后兼容性,但也建议用户尝试这个版本并反馈任何问题。

mirai - 2.0-M1-1

Published by Him188 almost 4 years ago

  • 修复 MessageEvent.reply 等函数调用时产生 java.lang.VerifyError 的问题 (#732)
  • 修复登录提示版本过低的问题 (#737)
  • 修复 JvmMethodEventListeners 无法处理一些 Java 方法的问题 (#738)
  • 修复 Bot._instance, 修复查询图片连接时报错无 Bot 在线的问题 (#727)

兼容性

2.0-M1 -> 2.0-M1-1 是兼容的。意味着使用 2.0-M1 编译的应用可以直接与 2.0-M1-1 运行。

在 2.0-M1-1, 你可以使用 mirai 官方维护的项目的以下同步版本:

mirai - 2.0-M1

Published by Him188 almost 4 years ago

概览

2.0-M1 完成 2.0 重构的主要不兼容变更. 架构上联系人和 Bot 变更为接口, 方法语义更清晰, 完善 Java 支持. 消息变为纯数据对象, 原生支持序列化. 单一消息的链接更符合开发直觉.

2.0-M1 解决了大量 1.x 阶段的设计问题, 并以 简化复杂度 为重要目标重新设计 mirai-core. 所有协议接口都被整合到 IMirai, 多平台架构和内部协议实现的简化大幅降低扩展协议的难度, 另有登录协议的版本更新 (8.4.18). 新的架构为后续实现新协议建立基础.

模块变更

mirai-core 更名为 mirai-core-api, mirai-core-qqandroid 更名为 mirai-core (#461).

新模块规划:

  • mirai-core-utils: Mirai 内部使用的一些工具方法. 为其他两个模块共享.
  • mirai-core-api: 包含 Message, Event, Contact 等所有公开接口.
  • mirai-core: Android QQ 8.4.18 协议实现

mirai-core 依赖 mirai-core-api. 在开发时依赖 mirai-core-api, 在运行时提供 mirai-core.

目标平台简化 (Kotlin MPP)

  • 现在 mirai 所有多平台模块的 common 目标为 JVM. jvm 目标为桌面 JVM. android 目标为 Android JVM. Android 目标将会在未来不久发布.
  • 依赖 mirai-core 的 Kotlin 多平台项目, 现在需要配置 HMPP, 且只能为 JVM 目标添加依赖.

2.0-M1

所有不兼容变更都以加粗表示.

协议

  • 登录协议更新为 Android QQ 8.4.18 (感谢 @wdvxdr1123)
  • 过滤好友自动回复消息 (#571 by @sandtechnology)
  • 默认使用 ANDROID_PHONE 协议 (#632)
  • BotFactory 调整:
    • Kotlin 函数名 Bot 变为 newBot
    • 在所有平台去除 Context 参数
    • Bot(...) 构造 Bot 调整为使用 BotFactory.newBot(...)
  • 独立协议接口:
    • 新增接口 IMirai, 存放所有协议实现.
    • 将来会添加低级接口.

Bot

  • Bot 变为接口.
  • Bot 的部分静态方法更名. 在调用旧方法时会得到警告.

联系人

  • 所有联系人类型全部变为接口. 涉及: Contact, User, Friend, Group, Member.
  • 新增 UserOrBot 作为 UserBot 的公共接口.
  • 一些有关联系人 id 的 get 类型方法现在返回可空而不会抛出异常. 以 getOrFail 代替原会抛出异常的 get. 涉及的方法列表:
    • ContactList.get
    • Group.get,
    • Bot.getFriend, Bot.getGroup
  • Member 现在有子类 NormalMemberAnonymousMember.
    • Member 表示的普通群成员现在是 NormalMember.
    • 在 2.0-M2 将会支持匿名群成员及相关扩展.
  • 添加成员函数 sendMessage(String)
  • 新增 UserOrBot.nudge()

消息

  • 重构 MessageSource, 支持分片的多个源消息 (#618):

    • MessageSource.id: Int -> MessageSource.ids: IntArray
    • MessageSource.internalId: Int -> MessageSource.internalIds: IntArray
    • 以前 id 获取失败会返回 -1, 现在会返回空数组.
  • Message.Key 移到顶层 MessageKey, 并提供多态支持:

    • 现在仅 ConstrainSingle (即每条 MessageChain 中只允许出现一个的消息) 才会有伴生对象 MessageKey.
    • 现在连接 ConstrainSingle 时将可能替换多条消息 (适应真实情况):
      • 由于 Voice 等消息只能单独存在, 连接 Voice 与一个 MessageChainVoice 将会覆盖第一个 MessageContent 并删除其后所有其他 MessageContent.
      • 多态情况下子类消息会覆盖父类消息
      • 详见 AbstractPolymorphicMessageKey

消息序列化

大部分 mirai 内置 Message 现在支持 kotlinx-serialization 序列化 (#219).

注意:

  • 接口的序列化使用多态序列化 PolymorphicSerializer. 特别地, kotlinx-serialization-json 会将多态环境的 Message 序列化为数组, 其第一元素为类型全限定名, 第二元素为消息数据.

  • 序列化还未稳定, 但将会在 2.0.0 前达到稳定, 届时会有相关文档提供.

  • At 对象中不再存储显示内容 (display). 现在 At 对象仅包含一个属性 target: Long, 显示内容会在发送消息时获取.

  • ForwardMessage 现在变为无状态的 data class. 原构造方法弃用保留到下个版本.

Java 支持

  • 现在所有 Kotlin 协程函数都有为 Java 使用者生成的 阻塞式方法桥.
  • 由于协议被归类到 IMirai 接口, Java 用户可以正常访问所有接口.

优化和修复

  • 简化 DeviceInfo, 更好地支持序列化 (#655 by @AdoptOSS)
  • 弃用 DefaultLogger, 以 MiraiLogger.create 代替 (#633)
  • 整理事件结构: 消息相关事件由 net.mamoe.mirai.message 移动到 net.mamoe.mirai.event (#699)
  • 修复 Message.contentEquals: 现在只比较两个 MessagecontentToString().
  • RichMessage 现在实现 ConstrainSingle
  • currentTimeSeconds, currentTimeMillis 变更为函数并移动到 mirai-core-utils
  • 修复 MessageChain.getValue 获取不正确的问题
  • 更名 PokeMessage.typePokeMessage.pokeType
  • 添加 FriendMessageEventTempMessageEvent 的公共父类 UserMessageEvent (#612)
  • 修复监听 MessageEvent 无法获取部分 GroupMessageEvent 的问题 (#620)
  • 现在当桌面环境验证码弹窗可用时会提前在初始化中给出提示, 更安全地打开浏览器 (#543, #694)
  • 修复图片后缀检测 (修复大量图片后缀为 .mirai 的问题) (#635)
  • 修复通知和好友消息同步时出现大量日志的问题 (#619)
  • 协议内部优化 (#666 by @AdoptOSS)
  • 修复缓存未正确释放的问题 (#675)
  • 提升协议稳定性

从 1.x 迁移到 2.0-M1

所有依赖 1.x 编译的项目都无法与 2.x 兼容. mirai-core 在 2.0-M1 提供源码迁移帮助, 且会在 2.0-M2 删除.

替换依赖:

  • net.mamoe:mirai-core -> net.mamoe:mirai-core-api
  • net.mamoe:mirai-core-qqandroid -> net.mamoe:mirai-core

Kotlin:

  • MessageChain[PlainText] 等对已删除 Message.Key 的消息类型的 get 调整为 MessageChain.firstIsInstanceOrNull<PlainText>(), 或使用 MessageChain.content 获取消息内容
  • Bot.getFriend 等函数现在会返回 Friend?, 请手动处理为 null 的情况或使用 getFriendOrFail.
  • 其他大多数变动都提供自动迁移帮助. 在错误上使用 Alt + Enter 可自动替换 (IntelliJ IDEA 和 Android Studio), 如图.

Java:

  • 消息事件包名有调整, 根据 IDE 提示自动导入引用失效的包.
  • Bot 构造方法调整, 将原 BotFactoryKt.newBot(...) 替换为 BotFactory.INSTANCE.newBot(...).
  • 调用 Utils.getDefaultLogger().invoke(...) 替换为 MiraiLogger.create(...)
  • Bot.getFriend 等函数现在返回可能为 null, 请手动处理为 null 的情况或使用 getFriendOrFail.

衍生项目

在 2.0-M1, 你可以使用 mirai 官方维护的项目的以下同步版本:

未来规划

在下一个里程碑 2.0-M2, mirai 将主要完成:

  • 稳定的消息序列化
  • ExternalImage 的重构 (以支持未来的文件发送)
  • Kotlin 扩展函数 API
  • mirai 码的稳定实现
  • 降低协议实现难度, 添加文档和注释
  • ...

mirai 将尽快完成 2.0 重构并在 2.0 之后加快版本发布频率并包含协议更新.

mirai -

Published by Him188 almost 4 years ago

  • 更新依赖版本:
    • kotlinx-coroutines 1.3.9 -> 1.4.0;
    • kotlinx-serialization 1.0.0-RC -> 1.0.1; (有 breaking change, 见 kotlinx.serialization v1.0.0-RC2)
    • ktor 1.3.2 -> 1.4.1;
    • kotlin-jvm-blocking-bridge 1.0.5 -> 1.1.0;
  • 修复 DeviceInfo 序列化问题
mirai - 1.3.2

Published by Karlatemp about 4 years ago

  • 修复缓存过滤的错误导致的戳一戳等信息未及时处理的问题
mirai - 1.3.1

Published by Karlatemp about 4 years ago

  • 修复 BotJoinGroupEvent.Retrieve 的显示错误 (#606 by @Karlatemp)
  • 修复一些戳一戳无法解析的问题 (#615 by @sandtechnology)
mirai -

Published by Him188 about 4 years ago

新特性

  • 支持群恢复相关事件: MemberJoinEvent.Retrieve, BotJoinGroupEvent.Retrieve (#531 by @Karlatemp)
  • 群荣耀获取 (Bot._lowLevelGetGroupHonorListData) (#501 by @yyuueexxiinngg)
  • 戳一戳事件: MemberNudgedEvent, BotNudgedEvent.(#600 by @sandtechnology)
  • 发送戳一戳: Bot.nudge(), User.nudge()
  • BotFactory 添加伴生对象. 在顶层方法不方便使用时可使用伴生对象的 Bot 构建方法

优化和修复

  • 修复好友消息和事件同步相关问题:
    • 部分情况下无法同步好友消息 (#249)
    • BotInvitedJoinGroupRequestEvent 重复执行两次 (#449)
    • 群消息可能发送失败 (#527)
    • 机器人启动后第二次被拉入群聊不会刷新群列表 (#580)
    • 新群员入群事件只触发一次 (#590)
    • 入群申请 MemberJoinRequestEvent 没有广播 (#542)
    • 新成员入群未处理 (#567)
  • 修复 At 之后的多余空格的问题 (#557)
  • 修复 QuoteReply 前多余 At 和空格的问题 (#524)
  • 修复群信息初始值 (isMuteAll, isAllowMemberInvite, ...) (#286)
  • 修复 Voice.url 的域名缺失问题 (#584 by @Hieuzest)
  • 修复日志颜色污染的问题 (#596 by @Karlatemp)
  • 修复 Bot.nick 无法获取的问题 (#566)
  • 修复登录时 IndexOutOfBoundsException 的问题 (#598)
  • 修复 Bot 被踢出群收到的事件类型错误的问题 (#358) (#509 by @sandtechnology)
  • 修复 Bot.close 后必须收到一个数据包才会关闭的问题 (#557)
  • 优化 PermissionDeniedException 的消息内容
mirai -

Published by Him188 about 4 years ago

  • 在同步事件失败时添加重试, 改善 #249, #482, #542, #567, #590
  • 修复不断重连同一个服务器的问题 (#589)
  • 修复 BotJoinGroupEvent.ActiveBotJoinGroupEvent.Invite 没有继承 BotJoinGroupEvent 的问题 (#532 by @yyuueexxiinngg)
  • 修复 EmptyMessageChain 与其他 MessageChain 拼接时发生 NoSuchElementException 的问题 (#550, #561 by @sandtechnology)
  • Image.queryUrl 添加 JvmBlockingBridge
  • 优化 PermissionDeniedException 的错误信息
  • 更新到 Kotlin 1.4.10
mirai -

Published by Him188 about 4 years ago

  • 修复依赖冲突问题 (#523)
mirai -

Published by Him188 about 4 years ago

  • 修复在 Java 调用 group.uploadImage 时编译出错的问题 (#511)
  • group.uploadVoice 添加 Java 方法 (需要 kotlin-jvm-blocking-bridge) (#512)
  • 更新 ktor 到 1.4.0
mirai -

Published by Him188 about 4 years ago

新特性

  • 初步语音支持: Group.uploadVoice, 支持 silk 或 amr 格式.
    注意: 现阶段语音实现仅为临时方案, 在将来 (2.0.0) 一定会变动. 使用时请评估可能带来的不兼容性.

  • 新增将日志转换为 log4j, JDK Logger, SLF4J 等框架的方法: LoggerAdapters (#498 by @Karlatemp)

  • 支持解析好友输入状态: FriendInputStatusChangedEvent (by @sandtechnology)

  • 支持解析好友昵称改变事件: FriendNickChangedEvent (#507 by @Karlatemp)

  • nextEventnextEventOrNull 添加 filter

  • 将 mirai 码相关内容从 mirai-serialization 集成到 mirai-core

  • GroupMessageEvent 现在实现接口 GroupEvent

  • FriendMessageEvent 现在实现接口 FriendEvent (#444)

依赖更新

  • 更新 Kotlin 版本到 1.4.0
  • 更新 kotlinx-coroutines-core 到 1.3.9
  • 使用者也需要更新到 1.4.0, 至少更新编译器 (Maven 和 Gradle 插件)
  • 更新 kotlinx-serialization 到 1.0.0-RC: kotlinx-serialization 在此版本做了较大的不兼容改动.

API 弃用

  • String.toMessage: 为避免和 mirai code 产生混乱.
  • URL.toExternalImage
  • Input.toExternalImage

优化和修复

  • 显式 API
    • mirai 的所有公开 API 均已经显式加上 public 修饰符, 遵循 Koltin Explicit API mode 规范. 如:
          public data class BotOnlineEvent internal constructor(
              public override val bot: Bot
          ) : BotActiveEvent, AbstractEvent()
      
    • 调整了一些不应该公开的 API 为 internal, 这些调整在绝大多数情况下不影响现有代码
  • 修复群权限判断失败的问题 (#389)
  • 修复 syncFromEvent 文档错误 (#427)
  • 新增 BotConfiguration.loadDeviceInfoJson(String) (#450)
  • 修复成员进群后第一次发言触发改名事件的问题 (#475 by @cxy654849388)
  • 修复 group.quit 未正确执行的问题 (#472, #477 by @Mr4s)
  • 修复初始化时 syncCookie 同步问题
  • 修复 Network Protocol: java.lang.IllegalStateException: returnCode = -10008 (#470)
  • 修复 Member.isMuted
  • 修复 Method.registerEvent 相关问题 (#495 by @sandtechnology, #499 by @Karlatemp)
  • 修复 Android 手表协议无法监听撤回事件的问题 (#448)
  • 改进好友消息同步过程