1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2026-04-21 17:32:30 +00:00

complete support of ManagedBotCreated and ManagedBotUpdated, add getManagedBotToken and replaceManagedBotToken

This commit is contained in:
2026-04-06 15:47:38 +06:00
parent b37dda6f47
commit de13ddeb54
21 changed files with 333 additions and 2 deletions

View File

@@ -0,0 +1,19 @@
package dev.inmo.tgbotapi.requests.managed_bots
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
import dev.inmo.tgbotapi.types.BotToken
import dev.inmo.tgbotapi.types.ChatId
import dev.inmo.tgbotapi.types.userIdField
import kotlinx.serialization.*
@Serializable
data class GetManagedBotToken(
@SerialName(userIdField)
val userId: ChatId
) : SimpleRequest<BotToken> {
override fun method(): String = "getManagedBotToken"
override val resultDeserializer: DeserializationStrategy<BotToken>
get() = BotToken.serializer()
override val requestSerializer: SerializationStrategy<*>
get() = serializer()
}

View File

@@ -0,0 +1,19 @@
package dev.inmo.tgbotapi.requests.managed_bots
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
import dev.inmo.tgbotapi.types.BotToken
import dev.inmo.tgbotapi.types.ChatId
import dev.inmo.tgbotapi.types.userIdField
import kotlinx.serialization.*
@Serializable
data class ReplaceManagedBotToken(
@SerialName(userIdField)
val userId: ChatId
) : SimpleRequest<BotToken> {
override fun method(): String = "replaceManagedBotToken"
override val resultDeserializer: DeserializationStrategy<BotToken>
get() = BotToken.serializer()
override val requestSerializer: SerializationStrategy<*>
get() = serializer()
}

View File

@@ -0,0 +1,8 @@
package dev.inmo.tgbotapi.types
import kotlinx.serialization.Serializable
import kotlin.jvm.JvmInline
@Serializable
@JvmInline
value class BotToken(val string: String)

View File

@@ -24,6 +24,8 @@ const val UPDATE_BUSINESS_MESSAGE = "business_message"
const val UPDATE_EDITED_BUSINESS_MESSAGE = "edited_business_message"
const val UPDATE_DELETED_BUSINESS_MESSAGES = "deleted_business_messages"
const val UPDATE_MANAGED_BOT = "managed_bot"
val ALL_UPDATES_LIST_WITHOUT_REACTIONS = listOf(
UPDATE_MESSAGE,
UPDATE_EDITED_MESSAGE,
@@ -57,6 +59,8 @@ val ALL_UPDATES_LIST_WITHOUT_REACTIONS = listOf(
UPDATE_CHAT_BOOST,
UPDATE_REMOVE_CHAT_BOOST,
UPDATE_MANAGED_BOT,
)
val ALL_UPDATES_LIST = ALL_UPDATES_LIST_WITHOUT_REACTIONS + listOf(

View File

@@ -18,6 +18,7 @@ import dev.inmo.tgbotapi.types.gifts.GiftSentOrReceivedEvent
import dev.inmo.tgbotapi.types.giveaway.*
import dev.inmo.tgbotapi.types.message.content.GiveawayContent
import dev.inmo.tgbotapi.types.location.Location
import dev.inmo.tgbotapi.types.managed_bots.ManagedBotCreated
import dev.inmo.tgbotapi.types.managed_bots.ManagedBotUpdated
import dev.inmo.tgbotapi.types.message.ChatEvents.*
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.*
@@ -206,7 +207,7 @@ internal data class RawMessage(
private val gift_upgrade_sent: GiftSentOrReceivedEvent.RegularGift? = null,
private val chat_owner_left: ChatOwnerLeft? = null,
private val chat_owner_changed: ChatOwnerChanged? = null,
private val managed_bot_updated: ManagedBotUpdated? = null
private val managed_bot_created: ManagedBotCreated? = null
) {
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
private val checkedFrom = from ?.takeIf { !it.isFakeTelegramUser() }
@@ -345,7 +346,7 @@ internal data class RawMessage(
suggested_post_declined != null -> suggested_post_declined
suggested_post_paid != null -> suggested_post_paid
suggested_post_refunded != null -> suggested_post_refunded
managed_bot_updated != null -> managed_bot_updated
managed_bot_created != null -> managed_bot_created
else -> null
}
}

View File

@@ -0,0 +1,13 @@
package dev.inmo.tgbotapi.types.update
import dev.inmo.tgbotapi.types.UpdateId
import dev.inmo.tgbotapi.types.managed_bots.ManagedBotUpdated
import dev.inmo.tgbotapi.types.update.abstracts.Update
import kotlinx.serialization.Serializable
@Serializable
data class ManagedBotUpdate(
override val updateId: UpdateId,
override val data: ManagedBotUpdated
) : Update {
}

View File

@@ -12,6 +12,7 @@ import dev.inmo.tgbotapi.types.chat.ChatJoinRequest
import dev.inmo.tgbotapi.types.chat.ChatMessageReactionUpdated
import dev.inmo.tgbotapi.types.chat.ChatMessageReactionsCountUpdated
import dev.inmo.tgbotapi.types.chat.member.ChatMemberUpdated
import dev.inmo.tgbotapi.types.managed_bots.ManagedBotUpdated
import dev.inmo.tgbotapi.types.message.abstracts.*
import dev.inmo.tgbotapi.types.message.payments.PaidMediaPurchased
import dev.inmo.tgbotapi.types.payments.PreCheckoutQuery
@@ -64,6 +65,7 @@ internal data class RawUpdate constructor(
private val edited_business_message: BusinessContentMessage<*>? = null,
private val deleted_business_messages: BusinessMessagesDeleted? = null,
private val purchased_paid_media: PaidMediaPurchased? = null,
private val managed_bot: ManagedBotUpdated? = null,
) {
@Transient
private var initedUpdate: Update? = null
@@ -100,6 +102,7 @@ internal data class RawUpdate constructor(
edited_business_message != null -> EditBusinessMessageUpdate(updateId, edited_business_message)
deleted_business_messages != null -> DeletedBusinessMessageUpdate(updateId, deleted_business_messages)
purchased_paid_media != null -> PaidMediaPurchasedUpdate(updateId, purchased_paid_media)
managed_bot != null -> ManagedBotUpdate(updateId, managed_bot)
else -> UnknownUpdate(
updateId,
raw

View File

@@ -45,6 +45,7 @@ interface FlowsUpdatesFilter : UpdatesFilter {
val editBusinessMessageUpdatesFlow: Flow<EditBusinessMessageUpdate>
val deleteBusinessMessageUpdatesFlow: Flow<DeletedBusinessMessageUpdate>
val paidMediaPurchasedUpdatesFlow: Flow<PaidMediaPurchasedUpdate>
val managedBotUpdatesFlow: Flow<ManagedBotUpdate>
val unknownUpdatesFlow: Flow<UnknownUpdate>
}
@@ -73,6 +74,7 @@ abstract class AbstractFlowsUpdatesFilter : FlowsUpdatesFilter {
override val editBusinessMessageUpdatesFlow: Flow<EditBusinessMessageUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
override val deleteBusinessMessageUpdatesFlow: Flow<DeletedBusinessMessageUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
override val paidMediaPurchasedUpdatesFlow: Flow<PaidMediaPurchasedUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
override val managedBotUpdatesFlow: Flow<ManagedBotUpdate> by lazy { allUpdatesFlow.filterIsInstance() }
}
/**