mirai/CHANGELOG.md

410 lines
14 KiB
Markdown
Raw Normal View History

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