From 09dca31a6b063a239f64245662fa6f32148f4446 Mon Sep 17 00:00:00 2001 From: Him188 Date: Mon, 6 Apr 2020 20:54:37 +0800 Subject: [PATCH] Force message to be in single line --- CHANGELOG.md | 18 ++++++++++++++++++ .../net/mamoe/mirai/qqandroid/contact/util.kt | 9 +++++++-- .../network/QQAndroidBotNetworkHandler.kt | 5 +---- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7dee4bcf8..73942fda0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,24 @@ 开发版本. 频繁更新, 不保证高稳定性 +## `0.34.0` 2020/4/6 + +- 修复长消息判定. +- 为 `selectMessages`, `selectMessagesUnit` 添加可选筛选 context 的参数: `filterContext: Boolean` +- 统一消息日志 + +`Message` 改动 (二进制兼容): + +- 添加 `Message.contentToString` 以转换为最接近官方消息的字符串 +- 添加 `ConstrainSingle` 的 `Message` 类型以保证一个消息链中只存在一个 `QuoteReply` 和一个 `MessageSource` +- `CombinedMessage` 现在实现接口 `MessageChian` 并变为 `internal` 以降低复杂度 (使用 `MessageChain` 替换 `CombinedMessage` 的引用). +- `Message.plus` 现在返回 `MessageChain` 而不是 `CombinedMessage` +- 弃用 `NullMessageChain` (使用 `null` 替代) +- `Message` 中 `eq`, `contains` 等函数移动至 `SingleMessage` 以避免歧义. +- 更名 `MessageChain.any` 到 `MessageChain.anyInInstance` 以与标准库的 `Iterable.any` 区分 +- 更名 `MessageChain.first` 到 `MessageChain.firstIsInstance` 以与标准库的 `Iterable.first` 区分 +- 更名 `MessageChain.firstOrNull` 到 `MessageChain.firstIsInstanceOrNull` 以与标准库的 `Iterable.firstOrNull` 区分 + ## `0.33.0` 2020/4/4 - 重构 [`MessageSource`](https://github.com/mamoe/mirai/blob/master/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageSource.kt), 支持直接获取相关对象, 支持所有类型的引用. - 简化引用回复, 现在只需要 `source.quote()` 即可创建引用 (而不需要 `sender` 参数) diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/util.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/util.kt index b25ed094e..7b5683240 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/util.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/util.kt @@ -52,6 +52,11 @@ internal suspend fun QQ.sendMessageImpl(message: Message): MessageReceipt { @OptIn(MiraiInternalAPI::class, MiraiExperimentalAPI::class) internal fun Contact.logMessageSent(message: Message) { if (message !is LongMessage) { - bot.logger.verbose("$this <- $message") + bot.logger.verbose("$this <- ${message.toString().singleLine()}") } -} \ No newline at end of file +} + + +internal fun String.singleLine(): String { + return this.replace("\n", """\n""").replace("\r", "") +} diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt index eca9b4121..5169dd0dd 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt @@ -29,6 +29,7 @@ import net.mamoe.mirai.qqandroid.QQAndroidBot import net.mamoe.mirai.qqandroid.contact.FriendInfoImpl import net.mamoe.mirai.qqandroid.contact.GroupImpl import net.mamoe.mirai.qqandroid.contact.QQImpl +import net.mamoe.mirai.qqandroid.contact.singleLine import net.mamoe.mirai.qqandroid.event.PacketReceivedEvent import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc import net.mamoe.mirai.qqandroid.network.protocol.packet.* @@ -447,10 +448,6 @@ internal class QQAndroidBotNetworkHandler(bot: QQAndroidBot) : BotNetworkHandler ) { // highest priority: pass to listeners (attached by sendAndExpect). if (packet != null && (bot.logger.isEnabled || logger.isEnabled)) { - fun String.singleLine(): String { - return this.replace("\n", """\n""").replace("\r", "") - } - when (packet) { is GroupMessage -> bot.logger.verbose( "[${packet.group.name}(${packet.group.id})] ${packet.senderName}(${packet.sender.id}) -> ${packet.message.toString()