Commit b92956f1 authored by ryoii's avatar ryoii

Http api calculate messageId with uid and seq

parent 43e0c3b4
......@@ -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)
......
......@@ -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())
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment