mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-30 18:50:10 +08:00
Fix forward and long detect
This commit is contained in:
parent
82b355a6c6
commit
cd146e5976
@ -966,7 +966,7 @@ internal open class MiraiImpl : IMirai, LowLevelApiAccessor {
|
|||||||
|
|
||||||
override suspend fun downloadLongMessage(bot: Bot, resourceId: String): MessageChain {
|
override suspend fun downloadLongMessage(bot: Bot, resourceId: String): MessageChain {
|
||||||
bot.asQQAndroidBot()
|
bot.asQQAndroidBot()
|
||||||
when (val resp = MultiMsg.ApplyDown(bot.client, 1, resourceId, 1).sendAndExpect(bot)) {
|
when (val resp = MultiMsg.ApplyDown(bot.client, 2, resourceId, 1).sendAndExpect(bot)) {
|
||||||
is MultiMsg.ApplyDown.Response.RequireDownload -> {
|
is MultiMsg.ApplyDown.Response.RequireDownload -> {
|
||||||
val http = Mirai.Http
|
val http = Mirai.Http
|
||||||
val origin = resp.origin
|
val origin = resp.origin
|
||||||
|
@ -202,5 +202,5 @@ internal fun RichMessage.Key.forwardMessage(
|
|||||||
<source name="${source.take(50)}" icon="" action="" appid="-1"/>
|
<source name="${source.take(50)}" icon="" action="" appid="-1"/>
|
||||||
</msg>
|
</msg>
|
||||||
""".trimIndent().replace("\n", " ")
|
""".trimIndent().replace("\n", " ")
|
||||||
return ForwardMessageInternal(template)
|
return ForwardMessageInternal(template, resId)
|
||||||
}
|
}
|
@ -32,7 +32,7 @@ internal data class LongMessageInternal internal constructor(override val conten
|
|||||||
}
|
}
|
||||||
|
|
||||||
// internal runtime value, not serializable
|
// internal runtime value, not serializable
|
||||||
internal data class ForwardMessageInternal(override val content: String) : AbstractServiceMessage(), RefinableMessage {
|
internal data class ForwardMessageInternal(override val content: String, val resId: String) : AbstractServiceMessage(), RefinableMessage {
|
||||||
override val serviceId: Int get() = 35
|
override val serviceId: Int get() = 35
|
||||||
|
|
||||||
override suspend fun refine(contact: Contact, context: MessageChain): Message {
|
override suspend fun refine(contact: Contact, context: MessageChain): Message {
|
||||||
|
@ -118,12 +118,10 @@ private object ReceiveMessageTransformer {
|
|||||||
builder: MessageChainBuilder
|
builder: MessageChainBuilder
|
||||||
) {
|
) {
|
||||||
// (this._miraiContentToString().soutv())
|
// (this._miraiContentToString().soutv())
|
||||||
val generalFlags = elements.find { it.generalFlags != null }?.generalFlags
|
|
||||||
|
|
||||||
for (element in elements) {
|
for (element in elements) {
|
||||||
transformElement(element, groupIdOrZero, messageSourceKind, botId, builder)
|
transformElement(element, groupIdOrZero, messageSourceKind, botId, builder)
|
||||||
when {
|
when {
|
||||||
element.richMsg != null -> decodeRichMessage(generalFlags, element.richMsg, builder)
|
element.richMsg != null -> decodeRichMessage(element.richMsg, builder)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -359,7 +357,6 @@ private object ReceiveMessageTransformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun decodeRichMessage(
|
private fun decodeRichMessage(
|
||||||
generalFlags: ImMsgBody.GeneralFlags?,
|
|
||||||
richMsg: ImMsgBody.RichMsg,
|
richMsg: ImMsgBody.RichMsg,
|
||||||
builder: MessageChainBuilder
|
builder: MessageChainBuilder
|
||||||
) {
|
) {
|
||||||
@ -388,13 +385,21 @@ private object ReceiveMessageTransformer {
|
|||||||
* [LongMessageInternal], [ForwardMessage]
|
* [LongMessageInternal], [ForwardMessage]
|
||||||
*/
|
*/
|
||||||
35 -> {
|
35 -> {
|
||||||
val resId = generalFlags?.longTextResid
|
fun findStringProperty(name: String): String {
|
||||||
|
return content.substringAfter("$name=\"", "").substringBefore("\"", "")
|
||||||
if (resId != null) {
|
|
||||||
builder.add(LongMessageInternal(content, resId))
|
|
||||||
} else {
|
|
||||||
builder.add(ForwardMessageInternal(content))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val resId = findStringProperty("m_resid")
|
||||||
|
|
||||||
|
val msg = when(findStringProperty("multiMsgFlag").toIntOrNull()) {
|
||||||
|
1 -> LongMessageInternal(content, resId)
|
||||||
|
0 -> ForwardMessageInternal(content, resId)
|
||||||
|
else -> {
|
||||||
|
SimpleServiceMessage(35, content)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.add(msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 104 新群员入群的消息
|
// 104 新群员入群的消息
|
||||||
|
Loading…
Reference in New Issue
Block a user