1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2025-09-04 07:39:39 +00:00

fix of EditChatMessageMedia

This commit is contained in:
2025-03-01 14:04:08 +06:00
parent 8aec920a15
commit ba5f76e8cd
5 changed files with 39 additions and 8 deletions

View File

@@ -2,6 +2,9 @@
## 24.0.1 ## 24.0.1
* `Core`:
* Now you may upload photos with `EditChatMessageMedia`
## 24.0.0 ## 24.0.0
**THIS UPDATE CONTAINS BREAKING CHANGES IN `subcontextUpdatesFilter` WORK. TAKE CARE IN MIGRATION** **THIS UPDATE CONTAINS BREAKING CHANGES IN `subcontextUpdatesFilter` WORK. TAKE CARE IN MIGRATION**

View File

@@ -432,6 +432,7 @@ public final class dev/inmo/tgbotapi/bot/ktor/base/MultipartRequestCallFactory :
public fun <init> ()V public fun <init> ()V
public fun <init> (Ldev/inmo/kslog/common/KSLog;)V public fun <init> (Ldev/inmo/kslog/common/KSLog;)V
public synthetic fun <init> (Ldev/inmo/kslog/common/KSLog;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public synthetic fun <init> (Ldev/inmo/kslog/common/KSLog;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun makeCall (Lio/ktor/client/HttpClient;Ldev/inmo/tgbotapi/utils/TelegramAPIUrlsKeeper;Ldev/inmo/tgbotapi/requests/abstracts/Request;Lkotlinx/serialization/json/Json;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
} }
public final class dev/inmo/tgbotapi/bot/ktor/base/MultipleClientKtorRequestsExecutor : dev/inmo/tgbotapi/bot/BaseRequestsExecutor { public final class dev/inmo/tgbotapi/bot/ktor/base/MultipleClientKtorRequestsExecutor : dev/inmo/tgbotapi/bot/BaseRequestsExecutor {
@@ -3895,7 +3896,7 @@ public final class dev/inmo/tgbotapi/requests/edit/location/live/StopInlineMessa
public final fun serializer ()Lkotlinx/serialization/KSerializer; public final fun serializer ()Lkotlinx/serialization/KSerializer;
} }
public final class dev/inmo/tgbotapi/requests/edit/media/EditChatMessageMedia : dev/inmo/tgbotapi/requests/edit/abstracts/EditChatMessage, dev/inmo/tgbotapi/requests/edit/abstracts/EditMediaMessage, dev/inmo/tgbotapi/requests/edit/abstracts/EditReplyMessage { public final class dev/inmo/tgbotapi/requests/edit/media/EditChatMessageMedia : dev/inmo/tgbotapi/requests/abstracts/MultipartRequest$Common, dev/inmo/tgbotapi/requests/edit/abstracts/EditChatMessage, dev/inmo/tgbotapi/requests/edit/abstracts/EditMediaMessage, dev/inmo/tgbotapi/requests/edit/abstracts/EditReplyMessage {
public static final field Companion Ldev/inmo/tgbotapi/requests/edit/media/EditChatMessageMedia$Companion; public static final field Companion Ldev/inmo/tgbotapi/requests/edit/media/EditChatMessageMedia$Companion;
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/ChatIdentifier;JLdev/inmo/tgbotapi/types/media/TelegramFreeMedia;Ljava/lang/String;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public synthetic fun <init> (Ldev/inmo/tgbotapi/types/ChatIdentifier;JLdev/inmo/tgbotapi/types/media/TelegramFreeMedia;Ljava/lang/String;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun <init> (Ldev/inmo/tgbotapi/types/ChatIdentifier;JLdev/inmo/tgbotapi/types/media/TelegramFreeMedia;Ljava/lang/String;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;Lkotlin/jvm/internal/DefaultConstructorMarker;)V public synthetic fun <init> (Ldev/inmo/tgbotapi/types/ChatIdentifier;JLdev/inmo/tgbotapi/types/media/TelegramFreeMedia;Ljava/lang/String;Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
@@ -3909,8 +3910,11 @@ public final class dev/inmo/tgbotapi/requests/edit/media/EditChatMessageMedia :
public fun equals (Ljava/lang/Object;)Z public fun equals (Ljava/lang/Object;)Z
public fun getBusinessConnectionId-nXr5wdE ()Ljava/lang/String; public fun getBusinessConnectionId-nXr5wdE ()Ljava/lang/String;
public fun getChatId ()Ldev/inmo/tgbotapi/types/ChatIdentifier; public fun getChatId ()Ldev/inmo/tgbotapi/types/ChatIdentifier;
public fun getData ()Ldev/inmo/tgbotapi/requests/abstracts/SimpleRequest;
public fun getMedia ()Ldev/inmo/tgbotapi/types/media/TelegramFreeMedia; public fun getMedia ()Ldev/inmo/tgbotapi/types/media/TelegramFreeMedia;
public fun getMediaMap ()Ljava/util/Map;
public fun getMessageId-APLFQys ()J public fun getMessageId-APLFQys ()J
public fun getParamsJson ()Lkotlinx/serialization/json/JsonObject;
public fun getReplyMarkup ()Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup; public fun getReplyMarkup ()Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardMarkup;
public synthetic fun getReplyMarkup ()Ldev/inmo/tgbotapi/types/buttons/KeyboardMarkup; public synthetic fun getReplyMarkup ()Ldev/inmo/tgbotapi/types/buttons/KeyboardMarkup;
public fun getRequestSerializer ()Lkotlinx/serialization/SerializationStrategy; public fun getRequestSerializer ()Lkotlinx/serialization/SerializationStrategy;

View File

@@ -12,8 +12,8 @@ import kotlinx.serialization.json.Json
@RiskFeature @RiskFeature
fun createTelegramBotDefaultKtorCallRequestsFactories(logger: KSLog? = null) = listOf( fun createTelegramBotDefaultKtorCallRequestsFactories(logger: KSLog? = null) = listOf(
SimpleRequestCallFactory(logger),
MultipartRequestCallFactory(logger), MultipartRequestCallFactory(logger),
SimpleRequestCallFactory(logger),
DownloadFileRequestCallFactory, DownloadFileRequestCallFactory,
DownloadFileChannelRequestCallFactory DownloadFileChannelRequestCallFactory
) )

View File

@@ -9,8 +9,23 @@ import io.ktor.client.HttpClient
import io.ktor.client.request.forms.* import io.ktor.client.request.forms.*
import io.ktor.http.Headers import io.ktor.http.Headers
import io.ktor.http.HttpHeaders import io.ktor.http.HttpHeaders
import kotlinx.serialization.json.Json
class MultipartRequestCallFactory(logger: KSLog? = null) : AbstractRequestCallFactory(logger ?: DefaultKTgBotAPIKSLog) { class MultipartRequestCallFactory(logger: KSLog? = null) : AbstractRequestCallFactory(logger ?: DefaultKTgBotAPIKSLog) {
private val localSimpleRequestCallFactory = SimpleRequestCallFactory(logger)
override suspend fun <T : Any> makeCall(
client: HttpClient,
urlsKeeper: TelegramAPIUrlsKeeper,
request: Request<T>,
jsonFormatter: Json
): T? {
return when (request) {
!is MultipartRequest -> null
is MultipartRequest.Common -> localSimpleRequestCallFactory.makeCall(client, urlsKeeper, request.data, jsonFormatter)
else -> super.makeCall(client, urlsKeeper, request, jsonFormatter)
}
}
override fun <T : Any> prepareCallBody( override fun <T : Any> prepareCallBody(
client: HttpClient, client: HttpClient,
urlsKeeper: TelegramAPIUrlsKeeper, urlsKeeper: TelegramAPIUrlsKeeper,

View File

@@ -1,6 +1,8 @@
package dev.inmo.tgbotapi.requests.edit.media package dev.inmo.tgbotapi.requests.edit.media
import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.abstracts.MultipartFile
import dev.inmo.tgbotapi.requests.abstracts.MultipartRequest
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
import dev.inmo.tgbotapi.requests.edit.abstracts.* import dev.inmo.tgbotapi.requests.edit.abstracts.*
import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.*
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
@@ -27,14 +29,21 @@ data class EditChatMessageMedia(
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId, override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
@SerialName(replyMarkupField) @SerialName(replyMarkupField)
override val replyMarkup: InlineKeyboardMarkup? = null override val replyMarkup: InlineKeyboardMarkup? = null
) : EditChatMessage<MediaContent>, EditReplyMessage, EditMediaMessage { ) : EditChatMessage<MediaContent>, EditReplyMessage, EditMediaMessage, MultipartRequest.Common<ContentMessage<MediaContent>> {
override val data: SimpleRequest<ContentMessage<MediaContent>>
init { get() = this
if (media.file is MultipartFile) { override val mediaMap: Map<String, MultipartFile> by lazy {
throw IllegalArgumentException("For editing of media messages you MUST use file id (according to documentation)") (media.file as? MultipartFile) ?.let {
} mapOf(it.fileId to it)
} ?: emptyMap()
} }
// init {
// if (media.file is MultipartFile) {
// throw IllegalArgumentException("For editing of media messages you MUST use file id (according to documentation)")
// }
// }
override fun method(): String = editMessageMediaMethod override fun method(): String = editMessageMediaMethod
override val resultDeserializer: DeserializationStrategy<ContentMessage<MediaContent>> override val resultDeserializer: DeserializationStrategy<ContentMessage<MediaContent>>
get() = MediaContentMessageResultDeserializer get() = MediaContentMessageResultDeserializer