mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2025-11-28 02:05:46 +00:00
add support of general changes
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
package dev.inmo.tgbotapi.requests.bot
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.chat.ExtendedBot
|
||||
import dev.inmo.tgbotapi.types.payments.stars.StarAmount
|
||||
import kotlinx.serialization.*
|
||||
|
||||
@Serializable
|
||||
object GetMyStarBalance : SimpleRequest<StarAmount> {
|
||||
override fun method(): String = "getMyStarBalance"
|
||||
override val resultDeserializer: DeserializationStrategy<StarAmount>
|
||||
get() = StarAmount.serializer()
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
}
|
||||
@@ -71,7 +71,7 @@ val invoicePayloadBytesLimit = 1 until 128
|
||||
|
||||
val pollOptionTextLength = 1 .. 100
|
||||
val pollQuestionTextLength = 1 .. 300
|
||||
val pollOptionsLimit = 2 .. 10
|
||||
val pollOptionsLimit = 2 .. 12
|
||||
|
||||
val livePeriodLimit = 60 .. LiveLocation.INDEFINITE_LIVE_PERIOD
|
||||
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
package dev.inmo.tgbotapi.types
|
||||
|
||||
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChannelEvent
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
|
||||
@Serializable
|
||||
sealed interface ChannelDirectMessagesConfigurationChanged : ChannelEvent {
|
||||
val enabled: Boolean
|
||||
val cost: Int?
|
||||
@Serializable
|
||||
object Disabled : ChannelDirectMessagesConfigurationChanged {
|
||||
override val enabled: Boolean
|
||||
get() = false
|
||||
override val cost: Int?
|
||||
get() = null
|
||||
}
|
||||
@Serializable
|
||||
object Free : ChannelDirectMessagesConfigurationChanged {
|
||||
override val enabled: Boolean
|
||||
get() = true
|
||||
override val cost: Int
|
||||
get() = 0
|
||||
}
|
||||
@Serializable
|
||||
data class Paid(
|
||||
override val cost: Int
|
||||
) : ChannelDirectMessagesConfigurationChanged {
|
||||
override val enabled: Boolean
|
||||
get() = true
|
||||
}
|
||||
|
||||
companion object : KSerializer<ChannelDirectMessagesConfigurationChanged> {
|
||||
@Serializable
|
||||
private data class RawDirectMessagePriceChanged(
|
||||
val are_direct_messages_enabled: Boolean = false,
|
||||
val direct_message_star_count: Int? = null
|
||||
)
|
||||
override val descriptor: SerialDescriptor
|
||||
get() = RawDirectMessagePriceChanged.serializer().descriptor
|
||||
|
||||
override fun serialize(
|
||||
encoder: Encoder,
|
||||
value: ChannelDirectMessagesConfigurationChanged
|
||||
) {
|
||||
RawDirectMessagePriceChanged.serializer().serialize(
|
||||
encoder,
|
||||
RawDirectMessagePriceChanged(
|
||||
value.enabled,
|
||||
value.cost
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun deserialize(decoder: Decoder): ChannelDirectMessagesConfigurationChanged {
|
||||
val raw = RawDirectMessagePriceChanged.serializer().deserialize(decoder)
|
||||
|
||||
return when {
|
||||
raw.are_direct_messages_enabled == false -> Disabled
|
||||
raw.direct_message_star_count == null || raw.direct_message_star_count == 0 -> Free
|
||||
else -> Paid(
|
||||
raw.direct_message_star_count
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -171,6 +171,9 @@ internal data class RawMessage(
|
||||
private val checklist_tasks_done: ChecklistTasksDone? = null,
|
||||
private val checklist_tasks_added: ChecklistTasksAdded? = null,
|
||||
|
||||
// Channel direct messages
|
||||
private val direct_message_price_changed: ChannelDirectMessagesConfigurationChanged? = null,
|
||||
|
||||
// Gifts
|
||||
private val gift: GiftSentOrReceived.Regular? = null,
|
||||
private val unique_gift: GiftSentOrReceived.Unique? = null,
|
||||
@@ -301,6 +304,7 @@ internal data class RawMessage(
|
||||
unique_gift != null -> unique_gift
|
||||
checklist_tasks_done != null -> checklist_tasks_done
|
||||
checklist_tasks_added != null -> checklist_tasks_added
|
||||
direct_message_price_changed != null -> direct_message_price_changed
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user