From d43cfd1e08e3d2cea441824318478344dbfec858 Mon Sep 17 00:00:00 2001 From: Karlatemp Date: Sun, 13 Dec 2020 12:10:53 +0800 Subject: [PATCH] Improve messages logging --- .../kotlin/message/data/MessageSource.kt | 2 +- .../src/commonMain/kotlin/contact/util.kt | 28 +++++++++++++------ .../network/QQAndroidBotNetworkHandler.kt | 4 +-- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/mirai-core-api/src/commonMain/kotlin/message/data/MessageSource.kt b/mirai-core-api/src/commonMain/kotlin/message/data/MessageSource.kt index b09e0bcc8..a95167e61 100644 --- a/mirai-core-api/src/commonMain/kotlin/message/data/MessageSource.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/data/MessageSource.kt @@ -145,7 +145,7 @@ public sealed class MessageSource : Message, MessageMetadata, ConstrainSingle { /** * 返回 `"[mirai:source:$ids,$internalIds]"` */ - public final override fun toString(): String = "[mirai:source:$ids,$internalIds]" + public final override fun toString(): String = "[mirai:source:${ids.contentToString()},${internalIds.contentToString()}]" public companion object Key : AbstractMessageKey({ it.safeCast() }) { /** diff --git a/mirai-core/src/commonMain/kotlin/contact/util.kt b/mirai-core/src/commonMain/kotlin/contact/util.kt index bd0a724e7..fbddedc4c 100644 --- a/mirai-core/src/commonMain/kotlin/contact/util.kt +++ b/mirai-core/src/commonMain/kotlin/contact/util.kt @@ -82,26 +82,36 @@ internal suspend fun Friend.sendMessageImpl( internal fun Contact.logMessageSent(message: Message) { @Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") if (message !is net.mamoe.mirai.message.data.LongMessage) { - bot.logger.verbose("$this <- ${message.toString().singleLine()}") + bot.logger.verbose("$this <- $message".replaceMagicCodes()) } } internal fun MessageEvent.logMessageReceived() { when (this) { is GroupMessageEvent -> bot.logger.verbose { - "[${group.name.singleLine()}(${group.id})] ${senderName.singleLine()}(${sender.id}) -> ${message.toString() - .singleLine()}" + "[${group.name}(${group.id})] ${senderName}(${sender.id}) -> $message".replaceMagicCodes() } is TempMessageEvent -> bot.logger.verbose { - "[${group.name.singleLine()}(${group.id})] ${senderName.singleLine()}(Temp ${sender.id}) -> ${message.toString() - .singleLine()}" + "[${group.name}(${group.id})] $senderName(Temp ${sender.id}) -> $message".replaceMagicCodes() } is FriendMessageEvent -> bot.logger.verbose { - "${sender.nick.singleLine()}(${sender.id}) -> ${message.toString().singleLine()}" + "${sender.nick}(${sender.id}) -> $message".replaceMagicCodes() } } } -internal fun String.singleLine(): String { - return this.replace("\n", """\n""").replace("\r", "") -} \ No newline at end of file +internal val charMappings = mapOf( + '\n' to """\n""", + '\r' to "", + '\u202E' to "", + '\u202D' to "", +) + +internal fun String.applyCharMapping() = buildString(capacity = this.length) { + this@applyCharMapping.forEach { char -> + append(charMappings[char] ?: char) + } +} + +internal fun String.replaceMagicCodes(): String = this + .applyCharMapping() diff --git a/mirai-core/src/commonMain/kotlin/network/QQAndroidBotNetworkHandler.kt b/mirai-core/src/commonMain/kotlin/network/QQAndroidBotNetworkHandler.kt index 01138101b..e53221783 100644 --- a/mirai-core/src/commonMain/kotlin/network/QQAndroidBotNetworkHandler.kt +++ b/mirai-core/src/commonMain/kotlin/network/QQAndroidBotNetworkHandler.kt @@ -493,9 +493,9 @@ internal class QQAndroidBotNetworkHandler(coroutineContext: CoroutineContext, bo } packet is MessageEvent -> packet.logMessageReceived() packet is Event && packet !is Packet.NoEventLog -> bot.logger.verbose { - "Event: ${packet.toString().singleLine()}" + "Event: $packet".replaceMagicCodes() } - else -> logger.verbose { "Recv: ${packet.toString().singleLine()}" } + else -> logger.verbose { "Recv: $packet".replaceMagicCodes() } } }