1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2025-11-25 08:45:50 +00:00

add checklist as field in ExternalReplyInfo and add support of EditMessageChecklist

This commit is contained in:
2025-07-07 21:29:29 +06:00
parent db8bac9b52
commit b8530f14ca
6 changed files with 141 additions and 2 deletions

View File

@@ -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<ContentMessage<ChecklistContent>>()
@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<ChecklistContent>, EditReplyMessage {
override fun method(): String = editMessageChecklistMethod
override val resultDeserializer: DeserializationStrategy<ContentMessage<ChecklistContent>>
get() = commonResultDeserializer
override val requestSerializer: SerializationStrategy<*>
get() = serializer()
}

View File

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

View File

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