Force message to be in single line

This commit is contained in:
Him188 2020-04-06 20:54:37 +08:00
parent f6cc90a893
commit 09dca31a6b
3 changed files with 26 additions and 6 deletions

View File

@ -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<reified M>``MessageChain.anyInInstance<reified M>` 以与标准库的 `Iterable.any` 区分
- 更名 `MessageChain.first<reified M>``MessageChain.firstIsInstance<reified M>` 以与标准库的 `Iterable.first` 区分
- 更名 `MessageChain.firstOrNull<reified M>``MessageChain.firstIsInstanceOrNull<reified M>` 以与标准库的 `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` 参数)

View File

@ -52,6 +52,11 @@ internal suspend fun QQ.sendMessageImpl(message: Message): MessageReceipt<QQ> {
@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()}")
}
}
}
internal fun String.singleLine(): String {
return this.replace("\n", """\n""").replace("\r", "")
}

View File

@ -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()