1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2025-09-03 23:29:33 +00:00

Merge pull request #992 from InsanusMokrassar/27.1.2

27.1.2
This commit is contained in:
2025-08-06 15:59:17 +06:00
committed by GitHub
4 changed files with 21 additions and 16 deletions

View File

@@ -1,5 +1,11 @@
# TelegramBotAPI changelog # TelegramBotAPI changelog
## 27.1.2
* `Core`:
* Try to fix cancelling on timeout for long polling
* Since this update phrase `Something web wrong` will not happen from this library 😭
## 27.1.1 ## 27.1.1
* `Version`: * `Version`:

View File

@@ -9,4 +9,4 @@ kotlin.incremental.js=true
ksp.useKSP2=false ksp.useKSP2=false
library_group=dev.inmo library_group=dev.inmo
library_version=27.1.1 library_version=27.1.2

View File

@@ -13,7 +13,7 @@ import kotlin.coroutines.EmptyCoroutineContext
context(bot: TelegramBot) context(bot: TelegramBot)
fun CoroutineScope.launchWithBotLogger( fun CoroutineScope.launchWithBotLogger(
errorMessageBuilder: CoroutineScope.(Throwable) -> Any = { "Something web wrong" }, errorMessageBuilder: CoroutineScope.(Throwable) -> Any = { "Something went wrong" },
context: CoroutineContext = EmptyCoroutineContext, context: CoroutineContext = EmptyCoroutineContext,
start: CoroutineStart = CoroutineStart.DEFAULT, start: CoroutineStart = CoroutineStart.DEFAULT,
block: suspend CoroutineScope.() -> Unit block: suspend CoroutineScope.() -> Unit
@@ -28,7 +28,7 @@ fun CoroutineScope.launchWithBotLogger(
context(bot: TelegramBot) context(bot: TelegramBot)
fun <T> Flow<T>.subscribeWithBotLogger( fun <T> Flow<T>.subscribeWithBotLogger(
scope: CoroutineScope, scope: CoroutineScope,
errorMessageBuilder: T.(Throwable) -> Any = { "Something web wrong" }, errorMessageBuilder: T.(Throwable) -> Any = { "Something went wrong" },
block: suspend (T) -> Unit block: suspend (T) -> Unit
) = subscribeLoggingDropExceptions ( ) = subscribeLoggingDropExceptions (
scope, scope,

View File

@@ -1,5 +1,6 @@
package dev.inmo.tgbotapi.extensions.utils.updates.retrieving package dev.inmo.tgbotapi.extensions.utils.updates.retrieving
import dev.inmo.kslog.common.logger
import dev.inmo.micro_utils.coroutines.* import dev.inmo.micro_utils.coroutines.*
import dev.inmo.tgbotapi.bot.RequestsExecutor import dev.inmo.tgbotapi.bot.RequestsExecutor
import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.bot.TelegramBot
@@ -107,17 +108,13 @@ fun TelegramBot.longPollingFlow(
lastUpdateIdentifier = update.updateId lastUpdateIdentifier = update.updateId
} }
} }
}.onFailure {
it.causedCancellationException() ?.let {
cancel(it)
}
} }
} }
} }
withContext(contextToWork) { withContext(contextToWork) {
while (isActive) { while (isActive) {
runCatching { runCatchingLogging(logger = Log) {
execute( execute(
GetUpdates( GetUpdates(
offset = lastUpdateIdentifier?.plus(1), offset = lastUpdateIdentifier?.plus(1),
@@ -128,14 +125,16 @@ fun TelegramBot.longPollingFlow(
updatesHandler(originalUpdates) updatesHandler(originalUpdates)
} }
}.onFailure { e -> }.onFailure { e ->
val isHttpRequestTimeoutException = runCatchingLogging(logger = Log) {
e is HttpRequestTimeoutException || (e is CommonBotException && e.cause is HttpRequestTimeoutException) val isHttpRequestTimeoutException =
if (isHttpRequestTimeoutException && autoSkipTimeoutExceptions) { e is HttpRequestTimeoutException || (e is CommonBotException && e.cause is HttpRequestTimeoutException)
return@onFailure if (isHttpRequestTimeoutException && autoSkipTimeoutExceptions) {
} return@onFailure
exceptionsHandler?.invoke(e) }
if (e is RequestException) { exceptionsHandler?.invoke(e)
delay(1000L) if (e is RequestException) {
delay(1000L)
}
} }
} }
} }