1
0
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:
2025-07-07 21:48:23 +06:00
parent b8530f14ca
commit c990d987f5
13 changed files with 265 additions and 1 deletions

View File

@@ -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()
}

View File

@@ -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

View File

@@ -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
)
}
}
}
}

View File

@@ -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
}
}