Http api calculate messageId with uid and seq

This commit is contained in:
ryoii 2020-02-22 18:32:00 +08:00
parent 43e0c3b414
commit b92956f112
2 changed files with 5 additions and 2 deletions

View File

@ -99,9 +99,11 @@ fun MessageChain.toDTOChain() = mutableListOf(this[MessageSource].toDTO()).apply
fun MessageChainDTO.toMessageChain(contact: Contact) =
MessageChain().apply { this@toMessageChain.forEach { add(it.toMessage(contact)) } }
internal fun MessageSource.calMessageId() = (messageUid.toLong() shl 32) or (sequenceId.toLong() and 0xFFFFFFFF)
@UseExperimental(ExperimentalUnsignedTypes::class)
fun Message.toDTO() = when (this) {
is MessageSource -> MessageSourceDTO(messageUid.toLong() and 0xFFffFFff)
is MessageSource -> MessageSourceDTO(calMessageId())
is At -> AtDTO(target, display)
is AtAll -> AtAllDTO(0L)
is Face -> FaceDTO(id)

View File

@ -11,6 +11,7 @@ package net.mamoe.mirai.api.http.queue
import net.mamoe.mirai.api.http.data.common.EventDTO
import net.mamoe.mirai.api.http.data.common.IgnoreEventDTO
import net.mamoe.mirai.api.http.data.common.calMessageId
import net.mamoe.mirai.api.http.data.common.toDTO
import net.mamoe.mirai.event.events.BotEvent
import net.mamoe.mirai.message.GroupMessage
@ -46,7 +47,7 @@ class MessageQueue : ConcurrentLinkedDeque<BotEvent>() {
}
private fun addQuoteCache(msg: GroupMessage) {
quoteCache[msg.message[MessageSource].messageUid.toLong()] = msg
quoteCache[msg.message[MessageSource].calMessageId()] = msg
if (quoteCache.size > quoteCacheSize) {
quoteCache.remove(quoteCache.firstKey())
}