15 KiB
Major version 0
开发版本. 频繁更新, 不保证高稳定性
0.27.0
2020/3/8
- 支持
XML
,Json
,LightApp
等RichMessage
0.26.2
2020/3/8
- 新增
MessageChain.repeat
与MessageChain.times
- JVM 平台下
PlatformLogger
可重定向输出 - 修复
NullMessageChain.equals
判断不正确的问题 - 新增
PlainText.of
以应对一些特殊情况
0.26.1
2020/3/8
- 重写 Jce 序列化, 提升反序列性能
- 更新
Kotlin
版本到 1.3.70 - 更新
kotlinx.coroutines
,atomicfu
,kotlinx.coroutines
依赖版本
0.26.0
2020/3/7
- 使用
kotlinx.io
而不是ktor.io
- 修复 #111, #108, #116, #112
0.25.0
2020/3/6
- 适配 8.2.7 版本(2020 年 3 月)协议
- 全面的
Image
类型: Online/Offline Image, Friend/Group Image - 修复查询图片链接时好友图片链接错误的问题
- 修复 bugs: #105, #106, #107
0.24.1
2020/3/3
- 修复
Member
的委托QQ
弱引用被释放的问题 - 用
Bot.friends
替代Bot.qqs
- 用
Bot.containsFriend
,Bot.containsGroup
替代Bot.contains
- 新增
BotFactory.Bot(String, ByteArray)
用 md5 密码登录 - 为
BotFactory
等类型的一些扩展指定JvmName
- 移动
Bot.QQ
到低级 API
0.24.0
2020/3/1
-
Java 完全友好: Java 使用者可以同 Kotlin 方式直接阻塞式或异步(Future)调用 API
-
新增
MessageSource.originalMessage: MessageChain
以获取源消息内容 -
群消息的撤回现在已稳定 (
Bot.recall
) -
现在可以引用回复机器人自己发送的消息:
MessageReceipt.quoteReply
-
新增
MessageRecallEvent
-
整理
MessageChain
的构造, 优化性能 -
整理所有网络层代码, 弃用
kotlinx.io
而使用io.ktor.utils.io
-
其他杂项优化
0.23.0
2020/2/28
mirai-core
- 修复上传图片
- 一些问题修复
- 大量杂项优化
mirai-core-qqandroid
MessageReceipt.source
现在为 public. 可获取源消息 id- 修复上传好友图片失败的问题
- 上传群图片现在分包缓存, 优化性能
0.22.0
2020/2/24
mirai-core
- 重构
MessageChain
, 引入CombinedMessage
. (兼容大部分原 API) - 新增
MessageChainBuilder
,buildMessageChain
ExternalImage
现在接收多种输入参数
mirai-core-qqandroid
- 修复访问好友消息回执
.sequenceId
时抛出异常的问题
0.21.0
2020/2/23
- 支持好友消息的引用回复
- 更加结构化的
QuoteReply
架构, 支持引用任意群/好友消息回复给任意群/好友.
0.20.0
2020/2/23
mirai-core
-
支持图片下载:
image.channel(): ByteReadChannel
,image.url()
-
添加
LockFreeLinkedList<E>.iterator
-
添加
LockFreeLinkedList<E>.forEachNode
-
并行处理事件监听
-
添加
nextMessageContaining
和相关可空版本 -
'撤回' 从
Contact
移动到Bot
-
删除
MessageSource.sourceMessage
-
让 MessageSource 拥有唯一的 long 类型 id, 删除原
uid
和sequence
结构. -
修复
Message.eq
歧义
0.19.1
2020/2/21
mirai-core
- 支持机器人撤回群消息 (含自己发送的消息):
Group.recall
,MessageReceipt.recall
- 支持一定时间后自动撤回:
Group.recallIn
,MessageReceipt.recallIn
sendMessage
返回MessageReceipt
以实现撤回功能- 添加
MessageChain.addOrRemove
- 添加
ContactList.firstOrNull
,ContactList.first
- 新的异步事件监听方式:
subscribingGetAsync
启动一个协程并从一个事件从获取返回值到Deferred
. - 新的线性事件监听方式:
subscribingGet
挂起当前协程并从一个事件从获取返回值.
新的线性消息连续处理: nextMessage
挂起当前协程并等待下一条消息:
使用该示例, 发送两条消息, 一条为 "禁言", 另一条包含一个 At
case("禁言") {
val value: At = nextMessage { message.any(At) }[At]
value.member().mute(10)
}
示例 2:
case("复读下一条") {
reply(nextMessage().message)
}
mirai-core-qqandroid
- 修复一些情况下
At
无法发送的问题 - 统一 ImageId: 群消息收到的 ImageId 均为
{xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx}.jpg
形式(固定长度 37) - 支持成员主动离开事件的解析 (#51)
0.18.0
2020/2/20
mirai-core
- 添加
MessageSource.time
- 添加事件监听时额外的
coroutineContext
- 为一些带有
operator
的事件添加.isByBot
的属性扩展 - 优化事件广播逻辑, 修复可能无法触发监听的问题
- 为所有
Contact
添加toString()
(#80)
mirai-core-qqandroid
- 支持成员禁言状态和时间查询
Member.muteTimeRemaining
- 修复
At
的display
(#73), 同时修复QuoteReply
无法显示问题 (#54). - 广播
BotReloginEvent
(#78) - 支持机器人自身禁言时间的更新和查询 (#82)
0.17.0
2020/2/20
mirai-core
- 支持原生表情
Face
- 修正
groupCardOrNick
为nameCardOrNick
- 增加
MessageChain.foreachContent(lambda)
和Message.hasContent(): Boolean
mirai-core-qqandroid
- 提高重连速度
- 修复重连后某些情况不会心跳
- 修复收包时可能产生异常
0.16.0
2020/2/19
mirai-core
- 添加
Bot.subscribe
等筛选 Bot 实例的监听方法 - 其他一些小问题修复
mirai-core-qqandroid
- 优化重连处理逻辑
- 确保好友消息和历史事件在初始化结束前同步完成
- 同步好友消息记录时不广播
0.15.5
2020/2/19
mirai-core
- 为
MiraiLogger
添加 common propertyval isEnabled: Boolean
- 修复 #62: 掉线重连后无 heartbeat
- 修复 #65:
Bot
close 后仍会重连 - 修复 #70: ECDH is not available on Android platform
mirai-core-qqandroid
- 从服务器收到的事件将会额外使用
bot.logger
记录 (verbose). - 降低包记录的等级:
info
->verbose
- 改善
Bot
的 log 记录 - 加载好友列表失败时会重试
- 改善
Bot
或NetworkHandler
关闭时取消 job 的逻辑 - 修复初始化(init)时同步历史好友消息时出错的问题
0.15.4
2020/2/18
- 放弃使用
atomicfu
以解决其编译错误的问题. (#60)
0.15.3
2020/2/18
- 修复无法引入依赖的问题.
0.15.2
2020/2/18
mirai-core
- 尝试修复
atomicfu
编译错误的问题
mirai-core-qqandroid
- 查询群信息失败后重试
0.15.1
2020/2/15
mirai-core
- 统一异常处理: 所有群成员相关操作无权限时均抛出异常而不返回
false
.
mirai-core-qqandroid
- 初始化未完成时缓存接收的所有事件包 (#46)
- 解析群踢人事件时忽略找不到的群成员
- 登录完成后广播事件
BotOnlineEvent
0.15.0
2020/2/14
mirai-core
-
新增事件:
BotReloginEvent
和BotOfflineEvent.Dropped
-
AtAll
现在实现Message.Key
-
新增
BotConfiguration
DSL, 支持自动将设备信息存储在文件系统等 -
新增
MessageSource.quote(Member)
-
更好的网络层连接逻辑
-
密码错误后不再重试登录
-
掉线后尝试快速重连, 失败则普通重连 (#47)
-
有原因的登录失败时将抛出特定异常:
LoginFailedException
-
默认心跳时间调整为 60s
mirai-core-qqandroid
- 解决一些验证码无法识别的问题
- 忽略一些不需要处理的事件(机器人主动操作触发的事件)
0.14.0
2020/2/13
mirai-core
- 支持 at 全体成员:
AtAll
mirai-core-qqandroid
- 支持
AtAll
的发送和解析 - 修复某些情况下禁言处理异常
小优化:
- 在
GroupMessage
添加quoteReply(Message)
, 可快速引用消息并回复 - 为
CoroutineScope.subscribeMessages
添加返回值. 返回 lambda 的返回值 - 在验证码无法处理时记录更多信息
- 优化
At
的空格处理 (自动为At
之后的消息添加空格) - 删除
BotConfiguration
中一些过时的设置
0.13.0
2020/2/12
mirai-core
- 修改 BotFactory, 添加
context
参数. - currentTimeMillis 减少不必要对象创建
- 优化无锁链表性能 (大幅提升
addAll
性能)
mirai-core-qqanroid
安卓协议发布, 基于最新 QQ, 版本 8.2.0
支持的功能:
- 登录: 密码登录. 设备锁支持, 不安全状态支持, 图片验证码支持, 滑动验证码支持.
- 消息: 文字消息, 图片消息(含表情消息), 群员 At, 引用回复.
- 列表: 群列表, 群员列表, 好友列表均已稳定.
- 群操作: 查看和修改群名, 查看和修改群属性(含全体禁言, 坦白说, 自动批准加入, 匿名聊天, 允许成员拉人), 设置和解除成员禁言, 查看和修改成员名片, 踢出成员.
- 消息事件: 接受群消息和好友消息并解析
- 群事件: 群员加入, 群员离开, 禁言和解除禁言, 群属性(含全体禁言, 坦白说, 匿名聊天, 允许成员拉人)改动.
mirai-api-http
HTTP API 已完成, by @ryoii.
详见 README
Mirai 仍处于快速迭代状态. 将来仍可能会有 API 改动.
0.12.0
2020/1/19
mirai-core
- 监听消息时允许使用条件式的表达式, 如:
(contains("1") and has<Image>()){
reply("Your message has a string '1' and an image contained")
}
(contains("1") or endsWith("2")){
}
原有单一条件语法不变:
contains("1"){
}
"Hello" reply "World"
- Message: 修复
eq
无法正确判断的问题; 性能优化. - 简化 logger 结构(API 不变).
- 事件
cancelled
属性修改为val
(以前是var
withprivate set
)
0.11.0
2020/1/12
mirai-core
- 弃用
BotAccount.id
. 将来它可能会被改名成为邮箱等账号. QQ 号码需通过bot.uin
获取. Gender
由inline class
改为 enumString.chain()
改为String.toChain()
List<Message>.chain()
改为List<Message>.toChain()
mirai-core-timpc
- 修复在有入群验证时无法解析群资料的问题 (#30)
0.10.6
2020/1/8
TIMPC
- Fix #27, 群成员找不到的问题
- 一些小优化
0.10.5
2020/1/3
- 修复有时表情消息无法解析的问题
- 为心跳增加重试, 降低掉线概率
- 消息中的换行输出为 \n
- 其他一些小问题修复
0.10.4
2020/1/1
- 事件处理抛出异常时不停止监听
- 添加
Bot(qq, password, config=Default)
- 一些性能优化
0.10.3
2020/1/1
- 修复一个由 atomicfu 的 bug 导致的 VerifyError
- 添加
ExternalImageAndroid
- 事件处理抛出异常时正确地停止监听
0.10.1
2019/12/30
Bot 构造
Bot
构造时修改 BotConfiguration
而不是登录时.
移除 CoroutineScope.Bot
移除 suspend Bot(...)
添加 Bot(..., BotConfiguration.() -> Unit)
添加 Bot(..., BotConfiguration = BotConfiguration.Default)
其他
全面的在线状态 (OnlineStatus
)
移动部分文件, 模块化
0.10.0
2019/12/23
事件优化
更快的监听过程
现在监听不再是 suspend
, 而必须显式指定 CoroutineScope
. 详见 Subscribers.kt
删除原本的 bot.subscribe 等监听模式.
其他
Contact
现在实现接口 CoroutineScope
0.9.0
2019/12/20
协议模块独立
现在 mirai-core
只提供基础的抽象类. 具体的各协议实现为 mirai-core-PROTOCOL
.
这些模块都继承自 mirai-core
.
现在, 要使用 mirai, 必须依赖于特定的协议模块, 如 mirai-core-timpc
.
查阅 API 时请查看 mirai-core
.
每个模块只提供少量的额外方法. 我们会给出详细列表.
在目前的开发中您无需考虑多协议兼容.
Bot 构造
协议抽象后构造 Bot 需指定协议的 BotFactory
.
在 JVM 平台, Mirai 通过 classname 自动加载协议模块的 BotFactory
, 因此若您只使用一套协议, 则无需修改现行源码
事件
大部分事件包名修改.
UInt -> Long
修改全部 QQ ID, Group ID 的类型由 UInt 为 Long.
此为 API 不兼容更新, 请将所有无符号标志 u
删除即可. 如 123456u
改为 123456
另还有其他 API 的包名或签名修改. 请使用 IDE 自动修补 import 即可.
0.8.2
2019/12/15
- 修复 GroupId.toGroupInternalId 错误
- 修复解析群消息时小概率出现的一个错误
0.8.1
2019/12/15
- 修复有时群资料无法获取的情况
- 现在
At.qq
,Long.qq
等函数不再是suspend
0.8.0
2019/12/14
协议
- 现在查询群资料时可处理群号无效的情况
- 现在能正常分辨禁言事件包
功能
- 增加无锁链表: LockFreeLinkedList, 并将 ContactList 的实现改为该无锁链表
- ContactSystem.getQQ 不再是
suspend
- ContactSystem.getGroup 仍是
suspend
, 原因为需要查询群资料. 在群 ID 无效时抛出GroupNotFoundException
优化
- 日志中, 发送给服务器的包将会被以名字记录, 而不是 id
0.7.5
2019/12/09
- 修复验证码包发出后无回复 (错误的验证码包)
0.7.4
2019/12/08
- 修复 bug
- 优化 JVM 平台上需要验证码时的提示
0.7.3
2019/12/07
- 删除 klock 依赖, 添加 Time.kt. 待将来 kotlin Duration 稳定后替换为 Duration
0.7.2
2019/12/07
- 使所有协议相关类
internal
- 去掉一些
close
的不应该有的suspend
QQ
,Member
,Group
现在继承接口CoroutineScope
- 将
LoginResult
由inline class
修改为enum class
- 添加和修改了
BotAccount
和Bot
的构造器
0.7.1
2019/12/05
- 修复禁言时间范围错误的问题
- 禁言的扩展函数现在会传递实际函数的返回值
0.7.0
2019/12/04
协议
- 重新分析验证码包, 解决一些无法解析的情况. (这可能会产生新的问题, 遇到后请提交 issue)
- 重新分析提交密码包
- 提交验证码仍可能出现问题 (已在
0.7.5
修复)
功能
- XML 消息 DSL 构造支持 (实验性) (暂不支持发送)
- 群成员列表现在包含群主 (原本就应该包含)
- 在消息事件处理中添加获取
.qq()
和.group()
的扩展函数. - 现在处理群消息时 sender 为 Member (以前为 QQ)
- 修改
Message.concat
为Message.followedBy
- 修改成员权限
OPERATOR
为ADMINISTRATOR
- bot.subscribeAll<>() 等函数的 handler lambda 的 receiver 由 Bot 改变为 BotSession; 此变动不会造成现有代码的修改, 但并不兼容旧版本编译的代码
性能优化
- 内联 ContactList
- 2 个 Contact.sendMessage 重载改为内联扩展函数 (需要添加 import)
- 其他小优化
0.6.1
2019/12/03
- 新增: 无法解析密码包/验证码包时的调试输出. 以兼容更多的设备情况
- 新增:
MessagePacket
下At.qq()
捷径获取 QQ
0.6.0
2019/12/02
- 新增: 禁言群成员 (
Member.mute(TimeSpan|Duration|MonthsSpan|Int|UInt)
) - 新增: 解禁群成员 (
Member.unmute()
) - 修复: ContactList key 无法匹配 (Kotlin 内联类型泛型投影错误)