diff --git a/cache/content/common/src/commonMain/kotlin/dev/inmo/tgbotapi/libraries/cache/media/common/DefaultMessageContentCache.kt b/cache/content/common/src/commonMain/kotlin/dev/inmo/tgbotapi/libraries/cache/media/common/DefaultMessageContentCache.kt index 77907b0..dbc69fa 100644 --- a/cache/content/common/src/commonMain/kotlin/dev/inmo/tgbotapi/libraries/cache/media/common/DefaultMessageContentCache.kt +++ b/cache/content/common/src/commonMain/kotlin/dev/inmo/tgbotapi/libraries/cache/media/common/DefaultMessageContentCache.kt @@ -1,11 +1,15 @@ package dev.inmo.tgbotapi.libraries.cache.media.common import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.DeleteMessage import dev.inmo.tgbotapi.requests.DownloadFileStream +import dev.inmo.tgbotapi.requests.abstracts.MultipartFile import dev.inmo.tgbotapi.requests.get.GetFile import dev.inmo.tgbotapi.requests.send.media.* import dev.inmo.tgbotapi.types.IdChatIdentifier import dev.inmo.tgbotapi.types.media.* +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.message.content.DocumentContent import dev.inmo.tgbotapi.types.message.content.MediaContent import dev.inmo.tgbotapi.types.message.content.MessageContent import dev.inmo.tgbotapi.utils.asInput @@ -58,6 +62,30 @@ class DefaultMessageContentCache( } } + override suspend fun sendAndSave( + k: K, + filename: String, + inputAllocator: () -> Input + ): DocumentContent { + val sentDocument = bot.execute( + SendDocument( + filesRefreshingChatId, + MultipartFile(filename, inputAllocator), + ) + ) + save(k, sentDocument.content, filename, inputAllocator) + runCatching { + bot.execute( + DeleteMessage( + sentDocument.chat.id, + sentDocument.messageId + ) + ) + } + + return sentDocument.content + } + override suspend fun get(k: K): MessageContent? { val savedSimpleContent = simpleMessageContentCache.get(k) ?: return null diff --git a/cache/content/common/src/commonMain/kotlin/dev/inmo/tgbotapi/libraries/cache/media/common/MessageContentCache.kt b/cache/content/common/src/commonMain/kotlin/dev/inmo/tgbotapi/libraries/cache/media/common/MessageContentCache.kt index 9250c81..0d2dfa9 100644 --- a/cache/content/common/src/commonMain/kotlin/dev/inmo/tgbotapi/libraries/cache/media/common/MessageContentCache.kt +++ b/cache/content/common/src/commonMain/kotlin/dev/inmo/tgbotapi/libraries/cache/media/common/MessageContentCache.kt @@ -1,5 +1,7 @@ package dev.inmo.tgbotapi.libraries.cache.media.common +import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage +import dev.inmo.tgbotapi.types.message.content.DocumentContent import dev.inmo.tgbotapi.types.message.content.MediaContent import dev.inmo.tgbotapi.types.message.content.MessageContent import io.ktor.utils.io.core.Input @@ -12,6 +14,11 @@ interface MessageContentCache { filename: String, inputAllocator: suspend () -> Input ) + suspend fun sendAndSave( + k: K, + filename: String, + inputAllocator: () -> Input + ): DocumentContent suspend fun get(k: K): MessageContent? suspend fun contains(k: K): Boolean diff --git a/gradle.properties b/gradle.properties index cb0c0a9..5e1fcc9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -23,4 +23,4 @@ dokka_version=2.0.0 # Project data group=dev.inmo -version=0.26.3 +version=0.26.4