diff --git a/mirai-core/src/commonMain/kotlin/message/messageToElems.kt b/mirai-core/src/commonMain/kotlin/message/messageToElems.kt
index 3f186a185..b46cdfd46 100644
--- a/mirai-core/src/commonMain/kotlin/message/messageToElems.kt
+++ b/mirai-core/src/commonMain/kotlin/message/messageToElems.kt
@@ -40,13 +40,6 @@ internal fun MessageChain.toRichTextElems(
     val forGroup = messageTarget is Group
     val elements = ArrayList<ImMsgBody.Elem>(this.size)
 
-    if (this.anyIsInstance<QuoteReply>()) {
-        when (val source = this[QuoteReply]!!.source) {
-            is MessageSourceInternal -> elements.add(ImMsgBody.Elem(srcMsg = source.toJceData()))
-            else -> error("unsupported MessageSource implementation: ${source::class.simpleName}. Don't implement your own MessageSource.")
-        }
-    }
-
     var longTextResId: String? = null
 
     fun transformOneMessage(currentMessage: Message) {
@@ -189,19 +182,7 @@ internal fun MessageChain.toRichTextElems(
                     ImMsgBody.Elem(face = currentMessage.toJceData())
                 }
             )
-            is QuoteReply -> {
-                if (forGroup) {
-                    when (val source = currentMessage.source) {
-                        is OnlineMessageSource.Incoming.FromGroup -> {
-                            val sender0 = source.sender
-                            if (sender0 !is AnonymousMember)
-                                transformOneMessage(At(sender0))
-                            // transformOneMessage(PlainText(" "))
-                            // removed by https://github.com/mamoe/mirai/issues/524
-                            // 发送 QuoteReply 消息时无可避免的产生多余空格 #524
-                        }
-                    }
-                }
+            is QuoteReply -> { // transformed
             }
             is Dice -> transformOneMessage(MarketFaceImpl(currentMessage.toJceStruct()))
             is MarketFace -> {
@@ -255,6 +236,26 @@ internal fun MessageChain.toRichTextElems(
             }
         }
     }
+
+    if (this.anyIsInstance<QuoteReply>()) {
+        when (val source = this[QuoteReply]!!.source) {
+            is MessageSourceInternal -> {
+                elements.add(ImMsgBody.Elem(srcMsg = source.toJceData()))
+                if (forGroup) {
+                    if (source is OnlineMessageSource.Incoming.FromGroup) {
+                        val sender0 = source.sender
+                        if (sender0 !is AnonymousMember)
+                            transformOneMessage(At(sender0))
+                        // transformOneMessage(PlainText(" "))
+                        // removed by https://github.com/mamoe/mirai/issues/524
+                        // 发送 QuoteReply 消息时无可避免的产生多余空格 #524
+                    }
+                }
+            }
+            else -> error("unsupported MessageSource implementation: ${source::class.simpleName}. Don't implement your own MessageSource.")
+        }
+    }
+
     this.forEach(::transformOneMessage)
 
     if (withGeneralFlags) {