mirai

高效率 QQ 机器人支持库

AGPL-3.0 License

Stars
14K
Committers
131

Bot releases are visible (Hide)

mirai -

Published by Him188 over 4 years ago

  • 修复 ListenerHost Java 兼容性问题 (#443, #446 by @Karlatemp)
mirai -

Published by Him188 over 4 years ago

  • 修复 JvmMethodEvents T.registerEvents 注册时错误判断 @NotNull 注解的问题 (#436)
mirai -

Published by Him188 over 4 years ago

  • 修复最后一个 mirai 码之后的消息无法解析的问题 (#431 @cxy654849388)
mirai -

Published by Him188 over 4 years ago

新特性:

  • 添加实验性 CodableMessage 作为支持 mirai 码的 Message 的接口.
  • 支持 mirai 码 解析; 新模块 mirai-serialization
  • 实现 MessagePreSendEventMessagePostSendEvent (#339).
  • 添加 BotConfiguration.json, 作为序列化时使用的 Json format, 修复潜在的因 kotlinx.serialization 进行不兼容更新而导致的不兼容.
  • 支持 Android 手表协议 (BotConfiguration.MiraiProtocol.ANDROID_WATCH)
  • EventHandler 现在支持 Nothing 类型.

不兼容变更:

  • Image.imageId 后缀由 .mirai 变为图片文件实际类型, 如 .png, .jpg. 兼容原 .mirai 后缀.
  • 弃用 MessageSendEvent (#339). 迁移计划: WARNING in 1.1.0, ERROR in 1.2.0, HIDDEN in 1.3.0
  • 重命名实验性 API CustomMessage.Factory.serializeCustomMessage.Factory.dump
  • 重命名实验性 API CustomMessage.Factory.deserializeCustomMessage.Factory.load
  • 调整 VipFace 的 mirai 码表示, 详见 mirai 码规范
  • Face.toString() 现在返回表情名称, 如 "[偷笑]", 而不是 "[表情]" (#345 @goldimax)

优化和修复:

  • 修复无需同意直接进群时,在加载新群信息完成前收到消息过早处理的问题 (#370)
  • 修复在某些情况下,管理员邀请群Bot加群会被误判为群成员申请加群的问题 (#402 by @kenvix)
  • 修复从其他客户端加群时未同步的问题 (#404, #410)
  • 修复 ConfigPushSvc.PushReq 解析失败的问题 (#417)
  • 修复 _lowLevelGetGroupActiveData
  • 修复 SimpleListenerHost.coroutineScope 潜在的 Job 被覆盖的问题
  • 修复群头像的获取不正确的问题 (#340)
  • PttMessageVoice 标注 @MiraiExperimentalAPI (missing)
  • 删除 Message.plus(another: Flow<Message>)@ExperimentalCoroutinesApi
  • 提升发送群消息的稳定性
  • 文档和内部优化
  • 提升在上个版本中弃用的 API 的弃用等级
mirai -

Published by Him188 over 4 years ago

  • 添加 BotConfiguration.json, 作为序列化时使用的 Json format, 修复潜在的因 kotlinx.serialization 进行不兼容更新而导致的不兼容.

不兼容变更:

  • Image.imageId 后缀由 .mirai 变为图片文件实际类型, 如 .png, .jpg. 兼容原 .mirai 后缀.

修复:

  • (1.0.4 中修复的问题)
  • (1.0.3 中修复的问题)
mirai -

Published by Him188 over 4 years ago

  • 修复上传图片失败时内存泄露的问题 (#385)
  • 修复大量图片同时上传时出错的问题 (#387)
  • 修复在一些情况下 BotOfflineEvent 没有正常处理而无法继续接收消息的问题 (#376)
  • 修复 Bot 在某个群 T 出某个人导致 Bot 终止的问题 (#372)
  • 修复 @PlannedRemoval 的文档
mirai - 1.0.3

Published by Him188 over 4 years ago

  • 修复 friendlist.GetTroopListReqV2:java.lang.IllegalStateException: type mismatch 10 (#405)
mirai -

Published by Him188 over 4 years ago

1.1.0 Early Access / 1.1.0 预览版
此版本新增的 API 可能不稳定, 且可能在下一个版本中删除.

主要:

  • 添加实验性 CodableMessage 作为支持 mirai 码的 Message 的接口.
  • 支持 mirai 码 解析; 新模块 mirai-serialization
  • 实现 MessagePreSendEventMessagePostSendEvent (#339).

不兼容变更:

  • 重命名实验性 API CustomMessage.Factory.serializeCustomMessage.Factory.dump
  • 重命名实验性 API CustomMessage.Factory.deserializeCustomMessage.Factory.load
  • 弃用 MessageSendEvent (#339). 迁移计划: WARNING in 1.1.0, ERROR in 1.2.0, REMOVE in 1.3.0
  • 调整 VipFace 的 mirai 码表示, 详见 mirai 码规范
  • Face.toString() 现在返回表情名称, 如 "[偷笑]", 而不是 "[表情]" (#345 @goldimax)

优化和修复:

  • 修复群头像的获取不正确的问题 (#340)
  • PttMessageVoice 标注 @MiraiExperimentalAPI (missing)
  • 删除 Message.plus(another: Flow<Message>)@ExperimentalCoroutinesApi
  • 提升发送群消息的稳定性
  • 一些文档优化
  • 其他内部优化
  • 提升在上个版本中弃用的 API 的弃用等级
mirai -

Published by Him188 over 4 years ago

  • 新增 Bot.botInstancesSequence
  • 修复日志中的时间未更新的问题
  • 修复在某些情况下,Bot登录的时候无限重连 (#361)
  • 优化一些文档注释
mirai -

Published by Him188 over 4 years ago

  • 新增临时会话消息发送事件: TempMessageSendEvent (#338)
  • 新增 Bot.isOnline (#342)
  • 修复日志重定向到文件后无换行的问题
  • 修复 Bot 被邀请入群事件的解析, 添加 BotJoinGroupEvent.Invite (#344)
  • 修复 IPv6 地址支持 (#334)
  • 修复一些 KDoc (#337)
  • 优化一些内部的日志的显示
mirai -

Published by Him188 over 4 years ago

  • 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
  • ... 忽略了内部变动
mirai -

Published by Him188 over 4 years ago

  • 修复一个 VerifyError
mirai -

Published by Him188 over 4 years ago

(请使用 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 变更)
mirai -

Published by Him188 over 4 years ago

事件优先级与拦截

特别感谢 @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)
mirai -

Published by Him188 over 4 years ago

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

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

Published by Him188 over 4 years ago

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

Published by Him188 over 4 years ago

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

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

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

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

Published by Him188 over 4 years ago

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

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

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

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

Published by Him188 over 4 years ago

  • 完善 Message 相关的 KDoc
  • 在支持图像界面的环境下弹出验证码输入 (#257)
  • 修复无法通过 id 发送图片的问题 (#262)
  • 修复彩色群名解析不全的问题 (#263)
mirai -

Published by Him188 over 4 years ago

  • 修复长消息发送失败的问题 (#256)
  • 撤销 Bot.instances 更改, 添加新的 Bot.botInstances 以兼容以前的代码
  • 修复密码错误时未停止重连的问题
  • 修复 ForwardMessage 无法从 firstOrNull 获取的问题