mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2026-05-13 20:10:06 +00:00
Actualize PollAnswer
This commit is contained in:
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user