Skip to content

Commit 7661553

Browse files
authored
Merge pull request #15 from simple-robot/dev/fix-14
修复 TelegramMessageEntity$Simple 的多态序列化注册错误
2 parents ceabed8 + f25fc9e commit 7661553

File tree

4 files changed

+11
-5
lines changed

4 files changed

+11
-5
lines changed

buildSrc/src/main/kotlin/P.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ object P {
4040
override val description: String get() = DESCRIPTION
4141
override val homepage: String get() = HOMEPAGE
4242

43-
const val VERSION = "0.0.5"
44-
const val NEXT_VERSION = "0.0.6"
43+
const val VERSION = "0.0.6"
44+
const val NEXT_VERSION = "0.0.7"
4545

4646
override val snapshotVersion = "$NEXT_VERSION-SNAPSHOT"
4747
override val version = if (isSnapshot()) snapshotVersion else VERSION

internal-processors/include-component-message-elements-processor/src/main/kotlin/telegram/internal/processors/includemessageelements/IncludeMessageElementsProcessor.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import com.google.devtools.ksp.processing.SymbolProcessorEnvironment
2525
import com.google.devtools.ksp.processing.SymbolProcessorProvider
2626
import com.google.devtools.ksp.symbol.KSAnnotated
2727
import com.google.devtools.ksp.symbol.KSClassDeclaration
28+
import com.google.devtools.ksp.symbol.Modifier
2829
import com.squareup.kotlinpoet.*
2930
import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
3031
import com.squareup.kotlinpoet.ksp.toClassName
@@ -81,6 +82,8 @@ private class IncludeMessageElementsProcessor(val environment: SymbolProcessorEn
8182
.filterIsInstance<KSClassDeclaration>()
8283
// 是一个可序列化的具体的类
8384
.filter { !it.isAbstract() }
85+
// isAbstract 无法判断 sealed
86+
.filter { Modifier.SEALED !in it.modifiers }
8487
// 是 BaseMessageElement 的子类
8588
.filter { baseDeclarationType.isAssignableFrom(it.asStarProjectedType()) }
8689
.onEach {

simbot-component-telegram-core/src/commonMain/kotlin/love/forte/simbot/component/telegram/core/message/TelegramMessageEntity.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,9 +158,12 @@ public sealed class TelegramMessageEntity : TelegramMessageElement, PlainText {
158158
@SerialName("telegram.m.message_entity.simple")
159159
public class Simple internal constructor(
160160
override val text: String,
161-
override val type: String,
161+
private val typeValue: String,
162162
override val sourceEntity: MessageEntity?
163-
) : TelegramMessageEntity()
163+
) : TelegramMessageEntity() {
164+
override val type: String
165+
get() = typeValue
166+
}
164167

165168
/**
166169
* An implementation with type [MessageEntityType.TEXT_LINK]

simbot-component-telegram-core/src/commonMain/kotlin/love/forte/simbot/component/telegram/core/message/internal/ReceivingMessageResolvers.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ internal fun StdlibMessage.toMessages(): Messages {
9393
else -> {
9494
TelegramMessageEntity.Simple(
9595
text = text.substring(entity),
96-
type = entity.type,
96+
typeValue = entity.type,
9797
entity
9898
)
9999
}

0 commit comments

Comments
 (0)