Add MessageProtocolStrategy.sendPacket

This commit is contained in:
Him188 2022-05-23 13:27:36 +01:00
parent c510a49adc
commit d5ef2aae64
2 changed files with 10 additions and 3 deletions

View File

@ -17,6 +17,7 @@ import net.mamoe.mirai.internal.message.protocol.MessageProtocol
import net.mamoe.mirai.internal.message.protocol.ProcessorCollector
import net.mamoe.mirai.internal.message.protocol.outgoing.OutgoingMessagePipelineContext
import net.mamoe.mirai.internal.message.protocol.outgoing.OutgoingMessagePipelineContext.Companion.CONTACT
import net.mamoe.mirai.internal.message.protocol.outgoing.OutgoingMessagePipelineContext.Companion.ORIGINAL_MESSAGE
import net.mamoe.mirai.internal.message.protocol.outgoing.OutgoingMessagePipelineContext.Companion.PROTOCOL_STRATEGY
import net.mamoe.mirai.internal.message.protocol.outgoing.OutgoingMessagePipelineContext.Companion.STEP
import net.mamoe.mirai.internal.message.protocol.outgoing.OutgoingMessageSender
@ -68,10 +69,11 @@ internal class GeneralMessageSenderProtocol : MessageProtocol(PRIORITY_GENERAL_S
contact: Contact,
packets: List<OutgoingPacket>
) = packets.forEach { packet ->
val originalMessage = attributes[OutgoingMessagePipelineContext.ORIGINAL_MESSAGE]
val originalMessage = attributes[ORIGINAL_MESSAGE]
val protocolStrategy = attributes[PROTOCOL_STRATEGY]
val finalMessage = currentMessageChain
val resp = bot.network.sendAndExpect(packet) as MessageSvcPbSendMsg.Response
val resp = protocolStrategy.sendPacket(bot, packet) as MessageSvcPbSendMsg.Response
if (resp is MessageSvcPbSendMsg.Response.MessageTooLarge) {
val next = step.nextStepOrNull()
?: throw MessageTooLargeException(

View File

@ -14,9 +14,11 @@ import kotlinx.coroutines.withTimeoutOrNull
import net.mamoe.mirai.event.EventPriority
import net.mamoe.mirai.event.GlobalEventChannel
import net.mamoe.mirai.event.nextEvent
import net.mamoe.mirai.internal.AbstractBot
import net.mamoe.mirai.internal.contact.*
import net.mamoe.mirai.internal.message.source.OnlineMessageSourceToFriendImpl
import net.mamoe.mirai.internal.message.source.OnlineMessageSourceToGroupImpl
import net.mamoe.mirai.internal.network.Packet
import net.mamoe.mirai.internal.network.QQAndroidClient
import net.mamoe.mirai.internal.network.component.ComponentKey
import net.mamoe.mirai.internal.network.components.ClockHolder.Companion.clock
@ -27,7 +29,10 @@ import net.mamoe.mirai.internal.network.protocol.packet.chat.receive.*
import net.mamoe.mirai.message.data.MessageChain
import net.mamoe.mirai.message.data.OnlineMessageSource
internal sealed interface MessageProtocolStrategy<in C : AbstractContact> {
internal interface MessageProtocolStrategy<in C : AbstractContact> {
suspend fun sendPacket(bot: AbstractBot, packet: OutgoingPacket): Packet? {
return bot.network.sendAndExpect(packet)
}
suspend fun createPacketsForGeneralMessage(
client: QQAndroidClient,