From 71ccfc88cc7184619ecde3db9fa4036d14851ab2 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 7 Jul 2025 16:25:21 +0600 Subject: [PATCH] start add SendChecklist --- .../tgbotapi/requests/send/SendChecklist.kt | 75 +++++++++++++++++++ .../kotlin/dev/inmo/tgbotapi/types/Common.kt | 1 + .../inmo/tgbotapi/types/message/RawMessage.kt | 4 + .../types/message/content/ChecklistContent.kt | 32 ++++++++ 4 files changed, 112 insertions(+) create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendChecklist.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/ChecklistContent.kt diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendChecklist.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendChecklist.kt new file mode 100644 index 0000000000..63012d5fef --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/SendChecklist.kt @@ -0,0 +1,75 @@ +package dev.inmo.tgbotapi.requests.send + +import dev.inmo.tgbotapi.abstracts.types.AllowPaidBroadcast +import dev.inmo.tgbotapi.abstracts.types.DisableNotification +import dev.inmo.tgbotapi.abstracts.types.OptionallyWithEffectId +import dev.inmo.tgbotapi.abstracts.types.ProtectContent +import dev.inmo.tgbotapi.abstracts.types.WithBusinessConnectionId +import dev.inmo.tgbotapi.abstracts.types.WithReplyMarkup +import dev.inmo.tgbotapi.abstracts.types.WithReplyParameters +import dev.inmo.tgbotapi.requests.send.abstracts.OptionallyMessageThreadRequest +import dev.inmo.tgbotapi.requests.send.abstracts.SendChatMessageRequest +import dev.inmo.tgbotapi.requests.send.abstracts.SendContentMessageRequest +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId +import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +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.GameContent +import kotlinx.serialization.* + +private val commonResultDeserializer: DeserializationStrategy> + = TelegramBotAPIMessageDeserializationStrategyClass() + +@Serializable +data class SendChecklist ( + @SerialName(chatIdField) + override val chatId: ChatIdentifier, + @SerialName(checklistField) + val checklist: Checklist.Input, + @SerialName(businessConnectionIdField) + override val businessConnectionId: BusinessConnectionId, + @SerialName(disableNotificationField) + override val disableNotification: Boolean = false, + @SerialName(protectContentField) + override val protectContent: Boolean = false, + @SerialName(messageEffectIdField) + override val effectId: EffectId? = null, + @SerialName(replyParametersField) + override val replyParameters: ReplyParameters? = null, + @SerialName(replyMarkupField) + override val replyMarkup: KeyboardMarkup? = null +) : SendChatMessageRequest>, + WithReplyParameters, + DisableNotification, + ProtectContent, + OptionallyWithEffectId, + WithBusinessConnectionId, + WithReplyMarkup { + constructor( + chatId: BusinessChatId, + checklist: Checklist.Input, + disableNotification: Boolean = false, + protectContent: Boolean = false, + effectId: EffectId? = null, + replyParameters: ReplyParameters? = null, + replyMarkup: KeyboardMarkup? = null + ) : this( + chatId = chatId, + checklist = checklist, + businessConnectionId = chatId.businessConnectionId, + disableNotification = disableNotification, + protectContent = protectContent, + effectId = effectId, + replyParameters = replyParameters, + replyMarkup = replyMarkup + ) + + override fun method(): String = "sendChecklist" + override val resultDeserializer: DeserializationStrategy> + get() = commonResultDeserializer + override val requestSerializer: SerializationStrategy<*> + get() = serializer() +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt index 8bf51d5140..ff50ef8bfd 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt @@ -314,6 +314,7 @@ const val titleEntitiesField = "title_entities" const val tasksField = "tasks" const val othersCanAddTasksField = "others_can_add_tasks" const val othersCanMarkTasksAsDoneField = "others_can_mark_tasks_as_done" +const val checklistField = "checklist" const val requestContactField = "request_contact" const val requestLocationField = "request_location" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt index 41492d95fc..12e9200922 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt @@ -165,6 +165,10 @@ internal data class RawMessage( private val giveaway_winners: GiveawayPublicResults? = null, private val giveaway_completed: GiveawayPrivateResults? = null, + // Checklists + private val checklist_tasks_done: Nothing, + private val checklist_tasks_added: Nothing, + // Gifts private val gift: GiftSentOrReceived.Regular? = null, private val unique_gift: GiftSentOrReceived.Unique? = null, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/ChecklistContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/ChecklistContent.kt new file mode 100644 index 0000000000..45ae90a46a --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/ChecklistContent.kt @@ -0,0 +1,32 @@ +package dev.inmo.tgbotapi.types.message.content + +import dev.inmo.tgbotapi.requests.abstracts.Request +import dev.inmo.tgbotapi.types.ChatIdentifier +import dev.inmo.tgbotapi.types.EffectId +import dev.inmo.tgbotapi.types.MessageThreadId +import dev.inmo.tgbotapi.types.ReplyParameters +import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId +import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup +import dev.inmo.tgbotapi.types.checklists.Checklist +import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage +import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage +import kotlinx.serialization.Serializable + +@Serializable +data class ChecklistContent( + val checklist: Checklist +) : MessageContent { + override fun createResend( + chatId: ChatIdentifier, + messageThreadId: MessageThreadId?, + businessConnectionId: BusinessConnectionId?, + disableNotification: Boolean, + protectContent: Boolean, + allowPaidBroadcast: Boolean, + effectId: EffectId?, + replyParameters: ReplyParameters?, + replyMarkup: KeyboardMarkup? + ): Request> { + return SendChecklist + } +}