From b8530f14ca9eae8a88e240ca4f1fc3a0432f5658 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 7 Jul 2025 21:29:29 +0600 Subject: [PATCH] add checklist as field in ExternalReplyInfo and add support of EditMessageChecklist --- tgbotapi.api/api/tgbotapi.api.api | 7 +++ .../edit/checklist/EditMessageChecklist.kt | 47 +++++++++++++++++++ tgbotapi.core/api/tgbotapi.core.api | 46 +++++++++++++++++- .../edit/checklist/EditMessageChecklist.kt | 37 +++++++++++++++ .../dev/inmo/tgbotapi/types/ReplyInfo.kt | 3 ++ .../tgbotapi/types/checklists/Checklist.kt | 3 +- 6 files changed, 141 insertions(+), 2 deletions(-) create mode 100644 tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/checklist/EditMessageChecklist.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklist.kt diff --git a/tgbotapi.api/api/tgbotapi.api.api b/tgbotapi.api/api/tgbotapi.api.api index 469b04af7a..cb8770987d 100644 --- a/tgbotapi.api/api/tgbotapi.api.api +++ b/tgbotapi.api/api/tgbotapi.api.api @@ -928,6 +928,13 @@ public final class dev/inmo/tgbotapi/extensions/api/edit/caption/EditInlineMessa public static synthetic fun editMessageCaption-KUlcsOA$default (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ljava/lang/String;Ljava/lang/String;Ldev/inmo/tgbotapi/types/message/ParseMode;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; } +public final class dev/inmo/tgbotapi/extensions/api/edit/checklist/EditMessageChecklistKt { + public static final fun editMessageChecklist (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/types/message/abstracts/BusinessContentMessage;Ldev/inmo/tgbotapi/types/checklists/Checklist$Input;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun editMessageChecklist$default (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/types/message/abstracts/BusinessContentMessage;Ldev/inmo/tgbotapi/types/checklists/Checklist$Input;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public static final fun editMessageChecklist-rhNz7xc (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/types/ChatIdentifier;JLjava/lang/String;Ldev/inmo/tgbotapi/types/checklists/Checklist$Input;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun editMessageChecklist-rhNz7xc$default (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/types/ChatIdentifier;JLjava/lang/String;Ldev/inmo/tgbotapi/types/checklists/Checklist$Input;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +} + public final class dev/inmo/tgbotapi/extensions/api/edit/location/live/EditChatMessageLiveLocationKt { public static final fun editLiveLocation-K1rWLlE (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/types/ChatIdentifier;JDDLjava/lang/Integer;Ljava/lang/Float;Ljava/lang/Integer;Ljava/lang/Float;Ljava/lang/String;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public static final fun editLiveLocation-K1rWLlE (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/types/chat/Chat;JDDLjava/lang/Integer;Ljava/lang/Float;Ljava/lang/Integer;Ljava/lang/Float;Ljava/lang/String;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; diff --git a/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/checklist/EditMessageChecklist.kt b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/checklist/EditMessageChecklist.kt new file mode 100644 index 0000000000..7664399ffd --- /dev/null +++ b/tgbotapi.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/edit/checklist/EditMessageChecklist.kt @@ -0,0 +1,47 @@ +package dev.inmo.tgbotapi.extensions.api.edit.checklist + +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.edit.checklist.EditMessageChecklist +import dev.inmo.tgbotapi.types.ChatIdentifier +import dev.inmo.tgbotapi.types.MessageId +import dev.inmo.tgbotapi.types.businessConnectionIdField +import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.checklistField +import dev.inmo.tgbotapi.types.checklists.Checklist +import dev.inmo.tgbotapi.types.message.abstracts.BusinessContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.message.content.ChecklistContent +import dev.inmo.tgbotapi.types.messageIdField +import dev.inmo.tgbotapi.types.replyMarkupField +import kotlinx.serialization.SerialName + +public suspend fun TelegramBot.editMessageChecklist( + chatId: ChatIdentifier, + messageId: MessageId, + businessConnectionId: BusinessConnectionId, + checklist: Checklist.Input, + replyMarkup: InlineKeyboardMarkup? = null +): ContentMessage = execute( + EditMessageChecklist( + chatId = chatId, + messageId = messageId, + businessConnectionId = businessConnectionId, + checklist = checklist, + replyMarkup = replyMarkup + ) +) + +public suspend fun TelegramBot.editMessageChecklist( + message: BusinessContentMessage, + checklist: Checklist.Input, + replyMarkup: InlineKeyboardMarkup? = null +): ContentMessage = execute( + EditMessageChecklist( + chatId = message.chat.id, + messageId = message.messageId, + businessConnectionId = message.businessConnectionId, + checklist = checklist, + replyMarkup = replyMarkup + ) +) diff --git a/tgbotapi.core/api/tgbotapi.core.api b/tgbotapi.core/api/tgbotapi.core.api index 63e4f42533..d83b4e7d8f 100644 --- a/tgbotapi.core/api/tgbotapi.core.api +++ b/tgbotapi.core/api/tgbotapi.core.api @@ -4322,6 +4322,50 @@ public final class dev/inmo/tgbotapi/requests/edit/caption/EditInlineMessageCapt public static synthetic fun EditInlineMessageCaption-3bQJ72M$default (Ljava/lang/String;Ljava/util/List;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;ILjava/lang/Object;)Ldev/inmo/tgbotapi/requests/edit/caption/EditInlineMessageCaption; } +public final class dev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklist : dev/inmo/tgbotapi/requests/edit/abstracts/EditChatMessage, dev/inmo/tgbotapi/requests/edit/abstracts/EditReplyMessage { + public static final field Companion Ldev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklist$Companion; + public synthetic fun (Ldev/inmo/tgbotapi/types/ChatIdentifier;JLjava/lang/String;Ldev/inmo/tgbotapi/types/checklists/Checklist$Input;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ldev/inmo/tgbotapi/types/ChatIdentifier;JLjava/lang/String;Ldev/inmo/tgbotapi/types/checklists/Checklist$Input;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ldev/inmo/tgbotapi/types/ChatIdentifier; + public final fun component2-APLFQys ()J + public final fun component3-T-_HSQI ()Ljava/lang/String; + public final fun component4 ()Ldev/inmo/tgbotapi/types/checklists/Checklist$Input; + public final fun component5 ()Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup; + public final fun copy--CEwGbA (Ldev/inmo/tgbotapi/types/ChatIdentifier;JLjava/lang/String;Ldev/inmo/tgbotapi/types/checklists/Checklist$Input;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;)Ldev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklist; + public static synthetic fun copy--CEwGbA$default (Ldev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklist;Ldev/inmo/tgbotapi/types/ChatIdentifier;JLjava/lang/String;Ldev/inmo/tgbotapi/types/checklists/Checklist$Input;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;ILjava/lang/Object;)Ldev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklist; + public fun equals (Ljava/lang/Object;)Z + public fun getBusinessConnectionId-T-_HSQI ()Ljava/lang/String; + public synthetic fun getBusinessConnectionId-nXr5wdE ()Ljava/lang/String; + public fun getChatId ()Ldev/inmo/tgbotapi/types/ChatIdentifier; + public final fun getChecklist ()Ldev/inmo/tgbotapi/types/checklists/Checklist$Input; + public fun getMessageId-APLFQys ()J + public fun getReplyMarkup ()Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup; + public synthetic fun getReplyMarkup ()Ldev/inmo/tgbotapi/types/buttons/KeyboardMarkup; + public fun getRequestSerializer ()Lkotlinx/serialization/SerializationStrategy; + public fun getResultDeserializer ()Lkotlinx/serialization/DeserializationStrategy; + public fun hashCode ()I + public fun method ()Ljava/lang/String; + public fun toString ()Ljava/lang/String; +} + +public synthetic class dev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklist$$serializer : kotlinx/serialization/internal/GeneratedSerializer { + public static final field INSTANCE Ldev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklist$$serializer; + public final fun childSerializers ()[Lkotlinx/serialization/KSerializer; + public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklist; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklist;)V + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V +} + +public final class dev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklist$Companion { + public final fun serializer ()Lkotlinx/serialization/KSerializer; +} + +public final class dev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklistKt { + public static final field editMessageChecklistMethod Ljava/lang/String; +} + public final class dev/inmo/tgbotapi/requests/edit/location/live/EditChatMessageLiveLocation : dev/inmo/tgbotapi/requests/edit/abstracts/EditChatMessage, dev/inmo/tgbotapi/requests/edit/abstracts/EditLocationMessage, dev/inmo/tgbotapi/requests/edit/abstracts/EditReplyMessage { public static final field Companion Ldev/inmo/tgbotapi/requests/edit/location/live/EditChatMessageLiveLocation$Companion; public synthetic fun (Ldev/inmo/tgbotapi/types/ChatIdentifier;JDDLjava/lang/Integer;Ljava/lang/Float;Ljava/lang/Integer;Ljava/lang/Float;Ljava/lang/String;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;ILkotlin/jvm/internal/DefaultConstructorMarker;)V @@ -17672,7 +17716,7 @@ public final class dev/inmo/tgbotapi/types/checklists/Checklist$Companion { public final fun serializer ()Lkotlinx/serialization/KSerializer; } -public final class dev/inmo/tgbotapi/types/checklists/Checklist$Created : dev/inmo/tgbotapi/types/checklists/Checklist { +public final class dev/inmo/tgbotapi/types/checklists/Checklist$Created : dev/inmo/tgbotapi/types/ReplyInfo$External$ContentVariant, dev/inmo/tgbotapi/types/checklists/Checklist { public static final field Companion Ldev/inmo/tgbotapi/types/checklists/Checklist$Created$Companion; public fun (Ljava/util/List;Ljava/util/List;ZZ)V public synthetic fun (Ljava/util/List;Ljava/util/List;ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklist.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklist.kt new file mode 100644 index 0000000000..1f060c528d --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/edit/checklist/EditMessageChecklist.kt @@ -0,0 +1,37 @@ +package dev.inmo.tgbotapi.requests.edit.checklist + +import dev.inmo.tgbotapi.requests.edit.abstracts.EditChatMessage +import dev.inmo.tgbotapi.requests.edit.abstracts.EditReplyMessage +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId +import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup +import dev.inmo.tgbotapi.types.checklists.Checklist +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass +import dev.inmo.tgbotapi.types.message.content.ChecklistContent +import dev.inmo.tgbotapi.types.message.content.MessageContent +import kotlinx.serialization.* + +const val editMessageChecklistMethod = "editMessageChecklist" + +private val commonResultDeserializer = TelegramBotAPIMessageDeserializationStrategyClass>() + +@Serializable +data class EditMessageChecklist( + @SerialName(chatIdField) + override val chatId: ChatIdentifier, + @SerialName(messageIdField) + override val messageId: MessageId, + @SerialName(businessConnectionIdField) + override val businessConnectionId: BusinessConnectionId, + @SerialName(checklistField) + val checklist: Checklist.Input, + @SerialName(replyMarkupField) + override val replyMarkup: InlineKeyboardMarkup? = null +) : EditChatMessage, EditReplyMessage { + override fun method(): String = editMessageChecklistMethod + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer + override val requestSerializer: SerializationStrategy<*> + get() = serializer() +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ReplyInfo.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ReplyInfo.kt index 6d796eb1cb..222041fdbd 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ReplyInfo.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ReplyInfo.kt @@ -2,6 +2,7 @@ package dev.inmo.tgbotapi.types import dev.inmo.tgbotapi.abstracts.SpoilerableData import dev.inmo.tgbotapi.types.chat.SuperPublicChat +import dev.inmo.tgbotapi.types.checklists.Checklist import dev.inmo.tgbotapi.types.dice.Dice import dev.inmo.tgbotapi.types.files.* import dev.inmo.tgbotapi.types.games.RawGame @@ -105,6 +106,7 @@ sealed interface ReplyInfo { private val invoice: Invoice? = null, private val dice: Dice? = null, private val giveaway: Giveaway? = null, + private val checklist: Checklist.Created? = null, private val giveaway_winners: GiveawayPublicResults? = null, ) { val asExternalReplyInfo: External @@ -137,6 +139,7 @@ sealed interface ReplyInfo { invoice != null -> invoice giveaway != null -> giveaway giveaway_winners != null -> giveaway_winners + checklist != null -> checklist else -> null } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/checklists/Checklist.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/checklists/Checklist.kt index 29cf823fcd..e85509049b 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/checklists/Checklist.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/checklists/Checklist.kt @@ -2,6 +2,7 @@ package dev.inmo.tgbotapi.types.checklists import dev.inmo.micro_utils.common.Warning import dev.inmo.tgbotapi.abstracts.TitledInput +import dev.inmo.tgbotapi.types.ReplyInfo import dev.inmo.tgbotapi.types.checklists.ChecklistTask.Input import dev.inmo.tgbotapi.types.message.ParseMode import dev.inmo.tgbotapi.types.message.RawMessageEntity @@ -135,7 +136,7 @@ sealed interface Checklist : TitledInput { override val othersCanAddTasks: Boolean = false, @SerialName(othersCanMarkTasksAsDoneField) override val othersCanCompleteTasks: Boolean = false, - ): Checklist { + ): Checklist, ReplyInfo.External.ContentVariant { override val title: String by lazy { titleTextSources.makeSourceString() }