diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.ReqPush.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.ReqPush.kt index 26db88d6a..10ce1d3de 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.ReqPush.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.ReqPush.kt @@ -493,8 +493,13 @@ private object Transformers528 : Map Sequen } ?: emptySequence() } - fun ModCustomFace.transform(): Sequence = - sequenceOf(BotFaceChangedEvent(Bot.getInstance(uin))) + fun ModCustomFace.transform(bot: QQAndroidBot): Sequence { + if (uin == bot.id) { + return sequenceOf(BotFaceChangedEvent(bot)) + } + val friend = bot.getFriendOrNull(uin) ?: return emptySequence() + return sequenceOf(FriendFaceChangedEvent(friend)) + } return@lambda528 vProtobuf.loadAs(SubMsgType0x27MsgBody.serializer()).msgModInfos.asSequence() @@ -504,7 +509,7 @@ private object Transformers528 : Map Sequen it.msgDelFriend != null -> it.msgDelFriend.transform(bot) it.msgModGroupProfile != null -> it.msgModGroupProfile.transform(bot) it.msgModGroupMemberProfile != null -> it.msgModGroupMemberProfile.transform(bot) - it.msgModCustomFace != null -> it.msgModCustomFace.transform() + it.msgModCustomFace != null -> it.msgModCustomFace.transform(bot) else -> { bot.network.logger.debug { "Transformers528 0x27L: new data: ${it._miraiContentToString()}" diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt index cbac2aa5b..1b5b53fcd 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/BotEvents.kt @@ -95,6 +95,13 @@ data class BotFaceChangedEvent( override val bot: Bot ) : BotEvent, Packet, AbstractEvent() +/** + * [Friend] 头像被修改 + */ +data class FriendFaceChangedEvent( + override val friend: Friend +) : FriendEvent, Packet, AbstractEvent() + // endregion // region 消息