diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/msgType0x210.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/msgType0x210.kt index 60f09b23c..a96ed5b48 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/msgType0x210.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/msgType0x210.kt @@ -182,7 +182,7 @@ internal class Submsgtype0x115 { @Serializable internal class NotifyItem( @ProtoNumber(1) @JvmField val ime: Int = 0, - @ProtoNumber(2) @JvmField val timeoutS: Int = 0, + @ProtoNumber(2) @JvmField val timeout: Int = 0, @ProtoNumber(3) @JvmField val timestamp: Long = 0L, @ProtoNumber(4) @JvmField val eventType: Int = 0, @ProtoNumber(5) @JvmField val interval: Int = 0, @@ -611,7 +611,6 @@ internal class Submsgtype0x26 { } } - internal class Submsgtype0x27 { internal class SubMsgType0x27 : ProtoBuf { @Serializable 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 10b761e8e..bed662bed 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 @@ -39,6 +39,7 @@ import net.mamoe.mirai.qqandroid.network.protocol.data.jce.MsgInfo import net.mamoe.mirai.qqandroid.network.protocol.data.jce.MsgType0x210 import net.mamoe.mirai.qqandroid.network.protocol.data.jce.OnlinePushPack import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPacket +import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Submsgtype0x115 import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Submsgtype0x27.SubMsgType0x27.* import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Submsgtype0x44 import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Submsgtype0xb3 @@ -448,6 +449,17 @@ internal object Transformers528 : Map by mapOf( sequenceOf(BotLeaveEvent.Active(group)) } else emptySequence() }, + //好友输入状态 + 0x115L to lambda528 { bot -> + val body = vProtobuf.loadAs(Submsgtype0x115.SubMsgType0x115.MsgBody.serializer()) + val friend = bot.getFriendOrNull(body.fromUin) + val item = body.msgNotifyItem + return@lambda528 if (friend != null && item != null) { + sequenceOf(FriendInputStatusChangedEvent(friend, item.eventType == 1)) + } else { + emptySequence() + } + }, // 群相关, ModFriendRemark, DelFriend, ModGroupProfile 0x27L to lambda528 { bot -> fun ModFriendRemark.transform(bot: QQAndroidBot): Sequence { diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/friend.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/friend.kt index 887189b59..4e7cf3d11 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/friend.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/friend.kt @@ -21,6 +21,7 @@ import net.mamoe.mirai.contact.User import net.mamoe.mirai.event.AbstractEvent import net.mamoe.mirai.event.internal.MiraiAtomicBoolean import net.mamoe.mirai.qqandroid.network.Packet +import net.mamoe.mirai.utils.SinceMirai import net.mamoe.mirai.utils.internal.runBlocking import kotlin.jvm.* @@ -111,3 +112,12 @@ public data class FriendAvatarChangedEvent internal constructor( public override val friend: Friend ) : FriendEvent, Packet, AbstractEvent() +/** + * 好友输入状态改变的事件,当开始输入文字、退出聊天窗口或清空输入框时会触发此事件 + */ +@SinceMirai("1.2.0") +public data class FriendInputStatusChangedEvent internal constructor( + public override val friend: Friend, + public val inputting: Boolean + +) : FriendEvent, Packet, AbstractEvent()