diff --git a/CHANGELOG.md b/CHANGELOG.md index e98bbfd484..de906bdf97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # TelegramBotAPI changelog +## 2.0.3 + +* `Core`: + * New function `regularln` for simple creating of `RegularTextSource` with new line in the end +* `API`: + * New function `downloadFileToTemp` for simple downloading of file in filesystem and manipulation with avoiding of direct using input streams and other low-level things +* `Versions`: + * `MicroUtils`: `0.11.0` -> `0.11.3` + ## 2.0.2 * `Versions`: diff --git a/gradle.properties b/gradle.properties index dedcd0547a..7f7862a783 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,7 @@ korlibs_version=2.7.0 uuid_version=0.4.1 ktor_version=2.0.2 -micro_utils_version=0.11.0 +micro_utils_version=0.11.3 javax_activation_version=1.1.1 @@ -20,6 +20,6 @@ javax_activation_version=1.1.1 dokka_version=1.6.21 library_group=dev.inmo -library_version=2.0.2 +library_version=2.0.3 -github_release_plugin_version=2.3.7 +github_release_plugin_version=2.4.1 diff --git a/tgbotapi.api/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileToTempFile.kt b/tgbotapi.api/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileToTempFile.kt new file mode 100644 index 0000000000..299e9d1ddd --- /dev/null +++ b/tgbotapi.api/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/api/files/DownloadFileToTempFile.kt @@ -0,0 +1,57 @@ +package dev.inmo.tgbotapi.extensions.api.files + +import com.benasher44.uuid.uuid4 +import dev.inmo.micro_utils.common.filename +import dev.inmo.micro_utils.coroutines.doOutsideOfCoroutine +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.extensions.api.get.getFileAdditionalInfo +import dev.inmo.tgbotapi.requests.abstracts.FileId +import dev.inmo.tgbotapi.types.files.PathedFile +import dev.inmo.tgbotapi.types.files.TelegramMediaFile +import dev.inmo.tgbotapi.types.message.content.MediaContent +import dev.inmo.tgbotapi.utils.fileExtension +import io.ktor.util.cio.use +import io.ktor.util.cio.writeChannel +import io.ktor.utils.io.copyTo +import kotlinx.coroutines.job +import java.io.File +import kotlin.coroutines.coroutineContext + +suspend fun TelegramBot.downloadFileToTemp( + filePath: String +): File { + return downloadFile( + filePath, + File.createTempFile(uuid4().toString(), "_temp").apply { + deleteOnExit() + } + ) +} + +suspend fun TelegramBot.downloadFileToTemp( + pathedFile: PathedFile +) = downloadFileToTemp( + pathedFile.filePath +).apply { + runCatching { + renameTo(File(parentFile, "$nameWithoutExtension.${pathedFile.fileName.fileExtension}")) + } +} + +suspend fun TelegramBot.downloadFileToTemp( + fileId: FileId +) = downloadFileToTemp( + getFileAdditionalInfo(fileId) +) + +suspend fun TelegramBot.downloadFileToTemp( + file: TelegramMediaFile +): File = downloadFileToTemp( + getFileAdditionalInfo(file) +) + +suspend fun TelegramBot.downloadFileToTemp( + file: MediaContent +) = downloadFileToTemp( + getFileAdditionalInfo(file.media) +) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/RegularTextSource.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/RegularTextSource.kt index ce6f65b086..4593f54121 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/RegularTextSource.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/textsources/RegularTextSource.kt @@ -18,3 +18,6 @@ data class RegularTextSource @RiskFeature(DirectInvocationOfTextSourceConstructo @Suppress("NOTHING_TO_INLINE") inline fun regular(text: String) = RegularTextSource(text) + +@Suppress("NOTHING_TO_INLINE") +inline fun regularln(text: String) = regular("$text\n")