1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2026-05-13 03:50:05 +00:00

Actualize PollAnswer

This commit is contained in:
2026-04-07 00:23:31 +06:00
parent ac51189694
commit e3ae85e067
2 changed files with 21 additions and 10 deletions

View File

@@ -322,6 +322,7 @@ const val canSendPaidMediaField = "can_send_paid_media"
const val activeUsernamesField = "active_usernames" const val activeUsernamesField = "active_usernames"
const val customTitleField = "custom_title" const val customTitleField = "custom_title"
const val optionIdsField = "option_ids" const val optionIdsField = "option_ids"
const val optionPersistentIdsField = "option_persistent_ids"
const val parentChatField = "parent_chat" const val parentChatField = "parent_chat"
const val voterChatField = "voter_chat" const val voterChatField = "voter_chat"
const val ipAddressField = "ip_address" const val ipAddressField = "ip_address"

View File

@@ -4,6 +4,7 @@ import dev.inmo.tgbotapi.abstracts.FromUser
import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.*
import dev.inmo.tgbotapi.types.chat.ChannelChat import dev.inmo.tgbotapi.types.chat.ChannelChat
import dev.inmo.tgbotapi.types.chat.CommonBot import dev.inmo.tgbotapi.types.chat.CommonBot
import dev.inmo.tgbotapi.types.chat.PreviewPublicChat
import dev.inmo.tgbotapi.types.chat.User import dev.inmo.tgbotapi.types.chat.User
import kotlinx.serialization.* import kotlinx.serialization.*
import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.descriptors.SerialDescriptor
@@ -15,6 +16,7 @@ sealed interface PollAnswer: FromUser {
val pollId: PollId val pollId: PollId
override val user: User override val user: User
val chosen: List<Int> val chosen: List<Int>
val chosenPersistentIds: List<PollOptionPersistentId>
@Transient @Transient
override val from: User override val from: User
get() = user get() = user
@@ -27,6 +29,8 @@ sealed interface PollAnswer: FromUser {
override val user: User, override val user: User,
@SerialName(optionIdsField) @SerialName(optionIdsField)
override val chosen: List<Int>, override val chosen: List<Int>,
@SerialName(optionPersistentIdsField)
override val chosenPersistentIds: List<PollOptionPersistentId> = emptyList(),
) : PollAnswer ) : PollAnswer
@Serializable @Serializable
@@ -35,9 +39,11 @@ sealed interface PollAnswer: FromUser {
override val pollId: PollId, override val pollId: PollId,
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE") @Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
@SerialName(voterChatField) @SerialName(voterChatField)
val voterChat: ChannelChat, val voterChat: PreviewPublicChat,
@SerialName(optionIdsField) @SerialName(optionIdsField)
override val chosen: List<Int> override val chosen: List<Int>,
@SerialName(optionPersistentIdsField)
override val chosenPersistentIds: List<PollOptionPersistentId> = emptyList(),
) : PollAnswer { ) : PollAnswer {
@SerialName(userField) @SerialName(userField)
override val user: User = defaultUser override val user: User = defaultUser
@@ -59,17 +65,20 @@ sealed interface PollAnswer: FromUser {
val pollId: PollId, val pollId: PollId,
@SerialName(optionIdsField) @SerialName(optionIdsField)
val chosen: List<Int>, val chosen: List<Int>,
@SerialName(optionPersistentIdsField)
val chosenPersistentIds: List<PollOptionPersistentId> = emptyList(),
@SerialName(userField) @SerialName(userField)
val user: User = Anonymous.defaultUser, val user: User = Anonymous.defaultUser,
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE") @Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
@SerialName(voterChatField) @SerialName(voterChatField)
val voterChat: ChannelChat? = null val voterChat: PreviewPublicChat? = null
) )
operator fun invoke( operator fun invoke(
pollId: PollId, pollId: PollId,
user: User, user: User,
chosen: List<Int>, chosen: List<Int>,
) = Public(pollId, user, chosen) chosenPersistentIds: List<PollOptionPersistentId> = emptyList(),
) = Public(pollId, user, chosen, chosenPersistentIds)
override val descriptor: SerialDescriptor override val descriptor: SerialDescriptor
get() = PollAnswerSurrogate.serializer().descriptor get() = PollAnswerSurrogate.serializer().descriptor
@@ -77,9 +86,9 @@ sealed interface PollAnswer: FromUser {
override fun deserialize(decoder: Decoder): PollAnswer { override fun deserialize(decoder: Decoder): PollAnswer {
val surrogate = PollAnswerSurrogate.serializer().deserialize(decoder) val surrogate = PollAnswerSurrogate.serializer().deserialize(decoder)
return if (surrogate.voterChat != null) { return if (surrogate.voterChat != null) {
Anonymous(surrogate.pollId, surrogate.voterChat, surrogate.chosen) Anonymous(surrogate.pollId, surrogate.voterChat, surrogate.chosen, surrogate.chosenPersistentIds)
} else { } else {
Public(surrogate.pollId, surrogate.user, surrogate.chosen) Public(surrogate.pollId, surrogate.user, surrogate.chosen, surrogate.chosenPersistentIds)
} }
} }
@@ -87,10 +96,11 @@ sealed interface PollAnswer: FromUser {
PollAnswerSurrogate.serializer().serialize( PollAnswerSurrogate.serializer().serialize(
encoder, encoder,
PollAnswerSurrogate( PollAnswerSurrogate(
value.pollId, pollId = value.pollId,
value.chosen, chosen = value.chosen,
value.user, chosenPersistentIds = value.chosenPersistentIds,
(value as? Anonymous) ?.voterChat user = value.user,
voterChat = (value as? Anonymous) ?.voterChat
) )
) )
} }