diff --git a/mirai-core/src/commonMain/kotlin/MiraiImpl.kt b/mirai-core/src/commonMain/kotlin/MiraiImpl.kt index ddac6c530..6bec0d825 100644 --- a/mirai-core/src/commonMain/kotlin/MiraiImpl.kt +++ b/mirai-core/src/commonMain/kotlin/MiraiImpl.kt @@ -39,6 +39,7 @@ import net.mamoe.mirai.internal.network.protocol.packet.list.FriendList import net.mamoe.mirai.internal.network.protocol.packet.login.StatSvc import net.mamoe.mirai.internal.network.protocol.packet.sendAndExpect import net.mamoe.mirai.internal.network.protocol.packet.summarycard.SummaryCard +import net.mamoe.mirai.internal.utils.broadcastWithBot import net.mamoe.mirai.internal.utils.crypto.TEA import net.mamoe.mirai.internal.utils.io.serialization.loadAs import net.mamoe.mirai.internal.utils.io.serialization.toByteArray @@ -147,7 +148,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor { ) event.bot.getFriend(event.fromId)?.let { friend -> - FriendAddEvent(friend).broadcast() + FriendAddEvent(friend).broadcastWithBot(event.bot) } } @@ -197,10 +198,10 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor { event.group?.getMember(event.fromId)?.let { member -> if (event.invitor != null) { - MemberJoinEvent.Invite(member, event.invitor!!).broadcast() + MemberJoinEvent.Invite(member, event.invitor!!) } else { - MemberJoinEvent.Active(member).broadcast() - } + MemberJoinEvent.Active(member) + }.broadcastWithBot(event.bot) } } diff --git a/mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt b/mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt index 0d70412d5..2a897f2e7 100644 --- a/mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt +++ b/mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt @@ -36,6 +36,7 @@ import net.mamoe.mirai.internal.network.protocol.packet.chat.voice.voiceCodec import net.mamoe.mirai.internal.network.protocol.packet.list.ProfileService import net.mamoe.mirai.internal.utils.GroupPkgMsgParsingCache import net.mamoe.mirai.internal.utils.RemoteFileImpl +import net.mamoe.mirai.internal.utils.broadcastWithBot import net.mamoe.mirai.internal.utils.io.serialization.toByteArray import net.mamoe.mirai.message.MessageReceipt import net.mamoe.mirai.message.data.* @@ -108,7 +109,7 @@ internal class GroupImpl( } } } - BotLeaveEvent.Active(this).broadcast() + BotLeaveEvent.Active(this).broadcastWithBot(bot) return true } diff --git a/mirai-core/src/commonMain/kotlin/contact/NormalMemberImpl.kt b/mirai-core/src/commonMain/kotlin/contact/NormalMemberImpl.kt index b297e9847..6c20d8073 100644 --- a/mirai-core/src/commonMain/kotlin/contact/NormalMemberImpl.kt +++ b/mirai-core/src/commonMain/kotlin/contact/NormalMemberImpl.kt @@ -21,6 +21,7 @@ import net.mamoe.mirai.event.broadcast import net.mamoe.mirai.event.events.* import net.mamoe.mirai.internal.message.OnlineMessageSourceToTempImpl import net.mamoe.mirai.internal.network.protocol.packet.chat.TroopManagement +import net.mamoe.mirai.internal.utils.broadcastWithBot import net.mamoe.mirai.message.MessageReceipt import net.mamoe.mirai.message.data.* import net.mamoe.mirai.utils.cast @@ -99,7 +100,7 @@ internal class NormalMemberImpl constructor( newValue ).sendWithoutExpect() } - MemberCardChangeEvent(oldValue, newValue, this@NormalMemberImpl).broadcast() + MemberCardChangeEvent(oldValue, newValue, this@NormalMemberImpl).broadcastWithBot(bot) } } } @@ -119,7 +120,7 @@ internal class NormalMemberImpl constructor( newValue ).sendWithoutExpect() } - MemberSpecialTitleChangeEvent(oldValue, newValue, this@NormalMemberImpl, null).broadcast() + MemberSpecialTitleChangeEvent(oldValue, newValue, this@NormalMemberImpl, null).broadcastWithBot(bot) } } } @@ -139,7 +140,7 @@ internal class NormalMemberImpl constructor( } @Suppress("RemoveRedundantQualifierName") // or unresolved reference - net.mamoe.mirai.event.events.MemberMuteEvent(this@NormalMemberImpl, durationSeconds, null).broadcast() + net.mamoe.mirai.event.events.MemberMuteEvent(this@NormalMemberImpl, durationSeconds, null).broadcastWithBot(bot) } override suspend fun unmute() { @@ -154,7 +155,7 @@ internal class NormalMemberImpl constructor( } @Suppress("RemoveRedundantQualifierName") // or unresolved reference - net.mamoe.mirai.event.events.MemberUnmuteEvent(this@NormalMemberImpl, null).broadcast() + net.mamoe.mirai.event.events.MemberUnmuteEvent(this@NormalMemberImpl, null).broadcastWithBot(bot) } override suspend fun kick(message: String) { @@ -174,7 +175,7 @@ internal class NormalMemberImpl constructor( @Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") group.members.delegate.removeIf { it.id == this@NormalMemberImpl.id } this@NormalMemberImpl.cancel(CancellationException("Kicked by bot")) - MemberLeaveEvent.Kick(this@NormalMemberImpl, null).broadcast() + MemberLeaveEvent.Kick(this@NormalMemberImpl, null).broadcastWithBot(bot) } } } diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt index 19e85038c..8d9ea37cb 100644 --- a/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt @@ -572,7 +572,7 @@ internal suspend fun MsgComm.Msg.transform(bot: QQAndroidBot, fromSync: Boolean Mirai.newStranger(bot, StrangerInfoImpl(id, nick, fromGroup)).let { bot.getStranger(id)?.let { previous -> bot.strangers.remove(id) - StrangerRelationChangeEvent.Deleted(previous).broadcast() + StrangerRelationChangeEvent.Deleted(previous).broadcastWithBot(bot) } bot.strangers.delegate.add(it) diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.PbPushGroupMsg.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.PbPushGroupMsg.kt index 9e6e2c0c4..578a026c4 100644 --- a/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.PbPushGroupMsg.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.PbPushGroupMsg.kt @@ -31,6 +31,7 @@ import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm import net.mamoe.mirai.internal.network.protocol.data.proto.MsgOnlinePush import net.mamoe.mirai.internal.network.protocol.data.proto.Oidb0x8fc import net.mamoe.mirai.internal.network.protocol.packet.IncomingPacketFactory +import net.mamoe.mirai.internal.utils.broadcastWithBot import net.mamoe.mirai.internal.utils.io.serialization.loadAs import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf import net.mamoe.mirai.message.data.MessageSourceKind.GROUP @@ -145,7 +146,7 @@ internal object OnlinePushPbPushGroupMsg : IncomingPacketFactory("Onlin val currentNameCard = sender.nameCard if (sender is NormalMemberImpl && name != currentNameCard) { sender._nameCard = name - MemberCardChangeEvent(currentNameCard, name, sender).broadcast() + MemberCardChangeEvent(currentNameCard, name, sender).broadcastWithBot(sender.bot) } } diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/packet/list/StrangerList.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/list/StrangerList.kt index 44af3e529..3cf48bd1c 100644 --- a/mirai-core/src/commonMain/kotlin/network/protocol/packet/list/StrangerList.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/list/StrangerList.kt @@ -22,6 +22,7 @@ import net.mamoe.mirai.internal.network.protocol.data.proto.OidbSso import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket +import net.mamoe.mirai.internal.utils.broadcastWithBot import net.mamoe.mirai.internal.utils.io.serialization.loadAs import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf import net.mamoe.mirai.internal.utils.io.serialization.toByteArray @@ -101,7 +102,7 @@ internal class StrangerList { pkg.bodybuffer.loadAs(Oidb0x5d4.RspBody.serializer()).result.forEach { delResult -> bot.getStranger(delResult.uin)?.let { bot.strangers.remove(delResult.uin) - StrangerRelationChangeEvent.Deleted(it).broadcast() + StrangerRelationChangeEvent.Deleted(it).broadcastWithBot(bot) } } } diff --git a/mirai-core/src/commonMain/kotlin/utils/events.kt b/mirai-core/src/commonMain/kotlin/utils/events.kt new file mode 100644 index 000000000..36bee4b8b --- /dev/null +++ b/mirai-core/src/commonMain/kotlin/utils/events.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2019-2021 Mamoe Technologies and contributors. + * + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * + * https://github.com/mamoe/mirai/blob/master/LICENSE + */ + +package net.mamoe.mirai.internal.utils + +import net.mamoe.mirai.Bot +import net.mamoe.mirai.event.Event +import net.mamoe.mirai.event.broadcast +import net.mamoe.mirai.internal.contact.replaceMagicCodes +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.utils.verbose + +internal suspend fun T.broadcastWithBot(bot: Bot): T { + this.let log@{ event -> + val logger = bot.logger + if (event is Packet.NoLog) return@log + if (event is Packet.NoEventLog) { + logger.verbose { "Recv: $event".replaceMagicCodes() } + } else { + logger.verbose { "Event: $event".replaceMagicCodes() } + } + } + return broadcast() +}