diff --git a/tgbotapi.core/api/tgbotapi.core.api b/tgbotapi.core/api/tgbotapi.core.api index cea48d1a2d..854c849218 100644 --- a/tgbotapi.core/api/tgbotapi.core.api +++ b/tgbotapi.core/api/tgbotapi.core.api @@ -35061,3 +35061,12 @@ public final class dev/inmo/tgbotapi/utils/serializers/UnitFromBooleanSerializer public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lkotlin/Unit;)V } +public final class dev/inmo/tgbotapi/utils/serializers/UsernameAtLessSerializer : kotlinx/serialization/KSerializer { + public static final field INSTANCE Ldev/inmo/tgbotapi/utils/serializers/UsernameAtLessSerializer; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun deserialize-BnpbnlE (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/String; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun serialize-eC7Nk8U (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/String;)V +} + diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/KeyboardButtonRequestManagedBot.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/KeyboardButtonRequestManagedBot.kt index 6a617c482f..0665d9be90 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/KeyboardButtonRequestManagedBot.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/buttons/KeyboardButtonRequestManagedBot.kt @@ -2,6 +2,7 @@ package dev.inmo.tgbotapi.types.buttons import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.request.RequestId +import dev.inmo.tgbotapi.utils.serializers.UsernameAtLessSerializer import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -17,6 +18,16 @@ data class KeyboardButtonRequestManagedBot( @SerialName(suggestedNameField) val suggestedName: String? = null, @SerialName(suggestedUsernameField) + @Serializable(UsernameAtLessSerializer::class) val suggestedUsername: Username? = null ) +/** + * A type alias for the `KeyboardButtonRequestManagedBot` class representing the parameters + * for managing a bot request in a keyboard button. + * + * This type encapsulates properties such as: + * - A unique request identifier (`requestId`). + * - Suggested name and username for the bot (`suggestedName` and `suggestedUsername`). + */ +typealias RequestManagedBotParameters = KeyboardButtonRequestManagedBot diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/serializers/UsernameAtLessSerializer.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/serializers/UsernameAtLessSerializer.kt new file mode 100644 index 0000000000..ef993f07a5 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/serializers/UsernameAtLessSerializer.kt @@ -0,0 +1,21 @@ +package dev.inmo.tgbotapi.utils.serializers + +import dev.inmo.tgbotapi.types.Username +import kotlinx.serialization.KSerializer +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder + +object UsernameAtLessSerializer : KSerializer { + override val descriptor: SerialDescriptor + get() = String.serializer().descriptor + + override fun serialize(encoder: Encoder, value: Username) { + value.withoutAt.let(encoder::encodeString) + } + + override fun deserialize(decoder: Decoder): Username { + return Username.prepare(decoder.decodeString()) + } +} \ No newline at end of file