Bot releases are visible (Hide)
Published by Karlatemp over 3 years ago
Published by Him188 over 3 years ago
Published by Him188 over 3 years ago
BotConfiguration.highwayUploadCoroutineCount
设置多线上传连接数量Group.setEssenceMessage
(#837)EventChannel.filter
Stranger.asFriend
和 Stranger.asFriendOrNull
nextEventAsync
和 nextEventOrNullAsync
nextEvent
没有正确处理协程取消的问题MusicShare
到部分群失败的问题 (#918)ExternalResource.DEFAULT_FORMAT_NAME
的问题ExternalResource.DEFAULT_FORMAT_NAME
-jvm
后缀的模块.
自 2.2 起,mirai-console 系列所有模块将与 mirai-core 同步版本发布
Published by Him188 over 3 years ago
BotConfiguration.reconnectionRetryTimes
不起作用和 LoginFailedException
时无限重连的问题 (#895)Published by Him188 over 3 years ago
MemberJoinRequestEvent.invitor
(#458, #882 by @sandtechnology)MusicShare
(#682, #889, #690 by @wdvxdr1123)BotConfiguration.autoReconnectOnForceOffline
(#835)ForwardMessageBuilder.add(MessageEvent)
以便从一个消息时间获取信息Published by Him188 almost 4 years ago
迁移指南 Migration From 1.x
Published by Him188 almost 4 years ago
Mirai 已完成 2.0 重构。
2.0-RC
是一个稳定版本。 之后版本更新将会有兼容性保证。下一个版本 2.0.0
将会在修复 2.0-RC
的问题和完善文档后发布。
MemberJoinEvent.Invite
获取邀请人 (#804 by @sandtechnology)Nudge
APIBotOfflineEvent.reconnect
以支持控制掉线自动重连BotConfiguration.workingDir
配置工作目录UserEvent
接口recallIn
结果获取TempMessageEvent
更名为 GroupTempMessageEvent
, 因计划支持更多临时会话消息 (#429)MessageChain
相关的 asMessageChain
为 toMessageChain
MessageChain
相关的 flatten
Message.isPlain
, Message.isNotPlain
, Message.isContentNotEmpty
Member.isNormal
, Member.isAnonymous
ContactList.idContentString
MessageSource
中 isAboutFriend
, isAboutGroup
, isAboutTemp
Listener.ConcurrencyKind
和 Listener.EventPriority
由嵌套类移动到顶层XXXNudgeEvent
, 以单一 NudgeEvent
替代MessageSource.originalMessage
不再带有 MessageSource
At
Bot.getFriend
现在在 id == bot.id
时返回 bot.asFriend
OtherClient.id
变为一个特定的 id, 而不是与 Bot.id
相同IMirai
低级 API 函数名现在不再带有 _lowLevel
前缀Error
(#824)ListenerHost.registerTo
没有调用 EventChannel.parentScope
的问题NormalMember.toString
QuoteReply
StackOverflowError
QuoteReply.source
的 MessageSource.kind
错误的问题RichMessage.Key
的 baseKey
ExternalResource.uploadImage
和 ExternalResource.sendImage
添加 formatName
参数ForwardMessage.contentToString
2.0-M2
-> 2.0-RC
有部分二进制不兼容,因此可能需要重新编译。
在 2.0-RC
和之后版本, 你可以使用 mirai 官方维护的项目的以下同步版本:
2.0-RC
0.4.0
1.9.6
Published by Him188 almost 4 years ago
2.0-M2 -> 2.0-M2-2 是兼容的。意味着使用 2.0-M2 和 2.0-M2-1 编译的应用可以直接与 2.0-M2-2 运行。
在 2.0-M2-2, 你可以使用 mirai 官方维护的项目的以下同步版本:
2.0-M2
0.3.0
1.9.5
1.9.6
Published by Karlatemp almost 4 years ago
2.0-M2 -> 2.0-M2-1 是兼容的。意味着使用 2.0-M2 编译的应用可以直接与 2.0-M2-1 运行。
在 2.0-M2-1, 你可以使用 mirai 官方维护的项目的以下同步版本:
2.0-M2
0.3.0
1.9.5
1.9.5
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
OtherClientMessageEvent
GroupMessageSyncEvent
(#644)新增 MessageChain.findIsInstance
扩展获取第一个指定类型 SingleMessage
实例
新增 MessageRecallEvent.author
新增 Message.deserializeFromJsonString
和 Message.serializeToJsonString
新增 Message.contentEquals
参数 strict
以检测各个消息元素
新增 ContactOrBot.avatarUrl
通用获取头像 (#756)
新增 ContactOrBot.bot
获取有关 Bot
新增 Group.getMember
和 Group.getMemberOrFail
用于不适合使用 Group.get
的场合
新增 ContactList.getOrFail
获取联系人,在目标不存在时抛出异常
新增 EventChannel
,弃用原 CoroutineScope.subscribe
等函数 (#514, #753) (文档)
新增 ExternalResource
替代 ExternalImage
以支持通用的语音,文件和图片的发送的 API (#754, #752)
更好的 Java API (#751, #755)
ExternalResource
并支持多种输入Group.botAsMember
, Bot.asFriend
现在稳定MessageChain.hashCode
和 MessageChain.equals
MessageEventExtensions
LoginSolver
(#703):
DefaultLoginSolver
更名为 StandardCharImageLoginSolver
null
SimpleListenerHost
事件处理器中抛出的异常现在会被包装成 ExceptionInEventHandlerException
以允许获取相关事件 (#533)HummerMessage
变为接口selectMessages
和 whileSelectMessages
添加 @BuilderInference
,现在无需手动指定泛型MessageRecallEvent.FriendRecall.authorId
的歧义 (#704)MessageRecallEvent.GroupRecall
重复广播的问题要从 2.0-M1 升级到 2.0-M2,请先了解 新的事件系统。
要从 1.x 升级到 2.0-M2,请首先升级到 2.0-M1。
2.0-M1 -> 2.0-M2 有部分二进制不兼容,因此可能需要重新编译。
在 2.0-M2, 你可以使用 mirai 官方维护的项目的以下同步版本:
2.0-M2
0.3.0
1.9.5
1.9.5
mirai 已经完成 2.0 的两个里程碑。
下一个版本 2.0-RC 将在消息序列化完成后发布。届时,mirai 将提供稳定的 API(同时对于源码或二进制)。
即使 2.0-M2 还不保证向后兼容性,但也建议用户尝试这个版本并反馈任何问题。
Published by Him188 almost 4 years ago
MessageEvent.reply
等函数调用时产生 java.lang.VerifyError
的问题 (#732)2.0-M1 -> 2.0-M1-1 是兼容的。意味着使用 2.0-M1
编译的应用可以直接与 2.0-M1-1
运行。
在 2.0-M1-1, 你可以使用 mirai 官方维护的项目的以下同步版本:
2.0-M1-1
0.2.0
1.9.2
1.9.5
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
.
common
目标为 JVM. jvm
目标为桌面 JVM. android
目标为 Android JVM. Android 目标将会在未来不久发布.所有不兼容变更都以加粗表示.
Bot
变为 newBot
Context
参数Bot(...)
构造 Bot
调整为使用 BotFactory.newBot(...)
IMirai
, 存放所有协议实现.Bot
变为接口.Bot
的部分静态方法更名. 在调用旧方法时会得到警告.Contact
, User
, Friend
, Group
, Member
.UserOrBot
作为 User
和 Bot
的公共接口.get
类型方法现在返回可空而不会抛出异常. 以 getOrFail
代替原会抛出异常的 get
. 涉及的方法列表:
ContactList.get
Group.get
,Bot.getFriend
, Bot.getGroup
sendMessage(String)
UserOrBot.nudge()
重构 MessageSource, 支持分片的多个源消息 (#618):
MessageSource.id: Int
-> MessageSource.ids: IntArray
MessageSource.internalId: Int
-> MessageSource.internalIds: IntArray
-1
, 现在会返回空数组.Message.Key
移到顶层 MessageKey
, 并提供多态支持:
ConstrainSingle
(即每条 MessageChain
中只允许出现一个的消息) 才会有伴生对象 MessageKey
.ConstrainSingle
时将可能替换多条消息 (适应真实情况):
Voice
等消息只能单独存在, 连接 Voice
与一个 MessageChain
时 Voice
将会覆盖第一个 MessageContent
并删除其后所有其他 MessageContent
.AbstractPolymorphicMessageKey
大部分 mirai 内置 Message
现在支持 kotlinx-serialization 序列化 (#219).
注意:
接口的序列化使用多态序列化 PolymorphicSerializer
. 特别地, kotlinx-serialization-json 会将多态环境的 Message
序列化为数组, 其第一元素为类型全限定名, 第二元素为消息数据.
序列化还未稳定, 但将会在 2.0.0 前达到稳定, 届时会有相关文档提供.
At
对象中不再存储显示内容 (display
). 现在 At
对象仅包含一个属性 target: Long
, 显示内容会在发送消息时获取.
ForwardMessage
现在变为无状态的 data class
. 原构造方法弃用保留到下个版本.
IMirai
接口, Java 用户可以正常访问所有接口.DeviceInfo
, 更好地支持序列化 (#655 by @AdoptOSS)DefaultLogger
, 以 MiraiLogger.create
代替 (#633)net.mamoe.mirai.message
移动到 net.mamoe.mirai.event
(#699)Message.contentEquals
: 现在只比较两个 Message
的 contentToString()
.RichMessage
现在实现 ConstrainSingle
currentTimeSeconds
, currentTimeMillis
变更为函数并移动到 mirai-core-utilsMessageChain.getValue
获取不正确的问题PokeMessage.type
为 PokeMessage.pokeType
FriendMessageEvent
和 TempMessageEvent
的公共父类 UserMessageEvent
(#612)MessageEvent
无法获取部分 GroupMessageEvent
的问题 (#620).mirai
的问题) (#635)所有依赖 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:
BotFactoryKt.newBot(...)
替换为 BotFactory.INSTANCE.newBot(...)
.Utils.getDefaultLogger().invoke(...)
替换为 MiraiLogger.create(...)
Bot.getFriend
等函数现在返回可能为 null
, 请手动处理为 null
的情况或使用 getFriendOrFail
.在 2.0-M1, 你可以使用 mirai 官方维护的项目的以下同步版本:
2.0-M1
0.2.0
1.9.1
1.9.5
在下一个里程碑 2.0-M2
, mirai 将主要完成:
ExternalImage
的重构 (以支持未来的文件发送)mirai 将尽快完成 2.0 重构并在 2.0 之后加快版本发布频率并包含协议更新.
DeviceInfo
序列化问题Published by Karlatemp about 4 years ago
Published by Karlatemp about 4 years ago
BotJoinGroupEvent.Retrieve
的显示错误 (#606 by @Karlatemp)MemberJoinEvent.Retrieve
, BotJoinGroupEvent.Retrieve
(#531 by @Karlatemp)Bot._lowLevelGetGroupHonorListData
) (#501 by @yyuueexxiinngg)MemberNudgedEvent
, BotNudgedEvent
.(#600 by @sandtechnology)Bot.nudge()
, User.nudge()
BotFactory
添加伴生对象. 在顶层方法不方便使用时可使用伴生对象的 Bot
构建方法At
之后的多余空格的问题 (#557)QuoteReply
前多余 At
和空格的问题 (#524)isMuteAll
, isAllowMemberInvite
, ...) (#286)Voice.url
的域名缺失问题 (#584 by @Hieuzest)Bot.nick
无法获取的问题 (#566)IndexOutOfBoundsException
的问题 (#598)Bot.close
后必须收到一个数据包才会关闭的问题 (#557)PermissionDeniedException
的消息内容BotJoinGroupEvent.Active
和 BotJoinGroupEvent.Invite
没有继承 BotJoinGroupEvent
的问题 (#532 by @yyuueexxiinngg)EmptyMessageChain
与其他 MessageChain
拼接时发生 NoSuchElementException
的问题 (#550, #561 by @sandtechnology)Image.queryUrl
添加 JvmBlockingBridgePermissionDeniedException
的错误信息1.4.10
group.uploadImage
时编译出错的问题 (#511)group.uploadVoice
添加 Java 方法 (需要 kotlin-jvm-blocking-bridge) (#512)初步语音支持: Group.uploadVoice
, 支持 silk 或 amr 格式.
注意: 现阶段语音实现仅为临时方案, 在将来 (2.0.0
) 一定会变动. 使用时请评估可能带来的不兼容性.
新增将日志转换为 log4j, JDK Logger, SLF4J 等框架的方法: LoggerAdapters
(#498 by @Karlatemp)
支持解析好友输入状态: FriendInputStatusChangedEvent
(by @sandtechnology)
支持解析好友昵称改变事件: FriendNickChangedEvent
(#507 by @Karlatemp)
nextEvent
和 nextEventOrNull
添加 filter
将 mirai 码相关内容从 mirai-serialization 集成到 mirai-core
GroupMessageEvent
现在实现接口 GroupEvent
FriendMessageEvent
现在实现接口 FriendEvent
(#444)
1.4.0
1.3.9
1.4.0
, 至少更新编译器 (Maven 和 Gradle 插件)1.0.0-RC
: kotlinx-serialization 在此版本做了较大的不兼容改动.String.toMessage
: 为避免和 mirai code 产生混乱.URL.toExternalImage
Input.toExternalImage
public
修饰符, 遵循 Koltin Explicit API mode 规范. 如:
public data class BotOnlineEvent internal constructor(
public override val bot: Bot
) : BotActiveEvent, AbstractEvent()
internal
, 这些调整在绝大多数情况下不影响现有代码syncFromEvent
文档错误 (#427)BotConfiguration.loadDeviceInfoJson(String)
(#450)group.quit
未正确执行的问题 (#472, #477 by @Mr4s)Member.isMuted
Method.registerEvent
相关问题 (#495 by @sandtechnology, #499 by @Karlatemp)