mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2026-01-08 22:39:23 +00:00
Compare commits
1 Commits
31.0.0
...
53999509ed
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
53999509ed |
27
CHANGELOG.md
27
CHANGELOG.md
@@ -1,32 +1,5 @@
|
||||
# TelegramBotAPI changelog
|
||||
|
||||
## 31.0.0
|
||||
|
||||
## 30.0.2
|
||||
|
||||
* `Version`:
|
||||
* `Kotlin`: `2.2.20` -> `2.2.21`
|
||||
* `Ktor`: `3.3.1` -> `3.3.2`
|
||||
* `KSP`: `2.2.20-2.0.4` -> `2.3.2`
|
||||
* `MicroUtils`: `0.26.6` -> `0.26.8`
|
||||
* `KSLog`: `1.5.1` -> `1.5.2`
|
||||
* `Core`:
|
||||
* Allow to use `SetWebhook` with `maxAllowedConnections` up to `100000` (fix of [#1019](https://github.com/InsanusMokrassar/ktgbotapi/issues/1019))
|
||||
* `KSP`:
|
||||
* Fixed annotation property access for KSP2 compatibility using `withNoSuchElementWorkaround`
|
||||
* Removed `ksp.useKSP2=false` workaround from `gradle.properties` (KSP2 is now properly supported)
|
||||
* `Utils`:
|
||||
* Regenerated class casts extensions
|
||||
* Allow to use custom `GetUpdates` in `longPollingFlow`
|
||||
|
||||
## 30.0.1
|
||||
|
||||
* `Core`:
|
||||
* Potential fix of [#989](https://github.com/InsanusMokrassar/ktgbotapi/issues/989) by:
|
||||
* In long polling have been added check for causing by unresolved address exception
|
||||
* Add `TelegramBotPipelinesHandler.onRequestExceptionInLimiter` which will be triggered in ANY exception during
|
||||
request execution
|
||||
|
||||
## 30.0.0
|
||||
|
||||
**THIS UPDATE MAY CONTAINS BREAKING CHANGES**
|
||||
|
||||
@@ -5,5 +5,8 @@ kotlin.js.generate.externals=true
|
||||
kotlin.incremental=true
|
||||
kotlin.incremental.js=true
|
||||
|
||||
# https://github.com/google/ksp/issues/2491
|
||||
ksp.useKSP2=false
|
||||
|
||||
library_group=dev.inmo
|
||||
library_version=31.0.0
|
||||
library_version=30.0.0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[versions]
|
||||
|
||||
kotlin = "2.2.21"
|
||||
kotlin = "2.2.20"
|
||||
kotlin-serialization = "1.9.0"
|
||||
kotlin-coroutines = "1.10.2"
|
||||
|
||||
@@ -10,11 +10,11 @@ korlibs = "5.4.0"
|
||||
uuid = "0.8.4"
|
||||
ktor = "3.3.2"
|
||||
|
||||
ksp = "2.3.2"
|
||||
ksp = "2.2.20-2.0.4"
|
||||
kotlin-poet = "2.2.0"
|
||||
|
||||
microutils = "0.26.8"
|
||||
kslog = "1.5.2"
|
||||
microutils = "0.26.6"
|
||||
kslog = "1.5.1"
|
||||
|
||||
versions = "0.53.0"
|
||||
|
||||
|
||||
@@ -513,7 +513,6 @@ public final class dev/inmo/tgbotapi/extensions/api/chat/get/GetChatKt {
|
||||
public static final fun getChat (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/types/chat/GroupChatImpl;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public static final fun getChat (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/types/chat/PrivateChat;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public static final fun getChat (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/types/chat/PrivateChatImpl;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public static final fun getChat (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/types/chat/PrivateForumChatImpl;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public static final fun getChat (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/types/chat/PublicChat;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public static final fun getChat (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/types/chat/SupergroupChat;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public static final fun getChat (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/types/chat/SupergroupChatImpl;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
|
||||
@@ -117,17 +117,6 @@ public suspend fun TelegramBot.getChat(
|
||||
chat: PrivateChatImpl
|
||||
): ExtendedPrivateChatImpl = getChat(chat.id) as ExtendedPrivateChatImpl
|
||||
|
||||
/**
|
||||
* Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a
|
||||
* [ExtendedPrivateForumChatImpl] with unsafe operator "as"
|
||||
*
|
||||
* @throws ClassCastException
|
||||
*/
|
||||
@PreviewFeature
|
||||
public suspend fun TelegramBot.getChat(
|
||||
chat: PrivateForumChatImpl
|
||||
): ExtendedPrivateForumChatImpl = getChat(chat.id) as ExtendedPrivateForumChatImpl
|
||||
|
||||
/**
|
||||
* Will cast incoming [dev.inmo.tgbotapi.types.chat.ExtendedChat] to a
|
||||
* [ExtendedUser] with unsafe operator "as"
|
||||
|
||||
@@ -397,7 +397,6 @@ public abstract interface class dev/inmo/tgbotapi/bot/ktor/TelegramBotPipelinesH
|
||||
public fun onBeforeCallFactoryMakeCall (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ldev/inmo/tgbotapi/bot/ktor/KtorCallFactory;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onBeforeSearchCallFactory (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestException (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/lang/Throwable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestExceptionInLimiter (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/lang/Throwable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestResultAbsent (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestResultPresented (Ljava/lang/Object;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ldev/inmo/tgbotapi/bot/ktor/KtorCallFactory;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestReturnResult-3t6e044 (Ljava/lang/Object;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
@@ -408,7 +407,6 @@ public final class dev/inmo/tgbotapi/bot/ktor/TelegramBotPipelinesHandler$Compan
|
||||
public fun onBeforeCallFactoryMakeCall (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ldev/inmo/tgbotapi/bot/ktor/KtorCallFactory;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onBeforeSearchCallFactory (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestException (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/lang/Throwable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestExceptionInLimiter (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/lang/Throwable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestResultAbsent (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestResultPresented (Ljava/lang/Object;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ldev/inmo/tgbotapi/bot/ktor/KtorCallFactory;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestReturnResult-3t6e044 (Ljava/lang/Object;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
@@ -419,7 +417,6 @@ public final class dev/inmo/tgbotapi/bot/ktor/TelegramBotPipelinesHandler$Defaul
|
||||
public static fun onBeforeCallFactoryMakeCall (Ldev/inmo/tgbotapi/bot/ktor/TelegramBotPipelinesHandler;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ldev/inmo/tgbotapi/bot/ktor/KtorCallFactory;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public static fun onBeforeSearchCallFactory (Ldev/inmo/tgbotapi/bot/ktor/TelegramBotPipelinesHandler;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public static fun onRequestException (Ldev/inmo/tgbotapi/bot/ktor/TelegramBotPipelinesHandler;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/lang/Throwable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public static fun onRequestExceptionInLimiter (Ldev/inmo/tgbotapi/bot/ktor/TelegramBotPipelinesHandler;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/lang/Throwable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public static fun onRequestResultAbsent (Ldev/inmo/tgbotapi/bot/ktor/TelegramBotPipelinesHandler;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public static fun onRequestResultPresented (Ldev/inmo/tgbotapi/bot/ktor/TelegramBotPipelinesHandler;Ljava/lang/Object;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ldev/inmo/tgbotapi/bot/ktor/KtorCallFactory;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public static fun onRequestReturnResult-3t6e044 (Ldev/inmo/tgbotapi/bot/ktor/TelegramBotPipelinesHandler;Ljava/lang/Object;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
@@ -478,14 +475,13 @@ public final class dev/inmo/tgbotapi/bot/ktor/base/SimpleRequestCallFactory : de
|
||||
public class dev/inmo/tgbotapi/bot/ktor/middlewares/TelegramBotMiddleware : dev/inmo/tgbotapi/bot/ktor/TelegramBotPipelinesHandler {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/bot/ktor/middlewares/TelegramBotMiddleware$Companion;
|
||||
public fun <init> ()V
|
||||
public fun <init> (Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function4;Lkotlin/jvm/functions/Function5;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function4;Lkotlin/jvm/functions/Function3;Ljava/lang/String;)V
|
||||
public synthetic fun <init> (Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function4;Lkotlin/jvm/functions/Function5;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function4;Lkotlin/jvm/functions/Function3;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public fun <init> (Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function4;Lkotlin/jvm/functions/Function5;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function4;Ljava/lang/String;)V
|
||||
public synthetic fun <init> (Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function4;Lkotlin/jvm/functions/Function5;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function4;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun getId ()Ljava/lang/String;
|
||||
public fun onAfterCallFactoryMakeCall (Ljava/lang/Object;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ldev/inmo/tgbotapi/bot/ktor/KtorCallFactory;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onBeforeCallFactoryMakeCall (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ldev/inmo/tgbotapi/bot/ktor/KtorCallFactory;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onBeforeSearchCallFactory (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestException (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/lang/Throwable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestExceptionInLimiter (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/lang/Throwable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestResultAbsent (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestResultPresented (Ljava/lang/Object;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ldev/inmo/tgbotapi/bot/ktor/KtorCallFactory;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestReturnResult-3t6e044 (Ljava/lang/Object;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
@@ -507,7 +503,6 @@ public final class dev/inmo/tgbotapi/bot/ktor/middlewares/TelegramBotMiddlewareB
|
||||
public final fun doOnBeforeCallFactoryMakeCall (Lkotlin/jvm/functions/Function3;)V
|
||||
public final fun doOnBeforeSearchCallFactory (Lkotlin/jvm/functions/Function3;)V
|
||||
public final fun doOnRequestException (Lkotlin/jvm/functions/Function3;)V
|
||||
public final fun doOnRequestExceptionInLimiter (Lkotlin/jvm/functions/Function3;)V
|
||||
public final fun doOnRequestResultAbsent (Lkotlin/jvm/functions/Function3;)V
|
||||
public final fun doOnRequestResultPresented (Lkotlin/jvm/functions/Function5;)V
|
||||
public final fun doOnRequestReturnResult (Lkotlin/jvm/functions/Function4;)V
|
||||
@@ -516,7 +511,6 @@ public final class dev/inmo/tgbotapi/bot/ktor/middlewares/TelegramBotMiddlewareB
|
||||
public final fun getOnBeforeCallFactoryMakeCall ()Lkotlin/jvm/functions/Function3;
|
||||
public final fun getOnBeforeSearchCallFactory ()Lkotlin/jvm/functions/Function3;
|
||||
public final fun getOnRequestException ()Lkotlin/jvm/functions/Function3;
|
||||
public final fun getOnRequestExceptionInLimiter ()Lkotlin/jvm/functions/Function3;
|
||||
public final fun getOnRequestResultAbsent ()Lkotlin/jvm/functions/Function3;
|
||||
public final fun getOnRequestResultPresented ()Lkotlin/jvm/functions/Function5;
|
||||
public final fun getOnRequestReturnResult ()Lkotlin/jvm/functions/Function4;
|
||||
@@ -525,7 +519,6 @@ public final class dev/inmo/tgbotapi/bot/ktor/middlewares/TelegramBotMiddlewareB
|
||||
public final fun setOnBeforeCallFactoryMakeCall (Lkotlin/jvm/functions/Function3;)V
|
||||
public final fun setOnBeforeSearchCallFactory (Lkotlin/jvm/functions/Function3;)V
|
||||
public final fun setOnRequestException (Lkotlin/jvm/functions/Function3;)V
|
||||
public final fun setOnRequestExceptionInLimiter (Lkotlin/jvm/functions/Function3;)V
|
||||
public final fun setOnRequestResultAbsent (Lkotlin/jvm/functions/Function3;)V
|
||||
public final fun setOnRequestResultPresented (Lkotlin/jvm/functions/Function5;)V
|
||||
public final fun setOnRequestReturnResult (Lkotlin/jvm/functions/Function4;)V
|
||||
@@ -544,7 +537,6 @@ public final class dev/inmo/tgbotapi/bot/ktor/middlewares/TelegramBotMiddlewares
|
||||
public fun onBeforeCallFactoryMakeCall (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ldev/inmo/tgbotapi/bot/ktor/KtorCallFactory;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onBeforeSearchCallFactory (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestException (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/lang/Throwable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestExceptionInLimiter (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/lang/Throwable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestResultAbsent (Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestResultPresented (Ljava/lang/Object;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ldev/inmo/tgbotapi/bot/ktor/KtorCallFactory;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
public fun onRequestReturnResult-3t6e044 (Ljava/lang/Object;Ldev/inmo/tgbotapi/requests/abstracts/Request;Ljava/util/List;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
|
||||
@@ -10654,7 +10646,6 @@ public final class dev/inmo/tgbotapi/types/CommonKt {
|
||||
public static final field yShiftField Ljava/lang/String;
|
||||
public static final field yearField Ljava/lang/String;
|
||||
public static final fun getAllowedConnectionsLength ()Lkotlin/ranges/IntRange;
|
||||
public static final fun getAllowedConnectionsWithLocalServerLength ()Lkotlin/ranges/IntRange;
|
||||
public static final fun getBasketballAndFootballDiceResultLimit ()Lkotlin/ranges/IntRange;
|
||||
public static final fun getBotCommandDescriptionLimit ()Lkotlin/ranges/IntRange;
|
||||
public static final fun getBotCommandLengthLimit ()Lkotlin/ranges/IntRange;
|
||||
@@ -17200,7 +17191,7 @@ public final class dev/inmo/tgbotapi/types/chat/ExtendedChatWithUsername$Default
|
||||
public static fun isDirectMessages (Ldev/inmo/tgbotapi/types/chat/ExtendedChatWithUsername;)Z
|
||||
}
|
||||
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/ExtendedForumChat : dev/inmo/tgbotapi/types/chat/ExtendedSupergroupChat, dev/inmo/tgbotapi/types/chat/SupergroupForumChat {
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/ExtendedForumChat : dev/inmo/tgbotapi/types/chat/ExtendedSupergroupChat, dev/inmo/tgbotapi/types/chat/ForumChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/ExtendedForumChat$Companion;
|
||||
}
|
||||
|
||||
@@ -17395,7 +17386,7 @@ public final class dev/inmo/tgbotapi/types/chat/ExtendedNonBotChat$DefaultImpls
|
||||
public static fun isDirectMessages (Ldev/inmo/tgbotapi/types/chat/ExtendedNonBotChat;)Z
|
||||
}
|
||||
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/ExtendedPrivateChat : dev/inmo/tgbotapi/types/chat/ExtendedChatWithUsername, dev/inmo/tgbotapi/types/chat/ExtendedNonBotChat, dev/inmo/tgbotapi/types/chat/PrivateUserChat {
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/ExtendedPrivateChat : dev/inmo/tgbotapi/types/chat/ExtendedChatWithUsername, dev/inmo/tgbotapi/types/chat/ExtendedNonBotChat, dev/inmo/tgbotapi/types/chat/PrivateChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateChat$Companion;
|
||||
public fun getAllowCreateUserIdLink ()Z
|
||||
public abstract fun getBio ()Ljava/lang/String;
|
||||
@@ -17492,94 +17483,6 @@ public final class dev/inmo/tgbotapi/types/chat/ExtendedPrivateChatImpl$Companio
|
||||
public final fun serializer ()Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChat : dev/inmo/tgbotapi/types/chat/ExtendedPrivateChat, dev/inmo/tgbotapi/types/chat/PrivateForumChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChat$Companion;
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChat$Companion {
|
||||
public final fun serializer ()Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChat$DefaultImpls {
|
||||
public static fun getAllowCreateUserIdLink (Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChat;)Z
|
||||
public static fun getCanReceiveGifts (Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChat;)Z
|
||||
public static fun isDirectMessages (Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChat;)Z
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChatImpl : dev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChatImpl$Companion;
|
||||
public synthetic fun <init> (JLdev/inmo/tgbotapi/types/ChatPhoto;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZLjava/lang/String;Ldev/inmo/tgbotapi/types/TelegramDate;ILdev/inmo/tgbotapi/types/colors/ColorId;Ljava/lang/String;Ljava/lang/String;Ldev/inmo/tgbotapi/types/business_connection/BusinessIntro;Ldev/inmo/tgbotapi/types/business_connection/BusinessLocation;Ldev/inmo/tgbotapi/types/business_connection/BusinessOpeningHours;Ldev/inmo/tgbotapi/types/Birthdate;Ldev/inmo/tgbotapi/types/chat/PreviewChannelChat;ILdev/inmo/tgbotapi/types/gifts/AcceptedGiftTypes;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public synthetic fun <init> (JLdev/inmo/tgbotapi/types/ChatPhoto;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZLjava/lang/String;Ldev/inmo/tgbotapi/types/TelegramDate;ILdev/inmo/tgbotapi/types/colors/ColorId;Ljava/lang/String;Ljava/lang/String;Ldev/inmo/tgbotapi/types/business_connection/BusinessIntro;Ldev/inmo/tgbotapi/types/business_connection/BusinessLocation;Ldev/inmo/tgbotapi/types/business_connection/BusinessOpeningHours;Ldev/inmo/tgbotapi/types/Birthdate;Ldev/inmo/tgbotapi/types/chat/PreviewChannelChat;ILdev/inmo/tgbotapi/types/gifts/AcceptedGiftTypes;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun component1-tHkBKVM ()J
|
||||
public final fun component10-GbmMWyQ ()Ljava/lang/String;
|
||||
public final fun component11 ()Ldev/inmo/tgbotapi/types/TelegramDate;
|
||||
public final fun component12-f3WtEc0 ()I
|
||||
public final fun component13-mg_h9nU ()Ldev/inmo/tgbotapi/types/colors/ColorId;
|
||||
public final fun component14-GbmMWyQ ()Ljava/lang/String;
|
||||
public final fun component15-GbmMWyQ ()Ljava/lang/String;
|
||||
public final fun component16 ()Ldev/inmo/tgbotapi/types/business_connection/BusinessIntro;
|
||||
public final fun component17 ()Ldev/inmo/tgbotapi/types/business_connection/BusinessLocation;
|
||||
public final fun component18 ()Ldev/inmo/tgbotapi/types/business_connection/BusinessOpeningHours;
|
||||
public final fun component19 ()Ldev/inmo/tgbotapi/types/Birthdate;
|
||||
public final fun component2 ()Ldev/inmo/tgbotapi/types/ChatPhoto;
|
||||
public final fun component20 ()Ldev/inmo/tgbotapi/types/chat/PreviewChannelChat;
|
||||
public final fun component21 ()I
|
||||
public final fun component22 ()Ldev/inmo/tgbotapi/types/gifts/AcceptedGiftTypes;
|
||||
public final fun component3-san03mo ()Ljava/lang/String;
|
||||
public final fun component4 ()Ljava/util/List;
|
||||
public final fun component5 ()Ljava/lang/String;
|
||||
public final fun component6 ()Ljava/lang/String;
|
||||
public final fun component7 ()Ljava/lang/String;
|
||||
public final fun component8 ()Z
|
||||
public final fun component9 ()Z
|
||||
public final fun copy-5RSODus (JLdev/inmo/tgbotapi/types/ChatPhoto;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZLjava/lang/String;Ldev/inmo/tgbotapi/types/TelegramDate;ILdev/inmo/tgbotapi/types/colors/ColorId;Ljava/lang/String;Ljava/lang/String;Ldev/inmo/tgbotapi/types/business_connection/BusinessIntro;Ldev/inmo/tgbotapi/types/business_connection/BusinessLocation;Ldev/inmo/tgbotapi/types/business_connection/BusinessOpeningHours;Ldev/inmo/tgbotapi/types/Birthdate;Ldev/inmo/tgbotapi/types/chat/PreviewChannelChat;ILdev/inmo/tgbotapi/types/gifts/AcceptedGiftTypes;)Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChatImpl;
|
||||
public static synthetic fun copy-5RSODus$default (Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChatImpl;JLdev/inmo/tgbotapi/types/ChatPhoto;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZLjava/lang/String;Ldev/inmo/tgbotapi/types/TelegramDate;ILdev/inmo/tgbotapi/types/colors/ColorId;Ljava/lang/String;Ljava/lang/String;Ldev/inmo/tgbotapi/types/business_connection/BusinessIntro;Ldev/inmo/tgbotapi/types/business_connection/BusinessLocation;Ldev/inmo/tgbotapi/types/business_connection/BusinessOpeningHours;Ldev/inmo/tgbotapi/types/Birthdate;Ldev/inmo/tgbotapi/types/chat/PreviewChannelChat;ILdev/inmo/tgbotapi/types/gifts/AcceptedGiftTypes;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChatImpl;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public fun getAccentColorId-f3WtEc0 ()I
|
||||
public fun getAcceptedGiftTypes ()Ldev/inmo/tgbotapi/types/gifts/AcceptedGiftTypes;
|
||||
public fun getActiveUsernames ()Ljava/util/List;
|
||||
public fun getAllowCreateUserIdLink ()Z
|
||||
public fun getBackgroundCustomEmojiId-GbmMWyQ ()Ljava/lang/String;
|
||||
public fun getBio ()Ljava/lang/String;
|
||||
public fun getBirthdate ()Ldev/inmo/tgbotapi/types/Birthdate;
|
||||
public fun getBusinessIntro ()Ldev/inmo/tgbotapi/types/business_connection/BusinessIntro;
|
||||
public fun getBusinessLocation ()Ldev/inmo/tgbotapi/types/business_connection/BusinessLocation;
|
||||
public fun getBusinessOpeningHours ()Ldev/inmo/tgbotapi/types/business_connection/BusinessOpeningHours;
|
||||
public fun getCanReceiveGifts ()Z
|
||||
public fun getChatPhoto ()Ldev/inmo/tgbotapi/types/ChatPhoto;
|
||||
public fun getFirstName ()Ljava/lang/String;
|
||||
public fun getHasPrivateForwards ()Z
|
||||
public fun getHasRestrictedVoiceAndVideoMessages ()Z
|
||||
public synthetic fun getId ()Ldev/inmo/tgbotapi/types/IdChatIdentifier;
|
||||
public fun getId-tHkBKVM ()J
|
||||
public fun getLastName ()Ljava/lang/String;
|
||||
public fun getMaxReactionsCount ()I
|
||||
public fun getPersonalChat ()Ldev/inmo/tgbotapi/types/chat/PreviewChannelChat;
|
||||
public fun getProfileAccentColorId-mg_h9nU ()Ldev/inmo/tgbotapi/types/colors/ColorId;
|
||||
public fun getProfileBackgroundCustomEmojiId-GbmMWyQ ()Ljava/lang/String;
|
||||
public fun getStatusEmojiExpiration ()Ldev/inmo/tgbotapi/types/TelegramDate;
|
||||
public fun getStatusEmojiId-GbmMWyQ ()Ljava/lang/String;
|
||||
public fun getUsername-san03mo ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun isDirectMessages ()Z
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final synthetic class dev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChatImpl$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
|
||||
public static final field INSTANCE Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChatImpl$$serializer;
|
||||
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
|
||||
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChatImpl;
|
||||
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
|
||||
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
|
||||
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChatImpl;)V
|
||||
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
|
||||
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChatImpl$Companion {
|
||||
public final fun serializer ()Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/ExtendedPublicChat : dev/inmo/tgbotapi/types/chat/ExtendedChat, dev/inmo/tgbotapi/types/chat/ExtendedNonBotChat, dev/inmo/tgbotapi/types/chat/PublicChat {
|
||||
public abstract fun getAvailableReactions ()Ljava/util/List;
|
||||
public abstract fun getDescription ()Ljava/lang/String;
|
||||
@@ -17706,7 +17609,7 @@ public final class dev/inmo/tgbotapi/types/chat/ExtendedSupergroupChatImpl$Compa
|
||||
public final fun serializer ()Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/ForumChat : dev/inmo/tgbotapi/types/chat/Chat {
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/ForumChat : dev/inmo/tgbotapi/types/chat/SupergroupChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/ForumChat$Companion;
|
||||
}
|
||||
|
||||
@@ -17807,7 +17710,7 @@ public final class dev/inmo/tgbotapi/types/chat/PossiblyPremiumChat$DefaultImpls
|
||||
public static fun isDirectMessages (Ldev/inmo/tgbotapi/types/chat/PossiblyPremiumChat;)Z
|
||||
}
|
||||
|
||||
public abstract class dev/inmo/tgbotapi/types/chat/PreviewBot : dev/inmo/tgbotapi/types/chat/User, dev/inmo/tgbotapi/types/chat/PreviewChat, dev/inmo/tgbotapi/types/chat/PrivateChat {
|
||||
public abstract class dev/inmo/tgbotapi/types/chat/PreviewBot : dev/inmo/tgbotapi/types/chat/PreviewUser {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/PreviewBot$Companion;
|
||||
}
|
||||
|
||||
@@ -17872,7 +17775,7 @@ public final class dev/inmo/tgbotapi/types/chat/PreviewChatSerializer : kotlinx/
|
||||
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
|
||||
}
|
||||
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/PreviewForumChat : dev/inmo/tgbotapi/types/chat/PreviewSupergroupChat, dev/inmo/tgbotapi/types/chat/SupergroupForumChat {
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/PreviewForumChat : dev/inmo/tgbotapi/types/chat/ForumChat, dev/inmo/tgbotapi/types/chat/PreviewSupergroupChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/PreviewForumChat$Companion;
|
||||
}
|
||||
|
||||
@@ -17896,7 +17799,7 @@ public final class dev/inmo/tgbotapi/types/chat/PreviewGroupChat$DefaultImpls {
|
||||
public static fun isDirectMessages (Ldev/inmo/tgbotapi/types/chat/PreviewGroupChat;)Z
|
||||
}
|
||||
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/PreviewPrivateChat : dev/inmo/tgbotapi/types/chat/PreviewUsernameChat, dev/inmo/tgbotapi/types/chat/PrivateUserChat {
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/PreviewPrivateChat : dev/inmo/tgbotapi/types/chat/PreviewUsernameChat, dev/inmo/tgbotapi/types/chat/PrivateChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/PreviewPrivateChat$Companion;
|
||||
}
|
||||
|
||||
@@ -17908,18 +17811,6 @@ public final class dev/inmo/tgbotapi/types/chat/PreviewPrivateChat$DefaultImpls
|
||||
public static fun isDirectMessages (Ldev/inmo/tgbotapi/types/chat/PreviewPrivateChat;)Z
|
||||
}
|
||||
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/PreviewPrivateForumChat : dev/inmo/tgbotapi/types/chat/PreviewPrivateChat, dev/inmo/tgbotapi/types/chat/PrivateForumChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/PreviewPrivateForumChat$Companion;
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/PreviewPrivateForumChat$Companion {
|
||||
public final fun serializer ()Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/PreviewPrivateForumChat$DefaultImpls {
|
||||
public static fun isDirectMessages (Ldev/inmo/tgbotapi/types/chat/PreviewPrivateForumChat;)Z
|
||||
}
|
||||
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/PreviewPublicChat : dev/inmo/tgbotapi/types/chat/PreviewChat, dev/inmo/tgbotapi/types/chat/PublicChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/PreviewPublicChat$Companion;
|
||||
}
|
||||
@@ -18027,66 +17918,6 @@ public final class dev/inmo/tgbotapi/types/chat/PrivateChatImpl$Companion {
|
||||
public final fun serializer ()Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/PrivateForumChat : dev/inmo/tgbotapi/types/chat/ForumChat, dev/inmo/tgbotapi/types/chat/PrivateUserChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/PrivateForumChat$Companion;
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/PrivateForumChat$Companion {
|
||||
public final fun serializer ()Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/PrivateForumChat$DefaultImpls {
|
||||
public static fun isDirectMessages (Ldev/inmo/tgbotapi/types/chat/PrivateForumChat;)Z
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/PrivateForumChatImpl : dev/inmo/tgbotapi/types/chat/PreviewPrivateForumChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/PrivateForumChatImpl$Companion;
|
||||
public synthetic fun <init> (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public synthetic fun <init> (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
|
||||
public final fun component1-tHkBKVM ()J
|
||||
public final fun component2-san03mo ()Ljava/lang/String;
|
||||
public final fun component3 ()Ljava/lang/String;
|
||||
public final fun component4 ()Ljava/lang/String;
|
||||
public final fun copy-55YrAcc (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ldev/inmo/tgbotapi/types/chat/PrivateForumChatImpl;
|
||||
public static synthetic fun copy-55YrAcc$default (Ldev/inmo/tgbotapi/types/chat/PrivateForumChatImpl;JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Ldev/inmo/tgbotapi/types/chat/PrivateForumChatImpl;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public fun getFirstName ()Ljava/lang/String;
|
||||
public synthetic fun getId ()Ldev/inmo/tgbotapi/types/IdChatIdentifier;
|
||||
public fun getId-tHkBKVM ()J
|
||||
public fun getLastName ()Ljava/lang/String;
|
||||
public fun getUsername-san03mo ()Ljava/lang/String;
|
||||
public fun hashCode ()I
|
||||
public fun isDirectMessages ()Z
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final synthetic class dev/inmo/tgbotapi/types/chat/PrivateForumChatImpl$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
|
||||
public static final field INSTANCE Ldev/inmo/tgbotapi/types/chat/PrivateForumChatImpl$$serializer;
|
||||
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
|
||||
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ldev/inmo/tgbotapi/types/chat/PrivateForumChatImpl;
|
||||
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
|
||||
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
|
||||
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Ldev/inmo/tgbotapi/types/chat/PrivateForumChatImpl;)V
|
||||
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
|
||||
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/PrivateForumChatImpl$Companion {
|
||||
public final fun serializer ()Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/PrivateUserChat : dev/inmo/tgbotapi/types/chat/PrivateChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/PrivateUserChat$Companion;
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/PrivateUserChat$Companion {
|
||||
public final fun serializer ()Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/PrivateUserChat$DefaultImpls {
|
||||
public static fun isDirectMessages (Ldev/inmo/tgbotapi/types/chat/PrivateUserChat;)Z
|
||||
}
|
||||
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/PublicChat : dev/inmo/tgbotapi/types/chat/Chat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/PublicChat$Companion;
|
||||
public abstract fun getTitle ()Ljava/lang/String;
|
||||
@@ -18158,18 +17989,6 @@ public final class dev/inmo/tgbotapi/types/chat/SupergroupChatImpl$Companion {
|
||||
public final fun serializer ()Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/SupergroupForumChat : dev/inmo/tgbotapi/types/chat/ForumChat, dev/inmo/tgbotapi/types/chat/SupergroupChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/SupergroupForumChat$Companion;
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/SupergroupForumChat$Companion {
|
||||
public final fun serializer ()Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/SupergroupForumChat$DefaultImpls {
|
||||
public static fun isDirectMessages (Ldev/inmo/tgbotapi/types/chat/SupergroupForumChat;)Z
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/types/chat/UnknownChatType : dev/inmo/tgbotapi/types/chat/Chat, dev/inmo/tgbotapi/types/chat/PreviewChat {
|
||||
public fun <init> (Ldev/inmo/tgbotapi/types/IdChatIdentifier;Ljava/lang/String;Lkotlinx/serialization/json/JsonObject;)V
|
||||
public final fun component1 ()Ldev/inmo/tgbotapi/types/IdChatIdentifier;
|
||||
@@ -32084,16 +31903,6 @@ public final class dev/inmo/tgbotapi/utils/CausedByCancellationKt {
|
||||
public static final fun isCausedByCancellation (Ljava/lang/Throwable;)Z
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/utils/CausedByKt {
|
||||
public static final fun causedBy (Ljava/lang/Throwable;Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function1;)Ljava/lang/Throwable;
|
||||
public static synthetic fun causedBy$default (Ljava/lang/Throwable;Lkotlin/reflect/KClass;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/Throwable;
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/utils/CausedByUnresolvedAddressExceptionKt {
|
||||
public static final fun causedUnresolvedAddressException (Ljava/lang/Throwable;)Ljava/nio/channels/UnresolvedAddressException;
|
||||
public static final fun isCausedUnresolvedAddressException (Ljava/lang/Throwable;)Z
|
||||
}
|
||||
|
||||
public final class dev/inmo/tgbotapi/utils/DefaultKSLogKt {
|
||||
public static final fun SetDefaultKTgBotAPIKSLog (ZLkotlin/jvm/functions/Function1;)V
|
||||
public static synthetic fun SetDefaultKTgBotAPIKSLog$default (ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)V
|
||||
|
||||
@@ -3,24 +3,9 @@ package dev.inmo.tgbotapi.bot.ktor
|
||||
import dev.inmo.tgbotapi.requests.abstracts.Request
|
||||
|
||||
interface TelegramBotPipelinesHandler {
|
||||
/**
|
||||
* Will be called when any exception will happen due to the [request] handling inside of limiter block. This method
|
||||
* will be called for each exception happened during call factory call
|
||||
*/
|
||||
suspend fun <T: Any> onRequestExceptionInLimiter(
|
||||
request: Request<T>,
|
||||
t: Throwable
|
||||
): T? = null
|
||||
|
||||
/**
|
||||
* Will be called when any exception will happen due to the [request] handling. If returns value - that value
|
||||
* will be returned from [dev.inmo.tgbotapi.bot.RequestsExecutor.execute] instead. In difference with
|
||||
* [onRequestExceptionInLimiter], this method will be called only AFTER
|
||||
* [dev.inmo.tgbotapi.bot.settings.limiters.RequestLimiter] will pass result of call factory execution outside of
|
||||
* its [dev.inmo.tgbotapi.bot.settings.limiters.RequestLimiter.limit] function
|
||||
*
|
||||
* @see dev.inmo.tgbotapi.bot.ktor.base.DefaultKtorRequestsExecutor
|
||||
* @see dev.inmo.tgbotapi.bot.settings.limiters.ExceptionsOnlyLimiter
|
||||
* will be returned from [dev.inmo.tgbotapi.bot.RequestsExecutor.execute] instead
|
||||
*/
|
||||
suspend fun <T: Any> onRequestException(
|
||||
request: Request<T>,
|
||||
|
||||
@@ -53,33 +53,29 @@ class DefaultKtorRequestsExecutor internal constructor(
|
||||
logger.v { "Start request $request" }
|
||||
pipelineStepsHolder.onBeforeSearchCallFactory(request, callsFactories)
|
||||
requestsLimiter.limit(request) {
|
||||
runCatching {
|
||||
var result: T? = null
|
||||
lateinit var factoryHandledRequest: KtorCallFactory
|
||||
for (potentialFactory in callsFactories) {
|
||||
pipelineStepsHolder.onBeforeCallFactoryMakeCall(request, potentialFactory)
|
||||
logger.v { "Trying factory $potentialFactory for $request" }
|
||||
val resultFromFactory = potentialFactory.makeCall(
|
||||
client,
|
||||
telegramAPIUrlsKeeper,
|
||||
request,
|
||||
jsonFormatter
|
||||
)
|
||||
logger.v { "Result of factory $potentialFactory handling $request: $resultFromFactory" }
|
||||
result = pipelineStepsHolder.onAfterCallFactoryMakeCall(resultFromFactory, request, potentialFactory)
|
||||
logger.v { "Result of pipeline $pipelineStepsHolder handling $resultFromFactory: $result" }
|
||||
if (result != null) {
|
||||
factoryHandledRequest = potentialFactory
|
||||
break
|
||||
}
|
||||
var result: T? = null
|
||||
lateinit var factoryHandledRequest: KtorCallFactory
|
||||
for (potentialFactory in callsFactories) {
|
||||
pipelineStepsHolder.onBeforeCallFactoryMakeCall(request, potentialFactory)
|
||||
logger.v { "Trying factory $potentialFactory for $request" }
|
||||
val resultFromFactory = potentialFactory.makeCall(
|
||||
client,
|
||||
telegramAPIUrlsKeeper,
|
||||
request,
|
||||
jsonFormatter
|
||||
)
|
||||
logger.v { "Result of factory $potentialFactory handling $request: $resultFromFactory" }
|
||||
result = pipelineStepsHolder.onAfterCallFactoryMakeCall(resultFromFactory, request, potentialFactory)
|
||||
logger.v { "Result of pipeline $pipelineStepsHolder handling $resultFromFactory: $result" }
|
||||
if (result != null) {
|
||||
factoryHandledRequest = potentialFactory
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
result ?.let {
|
||||
pipelineStepsHolder.onRequestResultPresented(it, request, factoryHandledRequest, callsFactories)
|
||||
} ?: pipelineStepsHolder.onRequestResultAbsent(request, callsFactories) ?: error("Can't execute request: $request")
|
||||
}.onFailure { e ->
|
||||
pipelineStepsHolder.onRequestExceptionInLimiter(request, e) ?.let { return@let it } ?: throw e
|
||||
}.getOrThrow()
|
||||
result ?.let {
|
||||
pipelineStepsHolder.onRequestResultPresented(it, request, factoryHandledRequest, callsFactories)
|
||||
} ?: pipelineStepsHolder.onRequestResultAbsent(request, callsFactories) ?: error("Can't execute request: $request")
|
||||
}
|
||||
}.let {
|
||||
val result = it.exceptionOrNull() ?.let { e ->
|
||||
|
||||
@@ -31,16 +31,9 @@ open class TelegramBotMiddleware(
|
||||
internal val onRequestResultPresented: (suspend (result: Any, request: Request<*>, resultCallFactory: KtorCallFactory, callsFactories: List<KtorCallFactory>) -> Any?)? = null,
|
||||
internal val onRequestResultAbsent: (suspend (request: Request<*>, callsFactories: List<KtorCallFactory>) -> Any?)? = null,
|
||||
internal val onRequestReturnResult: (suspend (result: Result<*>, request: Request<*>, callsFactories: List<KtorCallFactory>) -> Result<Any?>?)? = null,
|
||||
internal val onRequestExceptionInLimiter: (suspend (request: Request<*>, t: Throwable?) -> Any?)? = null,
|
||||
val id: String = uuid4().toString()
|
||||
) : TelegramBotPipelinesHandler {
|
||||
object ResultAbsence : Throwable()
|
||||
|
||||
override suspend fun <T : Any> onRequestExceptionInLimiter(request: Request<T>, t: Throwable): T? {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return onRequestExceptionInLimiter ?.invoke(request, t) as? T
|
||||
}
|
||||
|
||||
override suspend fun <T : Any> onRequestException(request: Request<T>, t: Throwable): T? {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return onRequestException ?.invoke(request, t) as? T
|
||||
|
||||
@@ -8,7 +8,6 @@ import dev.inmo.tgbotapi.requests.abstracts.Request
|
||||
|
||||
@Warning("This API is experimental and subject of changes")
|
||||
class TelegramBotMiddlewareBuilder {
|
||||
var onRequestExceptionInLimiter: (suspend (request: Request<*>, t: Throwable?) -> Any?)? = null
|
||||
var onRequestException: (suspend (request: Request<*>, t: Throwable?) -> Any?)? = null
|
||||
var onBeforeSearchCallFactory: (suspend (request: Request<*>, callsFactories: List<KtorCallFactory>) -> Unit)? = null
|
||||
var onBeforeCallFactoryMakeCall: (suspend (request: Request<*>, potentialFactory: KtorCallFactory) -> Unit)? = null
|
||||
@@ -18,12 +17,6 @@ class TelegramBotMiddlewareBuilder {
|
||||
var onRequestReturnResult: (suspend (result: Result<*>, request: Request<*>, callsFactories: List<KtorCallFactory>) -> Result<Any?>?)? = null
|
||||
var id: String = uuid4().toString()
|
||||
|
||||
/**
|
||||
* Useful way to set [onRequestException]
|
||||
*/
|
||||
fun doOnRequestExceptionInLimiter(block: suspend (request: Request<*>, t: Throwable?) -> Any?) {
|
||||
onRequestExceptionInLimiter = block
|
||||
}
|
||||
/**
|
||||
* Useful way to set [onRequestException]
|
||||
*/
|
||||
@@ -70,7 +63,6 @@ class TelegramBotMiddlewareBuilder {
|
||||
@Warning("This API is experimental and subject of changes")
|
||||
fun build(): TelegramBotMiddleware {
|
||||
return TelegramBotMiddleware(
|
||||
onRequestExceptionInLimiter = onRequestExceptionInLimiter,
|
||||
onRequestException = onRequestException,
|
||||
onBeforeSearchCallFactory = onBeforeSearchCallFactory,
|
||||
onBeforeCallFactoryMakeCall = onBeforeCallFactoryMakeCall,
|
||||
@@ -86,7 +78,6 @@ class TelegramBotMiddlewareBuilder {
|
||||
@Warning("This API is experimental and subject of changes")
|
||||
fun from(middleware: TelegramBotMiddleware, additionalSetup: TelegramBotMiddlewareBuilder.() -> Unit): TelegramBotMiddleware {
|
||||
return TelegramBotMiddlewareBuilder().apply {
|
||||
onRequestExceptionInLimiter = middleware.onRequestExceptionInLimiter
|
||||
onRequestException = middleware.onRequestException
|
||||
onBeforeSearchCallFactory = middleware.onBeforeSearchCallFactory
|
||||
onBeforeCallFactoryMakeCall = middleware.onBeforeCallFactoryMakeCall
|
||||
|
||||
@@ -10,12 +10,6 @@ import dev.inmo.tgbotapi.requests.abstracts.Request
|
||||
class TelegramBotMiddlewaresPipelinesHandler(
|
||||
private val middlewares: List<TelegramBotMiddleware> = emptyList()
|
||||
) : TelegramBotPipelinesHandler {
|
||||
override suspend fun <T : Any> onRequestExceptionInLimiter(request: Request<T>, t: Throwable): T? {
|
||||
return middlewares.firstNotNullOfOrNull {
|
||||
it.onRequestExceptionInLimiter(request, t)
|
||||
} ?: super.onRequestExceptionInLimiter(request, t)
|
||||
}
|
||||
|
||||
override suspend fun <T : Any> onRequestException(request: Request<T>, t: Throwable): T? {
|
||||
return middlewares.firstNotNullOfOrNull {
|
||||
it.onRequestException(request, t)
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package dev.inmo.tgbotapi.bot.settings.limiters
|
||||
|
||||
import dev.inmo.tgbotapi.bot.exceptions.TooMuchRequestsException
|
||||
import dev.inmo.tgbotapi.utils.isCausedUnresolvedAddressException
|
||||
import io.ktor.util.network.UnresolvedAddressException
|
||||
import kotlinx.coroutines.delay
|
||||
|
||||
/**
|
||||
@@ -15,10 +13,10 @@ object ExceptionsOnlyLimiter : RequestLimiter {
|
||||
result = runCatching {
|
||||
block()
|
||||
}.onFailure {
|
||||
when {
|
||||
it.isCausedUnresolvedAddressException() -> delay(1000L)
|
||||
it is TooMuchRequestsException -> delay(it.retryAfter.leftToRetry)
|
||||
else -> throw it
|
||||
if (it is TooMuchRequestsException) {
|
||||
delay(it.retryAfter.leftToRetry)
|
||||
} else {
|
||||
throw it
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
package dev.inmo.tgbotapi.requests.webhook
|
||||
|
||||
import dev.inmo.kslog.common.w
|
||||
import dev.inmo.tgbotapi.requests.abstracts.*
|
||||
import dev.inmo.tgbotapi.requests.send.media.base.DataRequest
|
||||
import dev.inmo.tgbotapi.requests.send.media.base.MultipartRequestImpl
|
||||
import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.utils.DefaultKTgBotAPIKSLog
|
||||
import kotlinx.serialization.*
|
||||
import kotlinx.serialization.builtins.serializer
|
||||
|
||||
@@ -120,22 +118,11 @@ fun SetWebhook(
|
||||
)
|
||||
|
||||
/**
|
||||
* Represents a request for setting a webhook in Telegram's Bot API. A webhook allows Telegram to send updates directly
|
||||
* to the bot via an HTTPS POST request to the provided URL, enabling real-time interaction.
|
||||
* Use this method to specify a url and receive incoming updates via an outgoing webhook. Whenever there is an update
|
||||
* for the bot, we will send an HTTPS POST request to the specified url, containing a JSON-serialized Update.
|
||||
*
|
||||
* @constructor Creates a data class holding configuration options for the webhook.
|
||||
*
|
||||
* @property url The HTTPS URL to which updates will be posted. Must be valid and accessible.
|
||||
* @property certificateFile An optional path to a public certificate file for webhook verification. Use only if a self-signed certificate is applied.
|
||||
* @property ipAddress The fixed IP address for incoming webhook connections.
|
||||
* @property maxAllowedConnections The maximum number of simultaneous HTTPS connections allowed to the webhook for
|
||||
* delivering updates. You may use value outside of [allowedConnectionsLength], but be sure that it is in
|
||||
* [allowedConnectionsWithLocalServerLength] and you are using local bot api url
|
||||
* @property allowedUpdates A list of update types the bot will receive. Defaults to all update types.
|
||||
* @property dropPendingUpdates If true, all pending updates will be dropped when the webhook is changed.
|
||||
* @property secretToken An optional arbitrary secret key to ensure the webhook updates are coming from Telegram.
|
||||
*
|
||||
* @throws IllegalArgumentException if the provided maxAllowedConnections value is outside the permitted range (both [allowedConnectionsLength] and [allowedConnectionsWithLocalServerLength])
|
||||
* If you'd like to make sure that the Webhook request comes from Telegram, we recommend using a secret path in the [url],
|
||||
* e.g. https://www.example.com/<token>. Since nobody else knows your bot's token, you can be pretty sure it's us.
|
||||
*/
|
||||
@ConsistentCopyVisibility
|
||||
@Serializable
|
||||
@@ -163,19 +150,8 @@ data class SetWebhook internal constructor(
|
||||
|
||||
init {
|
||||
maxAllowedConnections ?.let {
|
||||
when {
|
||||
it !in allowedConnectionsLength && it in allowedConnectionsWithLocalServerLength -> {
|
||||
DefaultKTgBotAPIKSLog.w {
|
||||
"""
|
||||
Passed amount of allowed connections to server is $it and it exceeds default amount of
|
||||
connections $allowedConnectionsLength, but can be used with local bot api server. Make sure
|
||||
you are using local bot api url in your bot.
|
||||
""".trimIndent()
|
||||
}
|
||||
}
|
||||
it !in allowedConnectionsLength -> {
|
||||
throw IllegalArgumentException("Allowed connection for webhook must be in $allowedConnectionsLength range (but passed $it)")
|
||||
}
|
||||
if (it !in allowedConnectionsLength) {
|
||||
throw IllegalArgumentException("Allowed connection for webhook must be in $allowedConnectionsLength range (but passed $it)")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,7 +64,6 @@ val threadNameLength = 1 until 128
|
||||
val chatDescriptionLength = 0 until 256
|
||||
val inlineResultQueryIdLingth = 1 until 64
|
||||
val allowedConnectionsLength = 1 .. 100
|
||||
val allowedConnectionsWithLocalServerLength = 1 .. 100000
|
||||
|
||||
val invoiceTitleLimit = 1 until 32
|
||||
val invoiceDescriptionLimit = 1 until 256
|
||||
|
||||
@@ -18,15 +18,6 @@ sealed interface PrivateChat : Chat, UsernameChat {
|
||||
val lastName: String
|
||||
}
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(ChatSerializer::class)
|
||||
sealed interface PrivateUserChat : PrivateChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(ChatSerializer::class)
|
||||
sealed interface PrivateForumChat : PrivateUserChat, ForumChat {
|
||||
}
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(ChatSerializer::class)
|
||||
sealed interface BusinessChat : Chat {
|
||||
@@ -60,11 +51,7 @@ sealed interface SupergroupChat : GroupChat, SuperPublicChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(ChatSerializer::class)
|
||||
sealed interface ForumChat : Chat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(ChatSerializer::class)
|
||||
sealed interface SupergroupForumChat : SupergroupChat, ForumChat
|
||||
sealed interface ForumChat : SupergroupChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(ChatSerializer::class)
|
||||
|
||||
@@ -81,16 +81,8 @@ object ChatSerializer : KSerializer<Chat> {
|
||||
val original = decodedJson[originField]
|
||||
|
||||
when (type) {
|
||||
ChatType.Sender -> if (isForum) {
|
||||
formatter.decodeFromJsonElement(PrivateForumChatImpl.serializer(), decodedJson)
|
||||
} else {
|
||||
formatter.decodeFromJsonElement(PrivateChatImpl.serializer(), decodedJson)
|
||||
}
|
||||
ChatType.Private -> if (isForum) {
|
||||
formatter.decodeFromJsonElement(PrivateForumChatImpl.serializer(), decodedJson)
|
||||
} else {
|
||||
formatter.decodeFromJsonElement(PrivateChatImpl.serializer(), decodedJson)
|
||||
}
|
||||
ChatType.Sender -> formatter.decodeFromJsonElement(PrivateChatImpl.serializer(), decodedJson)
|
||||
ChatType.Private -> formatter.decodeFromJsonElement(PrivateChatImpl.serializer(), decodedJson)
|
||||
ChatType.Group -> formatter.decodeFromJsonElement(GroupChatImpl.serializer(), decodedJson)
|
||||
ChatType.Supergroup -> when {
|
||||
isForum -> formatter.decodeFromJsonElement(ForumChatImpl.serializer(), decodedJson)
|
||||
@@ -136,16 +128,8 @@ object PreviewChatSerializer : KSerializer<PreviewChat> {
|
||||
val original = decodedJson[originField]
|
||||
|
||||
return when (type) {
|
||||
ChatType.Sender -> if (isForum) {
|
||||
formatter.decodeFromJsonElement(PrivateForumChatImpl.serializer(), decodedJson)
|
||||
} else {
|
||||
formatter.decodeFromJsonElement(PrivateChatImpl.serializer(), decodedJson)
|
||||
}
|
||||
ChatType.Private -> if (isForum) {
|
||||
formatter.decodeFromJsonElement(PrivateForumChatImpl.serializer(), decodedJson)
|
||||
} else {
|
||||
formatter.decodeFromJsonElement(PrivateChatImpl.serializer(), decodedJson)
|
||||
}
|
||||
ChatType.Sender -> formatter.decodeFromJsonElement(PrivateChatImpl.serializer(), decodedJson)
|
||||
ChatType.Private -> formatter.decodeFromJsonElement(PrivateChatImpl.serializer(), decodedJson)
|
||||
ChatType.Group -> formatter.decodeFromJsonElement(GroupChatImpl.serializer(), decodedJson)
|
||||
ChatType.Supergroup -> {
|
||||
when {
|
||||
@@ -172,7 +156,6 @@ object PreviewChatSerializer : KSerializer<PreviewChat> {
|
||||
override fun serialize(encoder: Encoder, value: PreviewChat) {
|
||||
when (value) {
|
||||
is PrivateChatImpl -> PrivateChatImpl.serializer().serialize(encoder, value)
|
||||
is PrivateForumChatImpl -> PrivateForumChatImpl.serializer().serialize(encoder, value)
|
||||
is BusinessChatImpl -> BusinessChatImpl.serializer().serialize(encoder, value)
|
||||
is GroupChatImpl -> GroupChatImpl.serializer().serialize(encoder, value)
|
||||
is SupergroupChatImpl -> SupergroupChatImpl.serializer().serialize(encoder, value)
|
||||
@@ -200,16 +183,8 @@ sealed class ExtendedChatSerializer : KSerializer<ExtendedChat> {
|
||||
val original = decodedJson[originField]
|
||||
|
||||
return when (type) {
|
||||
ChatType.Sender -> if (isForum) {
|
||||
formatter.decodeFromJsonElement(ExtendedPrivateForumChatImpl.serializer(), decodedJson)
|
||||
} else {
|
||||
formatter.decodeFromJsonElement(ExtendedPrivateChatImpl.serializer(), decodedJson)
|
||||
}
|
||||
ChatType.Private -> if (isForum) {
|
||||
formatter.decodeFromJsonElement(ExtendedPrivateForumChatImpl.serializer(), decodedJson)
|
||||
} else {
|
||||
formatter.decodeFromJsonElement(ExtendedPrivateChatImpl.serializer(), decodedJson)
|
||||
}
|
||||
ChatType.Sender -> formatter.decodeFromJsonElement(ExtendedPrivateChatImpl.serializer(), decodedJson)
|
||||
ChatType.Private -> formatter.decodeFromJsonElement(ExtendedPrivateChatImpl.serializer(), decodedJson)
|
||||
ChatType.Group -> formatter.decodeFromJsonElement(ExtendedGroupChatImpl.serializer(), decodedJson)
|
||||
ChatType.Supergroup -> {
|
||||
when {
|
||||
@@ -237,7 +212,6 @@ sealed class ExtendedChatSerializer : KSerializer<ExtendedChat> {
|
||||
when (value) {
|
||||
is ExtendedBusinessChatImpl -> ExtendedBusinessChatImpl.serializer().serialize(encoder, value)
|
||||
is ExtendedPrivateChatImpl -> ExtendedPrivateChatImpl.serializer().serialize(encoder, value)
|
||||
is ExtendedPrivateForumChatImpl -> ExtendedPrivateForumChatImpl.serializer().serialize(encoder, value)
|
||||
is ExtendedGroupChatImpl -> ExtendedGroupChatImpl.serializer().serialize(encoder, value)
|
||||
is ExtendedSupergroupChatImpl -> ExtendedSupergroupChatImpl.serializer().serialize(encoder, value)
|
||||
is ExtendedForumChatImpl -> ExtendedForumChatImpl.serializer().serialize(encoder, value)
|
||||
@@ -264,7 +238,7 @@ sealed class ExtendedChatSerializer : KSerializer<ExtendedChat> {
|
||||
class BasedOnBusinessConnection(private val businessConnectionId: BusinessConnectionId) : ExtendedChatSerializer() {
|
||||
override fun deserialize(decoder: Decoder): ExtendedChat {
|
||||
return super.deserialize(decoder).let {
|
||||
if (it is ExtendedPrivateChatImpl || it is ExtendedPrivateForumChatImpl) {
|
||||
if (it is ExtendedPrivateChatImpl) {
|
||||
ExtendedBusinessChatImpl(
|
||||
BusinessChatId(it.id.chatId, businessConnectionId),
|
||||
it
|
||||
|
||||
@@ -165,61 +165,7 @@ data class ExtendedPrivateChatImpl(
|
||||
override val acceptedGiftTypes: AcceptedGiftTypes = AcceptedGiftTypes(),
|
||||
) : ExtendedPrivateChat
|
||||
|
||||
@Serializable
|
||||
@RiskFeature("This class is a subject of changes. It is better to use ExtendedPrivateChat due")
|
||||
data class ExtendedPrivateForumChatImpl(
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(idField)
|
||||
override val id: UserId,
|
||||
@SerialName(photoField)
|
||||
override val chatPhoto: ChatPhoto? = null,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(usernameField)
|
||||
override val username: Username? = null,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(activeUsernamesField)
|
||||
override val activeUsernames: List<Username> = emptyList(),
|
||||
@SerialName(firstNameField)
|
||||
override val firstName: String = "",
|
||||
@SerialName(lastNameField)
|
||||
override val lastName: String = "",
|
||||
@SerialName(bioField)
|
||||
override val bio: String = "",
|
||||
@SerialName(hasPrivateForwardsField)
|
||||
override val hasPrivateForwards: Boolean = false,
|
||||
@SerialName(hasRestrictedVoiceAndVideoMessagesField)
|
||||
override val hasRestrictedVoiceAndVideoMessages: Boolean = false,
|
||||
@SerialName(emojiStatusCustomEmojiIdField)
|
||||
override val statusEmojiId: CustomEmojiId? = null,
|
||||
@SerialName(emojiStatusExpirationDateField)
|
||||
override val statusEmojiExpiration: TelegramDate? = null,
|
||||
@SerialName(accentColorIdField)
|
||||
override val accentColorId: ColorId = ColorId(0),
|
||||
@SerialName(profileAccentColorIdField)
|
||||
override val profileAccentColorId: ColorId? = null,
|
||||
@SerialName(backgroundCustomEmojiIdField)
|
||||
override val backgroundCustomEmojiId: CustomEmojiId? = null,
|
||||
@SerialName(profileBackgroundCustomEmojiIdField)
|
||||
override val profileBackgroundCustomEmojiId: CustomEmojiId? = null,
|
||||
@SerialName(businessIntroField)
|
||||
override val businessIntro: BusinessIntro? = null,
|
||||
@SerialName(businessLocationField)
|
||||
override val businessLocation: BusinessLocation? = null,
|
||||
@SerialName(businessOpeningHoursField)
|
||||
override val businessOpeningHours: BusinessOpeningHours? = null,
|
||||
@SerialName(birthdateField)
|
||||
override val birthdate: Birthdate? = null,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(personalChatField)
|
||||
@Serializable(PreviewChatSerializer::class)
|
||||
override val personalChat: PreviewChannelChat? = null,
|
||||
@SerialName(maxReactionCountField)
|
||||
override val maxReactionsCount: Int = 3,
|
||||
@SerialName(acceptedGiftTypesField)
|
||||
override val acceptedGiftTypes: AcceptedGiftTypes = AcceptedGiftTypes(),
|
||||
) : ExtendedPrivateForumChat
|
||||
|
||||
typealias ExtendedUser = ExtendedPrivateChat
|
||||
typealias ExtendedUser = ExtendedPrivateChatImpl
|
||||
|
||||
@Serializable
|
||||
@RiskFeature("This class is a subject of changes. It is better to use ExtendedSupergroupChat due")
|
||||
|
||||
@@ -56,7 +56,7 @@ sealed interface ExtendedGroupChat : GroupChat, ExtendedPublicChat {
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(ExtendedChatSerializer.Companion::class)
|
||||
sealed interface ExtendedPrivateChat : PrivateUserChat, ExtendedChatWithUsername, ExtendedNonBotChat {
|
||||
sealed interface ExtendedPrivateChat : PrivateChat, ExtendedChatWithUsername, ExtendedNonBotChat {
|
||||
val bio: String
|
||||
val hasPrivateForwards: Boolean
|
||||
val hasRestrictedVoiceAndVideoMessages: Boolean
|
||||
@@ -72,10 +72,6 @@ sealed interface ExtendedPrivateChat : PrivateUserChat, ExtendedChatWithUsername
|
||||
get() = hasPrivateForwards
|
||||
}
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(ExtendedChatSerializer.Companion::class)
|
||||
sealed interface ExtendedPrivateForumChat : ExtendedPrivateChat, PrivateForumChat
|
||||
|
||||
sealed interface ExtendedPublicChat : ExtendedChat, PublicChat, ExtendedNonBotChat {
|
||||
val description: String
|
||||
val inviteLink: String?
|
||||
@@ -116,7 +112,7 @@ sealed interface ExtendedSupergroupChat : SupergroupChat, ExtendedGroupChat, Ext
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(ExtendedChatSerializer.Companion::class)
|
||||
sealed interface ExtendedForumChat : ExtendedSupergroupChat, SupergroupForumChat
|
||||
sealed interface ExtendedForumChat : ExtendedSupergroupChat, ForumChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(PreviewChatSerializer::class)
|
||||
|
||||
@@ -33,20 +33,6 @@ data class PrivateChatImpl(
|
||||
@SerialName(lastNameField)
|
||||
override val lastName: String = ""
|
||||
) : PreviewPrivateChat
|
||||
@Serializable
|
||||
@RiskFeature("This class is a subject of changes. It is better to use PrivateChat due")
|
||||
data class PrivateForumChatImpl(
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(idField)
|
||||
override val id: UserId,
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(usernameField)
|
||||
override val username: Username? = null,
|
||||
@SerialName(firstNameField)
|
||||
override val firstName: String = "",
|
||||
@SerialName(lastNameField)
|
||||
override val lastName: String = ""
|
||||
) : PreviewPrivateForumChat
|
||||
|
||||
@Serializable
|
||||
@RiskFeature("This class is a subject of changes. It is better to use PrivateChat due")
|
||||
@@ -129,7 +115,7 @@ sealed class Bot : User()
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(UserSerializer::class)
|
||||
sealed class PreviewBot : PrivateChat, PreviewChat, User()
|
||||
sealed class PreviewBot : PreviewUser()
|
||||
|
||||
@Serializable
|
||||
data class CommonBot(
|
||||
|
||||
@@ -11,11 +11,7 @@ sealed interface PreviewUsernameChat : PreviewChat, UsernameChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(PreviewChatSerializer::class)
|
||||
sealed interface PreviewPrivateChat : PreviewUsernameChat, PrivateUserChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(PreviewChatSerializer::class)
|
||||
sealed interface PreviewPrivateForumChat : PreviewPrivateChat, PrivateForumChat
|
||||
sealed interface PreviewPrivateChat : PreviewUsernameChat, PrivateChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(PreviewChatSerializer::class)
|
||||
@@ -43,7 +39,7 @@ sealed interface PreviewSupergroupChat : PreviewGroupChat, PreviewSuperPublicCha
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(PreviewChatSerializer::class)
|
||||
sealed interface PreviewForumChat : PreviewSupergroupChat, SupergroupForumChat
|
||||
sealed interface PreviewForumChat : PreviewSupergroupChat, ForumChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(PreviewChatSerializer::class)
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
package dev.inmo.tgbotapi.utils
|
||||
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
fun <T : Throwable> Throwable.causedBy(kclass: KClass<T>, additionalFilterOnHappened: (T) -> T? = { it }): T? {
|
||||
var current = this
|
||||
while (kclass.isInstance(current) == false) {
|
||||
when {
|
||||
kclass.isInstance(current) -> return additionalFilterOnHappened(current as T)
|
||||
else -> current = current.cause ?: return null
|
||||
}
|
||||
}
|
||||
|
||||
return current as T
|
||||
}
|
||||
@@ -14,9 +14,16 @@ import kotlinx.coroutines.CancellationException
|
||||
* @return the first [CancellationException] found in the cause chain, or `null` if none present
|
||||
*/
|
||||
fun Throwable.causedCancellationException(): CancellationException? {
|
||||
return causedBy(CancellationException::class) {
|
||||
it.takeIf { it.cause == null }
|
||||
var current = this
|
||||
while (current !is CancellationException) {
|
||||
when {
|
||||
// It is possible, that API will be changed and cancellation will be caused by something else
|
||||
current is CancellationException && current.cause == null -> return current
|
||||
else -> current = current.cause ?: return null
|
||||
}
|
||||
}
|
||||
|
||||
return current
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
package dev.inmo.tgbotapi.utils
|
||||
|
||||
import io.ktor.util.network.UnresolvedAddressException
|
||||
|
||||
fun Throwable.causedUnresolvedAddressException(): UnresolvedAddressException? {
|
||||
return causedBy(UnresolvedAddressException::class)
|
||||
}
|
||||
|
||||
fun Throwable.isCausedUnresolvedAddressException(): Boolean = causedUnresolvedAddressException() != null
|
||||
@@ -13,11 +13,9 @@ import dev.inmo.tgbotapi.types.chat.*
|
||||
* language)
|
||||
*/
|
||||
fun PrivateChat.toUser(): User = when (this) {
|
||||
is ExtendedPrivateChatImpl -> CommonUser(id, firstName, lastName, username)
|
||||
is CommonUser -> this
|
||||
is CommonBot -> this
|
||||
is ExtendedBot -> this
|
||||
is ExtendedPrivateChatImpl -> CommonUser(id, firstName, lastName, username)
|
||||
is PrivateChatImpl -> CommonUser(id, firstName, lastName, username)
|
||||
is ExtendedPrivateForumChatImpl -> CommonUser(id, firstName, lastName, username)
|
||||
is PrivateForumChatImpl -> CommonUser(id, firstName, lastName, username)
|
||||
is ExtendedBot -> this
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ import com.squareup.kotlinpoet.FileSpec
|
||||
import com.squareup.kotlinpoet.asClassName
|
||||
import com.squareup.kotlinpoet.ksp.writeTo
|
||||
import dev.inmo.micro_ksp.generator.resolveSubclasses
|
||||
import dev.inmo.micro_ksp.generator.withNoSuchElementWorkaround
|
||||
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChatEvent
|
||||
import dev.inmo.tgbotapi.utils.RiskFeature
|
||||
import dev.inmo.tgbotapi.utils.internal.ClassCastsExcluded
|
||||
@@ -31,9 +30,7 @@ class TelegramBotAPISymbolProcessor(
|
||||
val classes = resolver.getSymbolsWithAnnotation(classCastsIncludedClassName.canonicalName).filterIsInstance<KSClassDeclaration>()
|
||||
val classesRegexes: Map<KSClassDeclaration, Pair<Regex?, Regex?>> = classes.mapNotNull {
|
||||
it to (it.getAnnotationsByType(ClassCastsIncluded::class).firstNotNullOfOrNull {
|
||||
val typesRegex = withNoSuchElementWorkaround("") { it.typesRegex }
|
||||
val excludeRegex = withNoSuchElementWorkaround("") { it.excludeRegex }
|
||||
typesRegex.takeIf { it.isNotEmpty() } ?.let(::Regex) to excludeRegex.takeIf { it.isNotEmpty() } ?.let(::Regex)
|
||||
it.typesRegex.takeIf { it.isNotEmpty() } ?.let(::Regex) to it.excludeRegex.takeIf { it.isNotEmpty() } ?.let(::Regex)
|
||||
} ?: return@mapNotNull null)
|
||||
}.toMap()
|
||||
val classesSubtypes = mutableMapOf<KSClassDeclaration, MutableSet<KSClassDeclaration>>()
|
||||
|
||||
@@ -1425,8 +1425,6 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
|
||||
public static final fun extendedNonBotChatOrThrow (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/ExtendedNonBotChat;
|
||||
public static final fun extendedPrivateChatOrNull (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateChat;
|
||||
public static final fun extendedPrivateChatOrThrow (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateChat;
|
||||
public static final fun extendedPrivateForumChatOrNull (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChat;
|
||||
public static final fun extendedPrivateForumChatOrThrow (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateForumChat;
|
||||
public static final fun extendedPublicChatOrNull (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/ExtendedPublicChat;
|
||||
public static final fun extendedPublicChatOrThrow (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/ExtendedPublicChat;
|
||||
public static final fun extendedSupergroupChatOrNull (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/ExtendedSupergroupChat;
|
||||
@@ -1747,7 +1745,6 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
|
||||
public static final fun ifExtendedGroupChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifExtendedNonBotChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifExtendedPrivateChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifExtendedPrivateForumChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifExtendedPublicChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifExtendedSupergroupChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifExternal (Ldev/inmo/tgbotapi/types/ReplyInfo;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
@@ -1978,7 +1975,6 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
|
||||
public static final fun ifPreviewForumChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifPreviewGroupChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifPreviewPrivateChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifPreviewPrivateForumChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifPreviewPublicChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifPreviewSuperPublicChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifPreviewSupergroupChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
@@ -1990,8 +1986,6 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
|
||||
public static final fun ifPrivateContentMessage (Ldev/inmo/tgbotapi/types/message/abstracts/Message;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifPrivateEvent (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifPrivateEventMessage (Ldev/inmo/tgbotapi/types/message/abstracts/Message;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifPrivateForumChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifPrivateUserChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifProximityAlertTriggered (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifPublicChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifPublicChatEvent (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
@@ -2059,7 +2053,6 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
|
||||
public static final fun ifSupergroupEvent (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifSupergroupEventMessage (Ldev/inmo/tgbotapi/abstracts/OptionallyWithUser;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifSupergroupEventMessage (Ldev/inmo/tgbotapi/types/message/abstracts/Message;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifSupergroupForumChat (Ldev/inmo/tgbotapi/types/chat/Chat;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifSwitchInlineQueryChosenChatInlineKeyboardButton (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifSwitchInlineQueryCurrentChatInlineKeyboardButton (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
public static final fun ifSwitchInlineQueryInlineKeyboardButton (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
|
||||
@@ -2487,8 +2480,6 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
|
||||
public static final fun previewGroupChatOrThrow (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/PreviewGroupChat;
|
||||
public static final fun previewPrivateChatOrNull (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/PreviewPrivateChat;
|
||||
public static final fun previewPrivateChatOrThrow (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/PreviewPrivateChat;
|
||||
public static final fun previewPrivateForumChatOrNull (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/PreviewPrivateForumChat;
|
||||
public static final fun previewPrivateForumChatOrThrow (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/PreviewPrivateForumChat;
|
||||
public static final fun previewPublicChatOrNull (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/PreviewPublicChat;
|
||||
public static final fun previewPublicChatOrThrow (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/PreviewPublicChat;
|
||||
public static final fun previewSuperPublicChatOrNull (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/PreviewSuperPublicChat;
|
||||
@@ -2511,10 +2502,6 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
|
||||
public static final fun privateEventMessageOrThrow (Ldev/inmo/tgbotapi/types/message/abstracts/Message;)Ldev/inmo/tgbotapi/types/message/PrivateEventMessage;
|
||||
public static final fun privateEventOrNull (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;)Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/PrivateEvent;
|
||||
public static final fun privateEventOrThrow (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;)Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/PrivateEvent;
|
||||
public static final fun privateForumChatOrNull (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/PrivateForumChat;
|
||||
public static final fun privateForumChatOrThrow (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/PrivateForumChat;
|
||||
public static final fun privateUserChatOrNull (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/PrivateUserChat;
|
||||
public static final fun privateUserChatOrThrow (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/PrivateUserChat;
|
||||
public static final fun proximityAlertTriggeredOrNull (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;)Ldev/inmo/tgbotapi/types/message/ChatEvents/ProximityAlertTriggered;
|
||||
public static final fun proximityAlertTriggeredOrThrow (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;)Ldev/inmo/tgbotapi/types/message/ChatEvents/ProximityAlertTriggered;
|
||||
public static final fun publicChatEventOrNull (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;)Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/PublicChatEvent;
|
||||
@@ -2649,8 +2636,6 @@ public final class dev/inmo/tgbotapi/extensions/utils/ClassCastsNewKt {
|
||||
public static final fun supergroupEventMessageOrThrow (Ldev/inmo/tgbotapi/types/message/abstracts/Message;)Ldev/inmo/tgbotapi/types/message/abstracts/SupergroupEventMessage;
|
||||
public static final fun supergroupEventOrNull (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;)Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/SupergroupEvent;
|
||||
public static final fun supergroupEventOrThrow (Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/ChatEvent;)Ldev/inmo/tgbotapi/types/message/ChatEvents/abstracts/SupergroupEvent;
|
||||
public static final fun supergroupForumChatOrNull (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/SupergroupForumChat;
|
||||
public static final fun supergroupForumChatOrThrow (Ldev/inmo/tgbotapi/types/chat/Chat;)Ldev/inmo/tgbotapi/types/chat/SupergroupForumChat;
|
||||
public static final fun switchInlineQueryChosenChatInlineKeyboardButtonOrNull (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryChosenChatInlineKeyboardButton;
|
||||
public static final fun switchInlineQueryChosenChatInlineKeyboardButtonOrThrow (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryChosenChatInlineKeyboardButton;
|
||||
public static final fun switchInlineQueryCurrentChatInlineKeyboardButtonOrNull (Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/InlineKeyboardButton;)Ldev/inmo/tgbotapi/types/buttons/InlineKeyboardButtons/SwitchInlineQueryCurrentChatInlineKeyboardButton;
|
||||
@@ -3720,9 +3705,7 @@ public final class dev/inmo/tgbotapi/extensions/utils/updates/retrieving/LongPol
|
||||
public static synthetic fun longPolling$default (Ldev/inmo/tgbotapi/bot/RequestsExecutor;ILkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function2;IZZLjava/lang/Long;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/coroutines/Job;
|
||||
public static synthetic fun longPolling$default (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/updateshandlers/UpdatesFilter;ILkotlinx/coroutines/CoroutineScope;ZZLjava/lang/Long;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Job;
|
||||
public static final fun longPollingFlow (Ldev/inmo/tgbotapi/bot/RequestsExecutor;ILkotlin/jvm/functions/Function2;Ljava/util/List;ZZLjava/lang/Long;)Lkotlinx/coroutines/flow/Flow;
|
||||
public static final fun longPollingFlow (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Lkotlin/jvm/functions/Function2;ZZLjava/lang/Long;Lkotlin/jvm/functions/Function1;)Lkotlinx/coroutines/flow/Flow;
|
||||
public static synthetic fun longPollingFlow$default (Ldev/inmo/tgbotapi/bot/RequestsExecutor;ILkotlin/jvm/functions/Function2;Ljava/util/List;ZZLjava/lang/Long;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow;
|
||||
public static synthetic fun longPollingFlow$default (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Lkotlin/jvm/functions/Function2;ZZLjava/lang/Long;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lkotlinx/coroutines/flow/Flow;
|
||||
public static final fun retrieveAccumulatedUpdates (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/updateshandlers/FlowsUpdatesFilter;ZZLkotlinx/coroutines/CoroutineScope;ZLjava/lang/Long;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Job;
|
||||
public static final fun retrieveAccumulatedUpdates (Ldev/inmo/tgbotapi/bot/RequestsExecutor;ZZLkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function2;Ljava/util/List;ZLjava/lang/Long;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Job;
|
||||
public static synthetic fun retrieveAccumulatedUpdates$default (Ldev/inmo/tgbotapi/bot/RequestsExecutor;Ldev/inmo/tgbotapi/updateshandlers/FlowsUpdatesFilter;ZZLkotlinx/coroutines/CoroutineScope;ZLjava/lang/Long;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lkotlinx/coroutines/Job;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,6 @@
|
||||
package dev.inmo.tgbotapi.extensions.utils.updates.retrieving
|
||||
|
||||
import dev.inmo.kslog.common.logger
|
||||
import dev.inmo.micro_utils.coroutines.*
|
||||
import dev.inmo.tgbotapi.bot.RequestsExecutor
|
||||
import dev.inmo.tgbotapi.bot.TelegramBot
|
||||
@@ -14,36 +15,27 @@ import dev.inmo.tgbotapi.types.update.*
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate
|
||||
import dev.inmo.tgbotapi.types.update.abstracts.Update
|
||||
import dev.inmo.tgbotapi.updateshandlers.*
|
||||
import dev.inmo.tgbotapi.utils.isCausedUnresolvedAddressException
|
||||
import dev.inmo.tgbotapi.utils.DefaultKTgBotAPIKSLog
|
||||
import dev.inmo.tgbotapi.utils.causedCancellationException
|
||||
import dev.inmo.tgbotapi.utils.isCausedByCancellation
|
||||
import dev.inmo.tgbotapi.utils.subscribeWithBotLogger
|
||||
import io.ktor.client.network.sockets.ConnectTimeoutException
|
||||
import io.ktor.client.plugins.HttpRequestTimeoutException
|
||||
import io.ktor.utils.io.CancellationException
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.flow.*
|
||||
|
||||
/**
|
||||
* Starts a long polling flow to receive updates continuously from the Telegram Bot API.
|
||||
*
|
||||
* This method retrieves updates from the bot, processes them, and emits them as a flow of `Update` objects.
|
||||
* It allows handling of updates with features like automatic webhook disabling, timeout exception skipping,
|
||||
* and media group handling with debounce time.
|
||||
*
|
||||
* @param exceptionsHandler Optional exception handler to manage exceptions that occur during the polling process.
|
||||
* @param autoDisableWebhooks Specifies whether to automatically disable existing webhooks before starting the long polling flow (default: `true`).
|
||||
* @param autoSkipTimeoutExceptions Defines if timeout-related exceptions should automatically be skipped during the polling (default: `true`).
|
||||
* @param mediaGroupsDebounceTimeMillis The debounce time in milliseconds for processing media group updates.
|
||||
* If set to `null`, media group handling is disabled (default: `1000L`).
|
||||
* @param getUpdatesRequestCreator A function that creates a `GetUpdates` request for retrieving updates.
|
||||
* This function accepts the identifier of the most recent update as an input and returns the new request.
|
||||
* @return A [Flow] of [Update] objects that represents the continuous stream of updates received.
|
||||
* @param mediaGroupsDebounceTimeMillis Will be used for calling of [updateHandlerWithMediaGroupsAdaptation]. Pass null
|
||||
* in case you wish to enable classic way of updates handling, but in that mode some media group messages can be
|
||||
* retrieved in different updates
|
||||
*/
|
||||
fun TelegramBot.longPollingFlow(
|
||||
timeoutSeconds: Seconds = 30,
|
||||
exceptionsHandler: (ExceptionHandler<Unit>)? = null,
|
||||
allowedUpdates: List<String>? = ALL_UPDATES_LIST,
|
||||
autoDisableWebhooks: Boolean = true,
|
||||
autoSkipTimeoutExceptions: Boolean = true,
|
||||
mediaGroupsDebounceTimeMillis: Long? = 1000L,
|
||||
getUpdatesRequestCreator: (sinceUpdate: UpdateId?) -> GetUpdates
|
||||
): Flow<Update> = channelFlow {
|
||||
if (autoDisableWebhooks) {
|
||||
runCatchingLogging(logger = Log) {
|
||||
@@ -124,23 +116,23 @@ fun TelegramBot.longPollingFlow(
|
||||
while (isActive) {
|
||||
runCatchingLogging(logger = Log) {
|
||||
execute(
|
||||
getUpdatesRequestCreator(lastUpdateIdentifier ?.plus(1))
|
||||
GetUpdates(
|
||||
offset = lastUpdateIdentifier?.plus(1),
|
||||
timeout = timeoutSeconds,
|
||||
allowed_updates = allowedUpdates
|
||||
)
|
||||
).let { originalUpdates ->
|
||||
updatesHandler(originalUpdates)
|
||||
}
|
||||
}.onFailure { e ->
|
||||
runCatchingLogging(logger = Log) {
|
||||
val isHttpRequestTimeoutException =
|
||||
e is ConnectTimeoutException || e is HttpRequestTimeoutException || (e is CommonBotException && e.cause is HttpRequestTimeoutException)
|
||||
e is HttpRequestTimeoutException || (e is CommonBotException && e.cause is HttpRequestTimeoutException)
|
||||
if (isHttpRequestTimeoutException && autoSkipTimeoutExceptions) {
|
||||
return@onFailure
|
||||
}
|
||||
|
||||
exceptionsHandler?.invoke(e)
|
||||
|
||||
// It seems some problems with internet connection. See https://github.com/InsanusMokrassar/ktgbotapi/issues/989
|
||||
val isUnresolvedAddressException = e.isCausedUnresolvedAddressException()
|
||||
if (e is RequestException || isUnresolvedAddressException) {
|
||||
if (e is RequestException) {
|
||||
delay(1000L)
|
||||
}
|
||||
}
|
||||
@@ -149,45 +141,6 @@ fun TelegramBot.longPollingFlow(
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initiates a long polling flow for receiving updates continuously from the Telegram Bot API.
|
||||
* This method provides a customized way to handle the retrieval of updates with options
|
||||
* to configure timeouts, update types, exception handling, and media group processing.
|
||||
*
|
||||
* @param timeoutSeconds The maximum time in seconds for the server to wait for available updates
|
||||
* before responding (default: `30`).
|
||||
* @param exceptionsHandler An optional exception handler for managing exceptions that occur during the
|
||||
* long polling process. If not provided, exceptions will pass through unhandled.
|
||||
* @param allowedUpdates A list of the update types to retrieve. By default, retrieves all possible
|
||||
* update types as defined in `ALL_UPDATES_LIST`.
|
||||
* @param autoDisableWebhooks Whether the current webhook should be disabled automatically before starting the
|
||||
* long polling flow (default: `true`).
|
||||
* @param autoSkipTimeoutExceptions Determines if timeout-related exceptions should be automatically skipped
|
||||
* during the polling process (default: `true`).
|
||||
* @param mediaGroupsDebounceTimeMillis The debounce time in milliseconds for processing updates containing
|
||||
* media groups. If set to `null`, media group handling is disabled (default: `1000L`).
|
||||
* @return A Flow that emits Update objects representing the updates fetched from the Telegram Bot API.
|
||||
*/
|
||||
fun TelegramBot.longPollingFlow(
|
||||
timeoutSeconds: Seconds = 30,
|
||||
exceptionsHandler: (ExceptionHandler<Unit>)? = null,
|
||||
allowedUpdates: List<String>? = ALL_UPDATES_LIST,
|
||||
autoDisableWebhooks: Boolean = true,
|
||||
autoSkipTimeoutExceptions: Boolean = true,
|
||||
mediaGroupsDebounceTimeMillis: Long? = 1000L,
|
||||
): Flow<Update> = longPollingFlow(
|
||||
exceptionsHandler = exceptionsHandler,
|
||||
autoDisableWebhooks = autoDisableWebhooks,
|
||||
autoSkipTimeoutExceptions = autoSkipTimeoutExceptions,
|
||||
mediaGroupsDebounceTimeMillis = mediaGroupsDebounceTimeMillis,
|
||||
) {
|
||||
GetUpdates(
|
||||
offset = it,
|
||||
timeout = timeoutSeconds,
|
||||
allowed_updates = allowedUpdates
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mediaGroupsDebounceTimeMillis Will be used for calling of [updateHandlerWithMediaGroupsAdaptation]. Pass null
|
||||
* in case you wish to enable classic way of updates handling, but in that mode some media group messages can be
|
||||
|
||||
Reference in New Issue
Block a user