mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-10 02:20:14 +08:00
Improve delete notify
This commit is contained in:
parent
bb3944d5ae
commit
a03848da30
@ -206,13 +206,9 @@ internal class MessageSvc {
|
|||||||
val messages = resp.uinPairMsgs.asFlow()
|
val messages = resp.uinPairMsgs.asFlow()
|
||||||
.filterNot { it.msg == null }
|
.filterNot { it.msg == null }
|
||||||
.flatMapConcat { it.msg!!.asFlow() }
|
.flatMapConcat { it.msg!!.asFlow() }
|
||||||
|
.also { Del.delete(bot, it) } // 删除消息
|
||||||
.mapNotNull<MsgComm.Msg, Packet> { msg ->
|
.mapNotNull<MsgComm.Msg, Packet> { msg ->
|
||||||
|
|
||||||
// 删除消息
|
|
||||||
bot.network.run {
|
|
||||||
Del(bot.client, msg.msgHead).sendWithoutExpect()
|
|
||||||
}
|
|
||||||
|
|
||||||
when (msg.msgHead.msgType) {
|
when (msg.msgHead.msgType) {
|
||||||
33 -> { // 邀请入群
|
33 -> { // 邀请入群
|
||||||
|
|
||||||
@ -297,10 +293,12 @@ internal class MessageSvc {
|
|||||||
if (member.lastMessageSequence.compareAndSet(instant, msg.msgHead.msgSeq)) {
|
if (member.lastMessageSequence.compareAndSet(instant, msg.msgHead.msgSeq)) {
|
||||||
return@mapNotNull TempMessage(
|
return@mapNotNull TempMessage(
|
||||||
member,
|
member,
|
||||||
msg.toMessageChain(bot,
|
msg.toMessageChain(
|
||||||
|
bot,
|
||||||
groupIdOrZero = 0,
|
groupIdOrZero = 0,
|
||||||
onlineSource = true,
|
onlineSource = true,
|
||||||
isTemp = true),
|
isTemp = true
|
||||||
|
),
|
||||||
msg.msgHead.msgTime
|
msg.msgHead.msgTime
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -546,23 +544,32 @@ internal class MessageSvc {
|
|||||||
|
|
||||||
internal object Del : OutgoingPacketFactory<Nothing?>("MessageSvc.PbDeleteMsg") {
|
internal object Del : OutgoingPacketFactory<Nothing?>("MessageSvc.PbDeleteMsg") {
|
||||||
|
|
||||||
internal operator fun invoke(client: QQAndroidClient, header: MsgComm.MsgHead) = buildOutgoingUniPacket(client) {
|
internal operator fun invoke(client: QQAndroidClient, items: List<MsgSvc.PbDeleteMsgReq.MsgItem>) =
|
||||||
|
buildOutgoingUniPacket(client) {
|
||||||
|
|
||||||
writeProtoBuf(
|
writeProtoBuf(
|
||||||
MsgSvc.PbDeleteMsgReq.serializer(),
|
MsgSvc.PbDeleteMsgReq.serializer(),
|
||||||
MsgSvc.PbDeleteMsgReq(
|
MsgSvc.PbDeleteMsgReq(
|
||||||
msgItems = listOf(
|
msgItems = items
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal suspend fun delete(bot: QQAndroidBot, messages: Flow<MsgComm.Msg>) =
|
||||||
|
bot.network.run {
|
||||||
|
|
||||||
|
val map = messages.map {
|
||||||
MsgSvc.PbDeleteMsgReq.MsgItem(
|
MsgSvc.PbDeleteMsgReq.MsgItem(
|
||||||
fromUin = header.fromUin,
|
fromUin = it.msgHead.fromUin,
|
||||||
toUin = header.toUin,
|
toUin = it.msgHead.toUin,
|
||||||
// 群为84、好友为187。但是群通过其他方法删除,测试通过187也能删除群消息。
|
// 群为84、好友为187。但是群通过其他方法删除,测试通过187也能删除群消息。
|
||||||
msgType = 187,
|
msgType = 187,
|
||||||
msgSeq = header.msgSeq,
|
msgSeq = it.msgHead.msgSeq,
|
||||||
msgUid = header.msgUid
|
msgUid = it.msgHead.msgUid
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
}.toList()
|
||||||
|
|
||||||
|
Del(bot.client, map).sendWithoutExpect()
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot) = null
|
override suspend fun ByteReadPacket.decode(bot: QQAndroidBot) = null
|
||||||
|
Loading…
Reference in New Issue
Block a user