mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2026-06-18 17:25:09 +00:00
Compare commits
9 Commits
30.0.1
...
e40424b26a
| Author | SHA1 | Date | |
|---|---|---|---|
| e40424b26a | |||
| cc5056b685 | |||
| 9713a668e2 | |||
| 90d7bdff56 | |||
| 374f6a93bd | |||
| 28b5fae760 | |||
| 97dae295d6 | |||
| 93597f3940 | |||
| f27caaecde |
19
CHANGELOG.md
19
CHANGELOG.md
@@ -1,5 +1,24 @@
|
||||
# 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`:
|
||||
|
||||
@@ -5,8 +5,5 @@ 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=30.0.1
|
||||
library_version=31.0.0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[versions]
|
||||
|
||||
kotlin = "2.2.20"
|
||||
kotlin = "2.2.21"
|
||||
kotlin-serialization = "1.9.0"
|
||||
kotlin-coroutines = "1.10.2"
|
||||
|
||||
@@ -8,13 +8,13 @@ javax-activation = "1.1.1"
|
||||
|
||||
korlibs = "5.4.0"
|
||||
uuid = "0.8.4"
|
||||
ktor = "3.3.1"
|
||||
ktor = "3.3.2"
|
||||
|
||||
ksp = "2.2.20-2.0.4"
|
||||
ksp = "2.3.2"
|
||||
kotlin-poet = "2.2.0"
|
||||
|
||||
microutils = "0.26.6"
|
||||
kslog = "1.5.1"
|
||||
microutils = "0.26.8"
|
||||
kslog = "1.5.2"
|
||||
|
||||
versions = "0.53.0"
|
||||
|
||||
|
||||
@@ -513,6 +513,7 @@ 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,6 +117,17 @@ 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"
|
||||
|
||||
@@ -10654,6 +10654,7 @@ 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;
|
||||
@@ -17199,7 +17200,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/ForumChat {
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/ExtendedForumChat : dev/inmo/tgbotapi/types/chat/ExtendedSupergroupChat, dev/inmo/tgbotapi/types/chat/SupergroupForumChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/ExtendedForumChat$Companion;
|
||||
}
|
||||
|
||||
@@ -17394,7 +17395,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/PrivateChat {
|
||||
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 static final field Companion Ldev/inmo/tgbotapi/types/chat/ExtendedPrivateChat$Companion;
|
||||
public fun getAllowCreateUserIdLink ()Z
|
||||
public abstract fun getBio ()Ljava/lang/String;
|
||||
@@ -17491,6 +17492,94 @@ 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;
|
||||
@@ -17617,7 +17706,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/SupergroupChat {
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/ForumChat : dev/inmo/tgbotapi/types/chat/Chat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/ForumChat$Companion;
|
||||
}
|
||||
|
||||
@@ -17718,7 +17807,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/PreviewUser {
|
||||
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 static final field Companion Ldev/inmo/tgbotapi/types/chat/PreviewBot$Companion;
|
||||
}
|
||||
|
||||
@@ -17783,7 +17872,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/ForumChat, dev/inmo/tgbotapi/types/chat/PreviewSupergroupChat {
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/PreviewForumChat : dev/inmo/tgbotapi/types/chat/PreviewSupergroupChat, dev/inmo/tgbotapi/types/chat/SupergroupForumChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/PreviewForumChat$Companion;
|
||||
}
|
||||
|
||||
@@ -17807,7 +17896,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/PrivateChat {
|
||||
public abstract interface class dev/inmo/tgbotapi/types/chat/PreviewPrivateChat : dev/inmo/tgbotapi/types/chat/PreviewUsernameChat, dev/inmo/tgbotapi/types/chat/PrivateUserChat {
|
||||
public static final field Companion Ldev/inmo/tgbotapi/types/chat/PreviewPrivateChat$Companion;
|
||||
}
|
||||
|
||||
@@ -17819,6 +17908,18 @@ 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;
|
||||
}
|
||||
@@ -17926,6 +18027,66 @@ 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;
|
||||
@@ -17997,6 +18158,18 @@ 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;
|
||||
|
||||
@@ -37,6 +37,8 @@ data class ForwardMessage(
|
||||
val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
override val protectContent: Boolean = false,
|
||||
@SerialName(messageEffectIdField)
|
||||
val effectId: EffectId? = null,
|
||||
@SerialName(suggestedPostParametersField)
|
||||
override val suggestedPostParameters: SuggestedPostParameters? = null
|
||||
): SimpleRequest<PossiblyForwardedMessage>,
|
||||
|
||||
@@ -9,7 +9,10 @@ import dev.inmo.tgbotapi.types.excludeUnsavedField
|
||||
import dev.inmo.tgbotapi.types.excludeSavedField
|
||||
import dev.inmo.tgbotapi.types.excludeUnlimitedField
|
||||
import dev.inmo.tgbotapi.types.excludeLimitedField
|
||||
import dev.inmo.tgbotapi.types.excludeLimitedUpgradableField
|
||||
import dev.inmo.tgbotapi.types.excludeLimitedNonUpgradableField
|
||||
import dev.inmo.tgbotapi.types.excludeUniqueField
|
||||
import dev.inmo.tgbotapi.types.excludeFromBlockchainField
|
||||
import dev.inmo.tgbotapi.types.sortByPriceField
|
||||
import dev.inmo.tgbotapi.types.offsetField
|
||||
import dev.inmo.tgbotapi.types.limitField
|
||||
@@ -29,10 +32,17 @@ data class GetBusinessAccountGifts(
|
||||
val excludeSaved: Boolean = false,
|
||||
@SerialName(excludeUnlimitedField)
|
||||
val excludeUnlimited: Boolean = false,
|
||||
@Deprecated("Use excludeLimitedUpgradable and excludeLimitedNonUpgradable instead")
|
||||
@SerialName(excludeLimitedField)
|
||||
val excludeLimited: Boolean = false,
|
||||
@SerialName(excludeLimitedUpgradableField)
|
||||
val excludeLimitedUpgradable: Boolean = false,
|
||||
@SerialName(excludeLimitedNonUpgradableField)
|
||||
val excludeLimitedNonUpgradable: Boolean = false,
|
||||
@SerialName(excludeUniqueField)
|
||||
val excludeUnique: Boolean = false,
|
||||
@SerialName(excludeFromBlockchainField)
|
||||
val excludeFromBlockchain: Boolean = false,
|
||||
@SerialName(sortByPriceField)
|
||||
val sortByPrice: Boolean = false,
|
||||
@SerialName(offsetField)
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package dev.inmo.tgbotapi.requests.gifts
|
||||
|
||||
import dev.inmo.micro_utils.common.Warning
|
||||
import dev.inmo.tgbotapi.abstracts.types.ChatRequest
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.ChatIdentifier
|
||||
import dev.inmo.tgbotapi.types.OwnedGifts
|
||||
import dev.inmo.tgbotapi.types.chatIdField
|
||||
import dev.inmo.tgbotapi.types.gifts.GiftSentOrReceived
|
||||
import dev.inmo.tgbotapi.types.limitField
|
||||
import dev.inmo.tgbotapi.types.offsetField
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
|
||||
// TODO::Fix
|
||||
@Serializable
|
||||
data class GetChatGifts(
|
||||
@SerialName(chatIdField)
|
||||
override val chatId: ChatIdentifier,
|
||||
@SerialName(offsetField)
|
||||
val offset: String? = null,
|
||||
@SerialName(limitField)
|
||||
val limit: Int? = null,
|
||||
) : SimpleRequest<OwnedGifts<GiftSentOrReceived>>, ChatRequest {
|
||||
override fun method(): String = "getChatGifts"
|
||||
|
||||
override val resultDeserializer: DeserializationStrategy<OwnedGifts<GiftSentOrReceived>>
|
||||
get() = Companion.resultSerializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
companion object {
|
||||
@Warning("This API can be changed without any warranties of backward compatibility")
|
||||
val resultSerializer = OwnedGifts.serializer(GiftSentOrReceived.serializer())
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package dev.inmo.tgbotapi.requests.gifts
|
||||
|
||||
import dev.inmo.micro_utils.common.Warning
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.OwnedGifts
|
||||
import dev.inmo.tgbotapi.types.UserId
|
||||
import dev.inmo.tgbotapi.types.gifts.GiftSentOrReceived
|
||||
import dev.inmo.tgbotapi.types.limitField
|
||||
import dev.inmo.tgbotapi.types.offsetField
|
||||
import dev.inmo.tgbotapi.types.userIdField
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
|
||||
// TODO::Fix
|
||||
@Serializable
|
||||
data class GetUserGifts(
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(userIdField)
|
||||
val userId: UserId,
|
||||
@SerialName(offsetField)
|
||||
val offset: String? = null,
|
||||
@SerialName(limitField)
|
||||
val limit: Int? = null,
|
||||
) : SimpleRequest<OwnedGifts<GiftSentOrReceived>> {
|
||||
override fun method(): String = "getUserGifts"
|
||||
|
||||
override val resultDeserializer: DeserializationStrategy<OwnedGifts<GiftSentOrReceived>>
|
||||
get() = Companion.resultSerializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
|
||||
companion object {
|
||||
@Warning("This API can be changed without any warranties of backward compatibility")
|
||||
val resultSerializer = OwnedGifts.serializer(GiftSentOrReceived.serializer())
|
||||
}
|
||||
}
|
||||
@@ -95,6 +95,7 @@ fun CopyMessage(
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
effectId: EffectId? = null,
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
@@ -112,6 +113,7 @@ fun CopyMessage(
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
effectId = effectId,
|
||||
suggestedPostParameters = suggestedPostParameters,
|
||||
replyParameters = replyParameters,
|
||||
replyMarkup = replyMarkup
|
||||
@@ -129,6 +131,7 @@ fun CopyMessage(
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
effectId: EffectId? = null,
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
@@ -146,6 +149,7 @@ fun CopyMessage(
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
effectId = effectId,
|
||||
suggestedPostParameters = suggestedPostParameters,
|
||||
replyParameters = replyParameters,
|
||||
replyMarkup = replyMarkup
|
||||
@@ -184,6 +188,8 @@ data class CopyMessage internal constructor(
|
||||
override val protectContent: Boolean = false,
|
||||
@SerialName(allowPaidBroadcastField)
|
||||
override val allowPaidBroadcast: Boolean = false,
|
||||
@SerialName(messageEffectIdField)
|
||||
val effectId: EffectId? = null,
|
||||
@SerialName(suggestedPostParametersField)
|
||||
override val suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
@SerialName(replyParametersField)
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
package dev.inmo.tgbotapi.requests.send
|
||||
|
||||
import dev.inmo.tgbotapi.abstracts.types.LinkPreviewOptionsContainer
|
||||
import dev.inmo.tgbotapi.requests.send.abstracts.*
|
||||
import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList
|
||||
import dev.inmo.tgbotapi.types.message.ParseMode
|
||||
import dev.inmo.tgbotapi.types.message.parseModeField
|
||||
import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup
|
||||
import dev.inmo.tgbotapi.types.message.*
|
||||
import dev.inmo.tgbotapi.types.message.RawMessageEntity
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializationStrategyClass
|
||||
import dev.inmo.tgbotapi.types.message.content.TextContent
|
||||
import dev.inmo.tgbotapi.types.message.toRawMessageEntities
|
||||
import dev.inmo.tgbotapi.utils.extensions.makeString
|
||||
import dev.inmo.tgbotapi.utils.throwRangeError
|
||||
import kotlinx.serialization.*
|
||||
|
||||
internal val TextContentMessageDraftResultDeserializer: DeserializationStrategy<ContentMessage<TextContent>>
|
||||
= TelegramBotAPIMessageDeserializationStrategyClass()
|
||||
|
||||
fun SendMessageDraft(
|
||||
chatId: ChatIdentifier,
|
||||
text: String,
|
||||
parseMode: ParseMode? = null,
|
||||
linkPreviewOptions: LinkPreviewOptions? = null,
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
effectId: EffectId? = null,
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
) = SendMessageDraft(
|
||||
chatId = chatId,
|
||||
text = text,
|
||||
parseMode = parseMode,
|
||||
rawEntities = null,
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
linkPreviewOptions = linkPreviewOptions,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
effectId = effectId,
|
||||
suggestedPostParameters = suggestedPostParameters,
|
||||
replyParameters = replyParameters,
|
||||
replyMarkup = replyMarkup
|
||||
)
|
||||
|
||||
fun SendMessageDraft(
|
||||
chatId: ChatIdentifier,
|
||||
entities: TextSourcesList,
|
||||
linkPreviewOptions: LinkPreviewOptions? = null,
|
||||
threadId: MessageThreadId? = chatId.threadId,
|
||||
directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
disableNotification: Boolean = false,
|
||||
protectContent: Boolean = false,
|
||||
allowPaidBroadcast: Boolean = false,
|
||||
effectId: EffectId? = null,
|
||||
suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
replyParameters: ReplyParameters? = null,
|
||||
replyMarkup: KeyboardMarkup? = null
|
||||
) = SendMessageDraft(
|
||||
chatId = chatId,
|
||||
text = entities.makeString(),
|
||||
parseMode = null,
|
||||
rawEntities = entities.toRawMessageEntities(),
|
||||
threadId = threadId,
|
||||
directMessageThreadId = directMessageThreadId,
|
||||
businessConnectionId = businessConnectionId,
|
||||
linkPreviewOptions = linkPreviewOptions,
|
||||
disableNotification = disableNotification,
|
||||
protectContent = protectContent,
|
||||
allowPaidBroadcast = allowPaidBroadcast,
|
||||
effectId = effectId,
|
||||
suggestedPostParameters = suggestedPostParameters,
|
||||
replyParameters = replyParameters,
|
||||
replyMarkup = replyMarkup
|
||||
)
|
||||
|
||||
@ConsistentCopyVisibility
|
||||
@Serializable
|
||||
data class SendMessageDraft internal constructor(
|
||||
@SerialName(chatIdField)
|
||||
override val chatId: ChatIdentifier,
|
||||
@SerialName(textField)
|
||||
override val text: String,
|
||||
@SerialName(parseModeField)
|
||||
override val parseMode: ParseMode? = null,
|
||||
@SerialName(entitiesField)
|
||||
private val rawEntities: List<RawMessageEntity>? = null,
|
||||
@OptIn(ExperimentalSerializationApi::class)
|
||||
@SerialName(messageThreadIdField)
|
||||
@EncodeDefault
|
||||
override val threadId: MessageThreadId? = chatId.threadId,
|
||||
@OptIn(ExperimentalSerializationApi::class)
|
||||
@EncodeDefault
|
||||
@SerialName(directMessagesTopicIdField)
|
||||
override val directMessageThreadId: DirectMessageThreadId? = chatId.directMessageThreadId,
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId? = chatId.businessConnectionId,
|
||||
@SerialName(linkPreviewOptionsField)
|
||||
override val linkPreviewOptions: LinkPreviewOptions? = null,
|
||||
@SerialName(disableNotificationField)
|
||||
override val disableNotification: Boolean = false,
|
||||
@SerialName(protectContentField)
|
||||
override val protectContent: Boolean = false,
|
||||
@SerialName(allowPaidBroadcastField)
|
||||
override val allowPaidBroadcast: Boolean = false,
|
||||
@SerialName(messageEffectIdField)
|
||||
override val effectId: EffectId? = null,
|
||||
@SerialName(suggestedPostParametersField)
|
||||
override val suggestedPostParameters: SuggestedPostParameters? = null,
|
||||
@SerialName(replyParametersField)
|
||||
override val replyParameters: ReplyParameters? = null,
|
||||
@SerialName(replyMarkupField)
|
||||
override val replyMarkup: KeyboardMarkup? = null
|
||||
) : SendContentMessageRequest<ContentMessage<TextContent>>,
|
||||
ReplyingMarkupSendMessageRequest<ContentMessage<TextContent>>,
|
||||
TextableSendMessageRequest<ContentMessage<TextContent>>,
|
||||
LinkPreviewOptionsContainer
|
||||
{
|
||||
override val textSources: TextSourcesList? by lazy {
|
||||
rawEntities ?.asTextSources(text)
|
||||
}
|
||||
|
||||
init {
|
||||
if (text.length !in textLength) {
|
||||
throwRangeError("Text length", textLength, text.length)
|
||||
}
|
||||
}
|
||||
|
||||
override fun method(): String = "sendMessageDraft"
|
||||
override val resultDeserializer: DeserializationStrategy<ContentMessage<TextContent>>
|
||||
get() = TextContentMessageDraftResultDeserializer
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package dev.inmo.tgbotapi.requests.stories
|
||||
|
||||
import dev.inmo.tgbotapi.abstracts.types.WithBusinessConnectionId
|
||||
import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest
|
||||
import dev.inmo.tgbotapi.types.StoryId
|
||||
import dev.inmo.tgbotapi.types.businessConnectionIdField
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessConnectionId
|
||||
import dev.inmo.tgbotapi.types.fromBusinessConnectionIdField
|
||||
import dev.inmo.tgbotapi.types.storyIdField
|
||||
import dev.inmo.tgbotapi.types.stories.Story
|
||||
import kotlinx.serialization.DeserializationStrategy
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
|
||||
@Serializable
|
||||
data class RepostStory(
|
||||
@SerialName(businessConnectionIdField)
|
||||
override val businessConnectionId: BusinessConnectionId,
|
||||
@SerialName(fromBusinessConnectionIdField)
|
||||
val fromBusinessConnectionId: BusinessConnectionId,
|
||||
@SerialName(storyIdField)
|
||||
val storyId: StoryId,
|
||||
) : SimpleRequest<Story>, WithBusinessConnectionId {
|
||||
override fun method(): String = "repostStory"
|
||||
|
||||
override val requestSerializer: SerializationStrategy<*>
|
||||
get() = serializer()
|
||||
override val resultDeserializer: DeserializationStrategy<Story>
|
||||
get() = Story.serializer()
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
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
|
||||
|
||||
@@ -118,11 +120,22 @@ fun SetWebhook(
|
||||
)
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* 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.
|
||||
*
|
||||
* 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.
|
||||
* @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])
|
||||
*/
|
||||
@ConsistentCopyVisibility
|
||||
@Serializable
|
||||
@@ -150,8 +163,19 @@ data class SetWebhook internal constructor(
|
||||
|
||||
init {
|
||||
maxAllowedConnections ?.let {
|
||||
if (it !in allowedConnectionsLength) {
|
||||
throw IllegalArgumentException("Allowed connection for webhook must be in $allowedConnectionsLength range (but passed $it)")
|
||||
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)")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,7 @@ 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
|
||||
@@ -189,6 +190,7 @@ const val unrestrictBoostsCountField = "unrestrict_boost_count"
|
||||
const val customEmojiStickerSetNameField = "custom_emoji_sticker_set_name"
|
||||
const val iconCustomEmojiIdField = "icon_custom_emoji_id"
|
||||
const val hasMainWebAppField = "has_main_web_app"
|
||||
const val hasTopicsEnabledField = "has_topics_enabled"
|
||||
const val canJoinGroupsField = "can_join_groups"
|
||||
const val canReadAllGroupMessagesField = "can_read_all_group_messages"
|
||||
const val canReplyField = "can_reply"
|
||||
@@ -312,8 +314,10 @@ const val createsJoinRequestField = "creates_join_request"
|
||||
const val pendingJoinRequestCountField = "pending_join_request_count"
|
||||
const val memberLimitField = "member_limit"
|
||||
const val iconColorField = "icon_color"
|
||||
const val isNameImplicitField = "is_name_implicit"
|
||||
const val emojiListField = "emoji_list"
|
||||
const val completedByUserField = "completed_by_user"
|
||||
const val completedByChatField = "completed_by_chat"
|
||||
const val completionDateField = "completion_date"
|
||||
const val titleEntitiesField = "title_entities"
|
||||
const val tasksField = "tasks"
|
||||
@@ -532,6 +536,7 @@ const val topicIdField = "topic_id"
|
||||
const val isPublicField = "is_public"
|
||||
|
||||
const val giftField = "gift"
|
||||
const val giftUpgradeSentField = "gift_upgrade_sent"
|
||||
const val giftsField = "gifts"
|
||||
const val rarityPerMilleField = "rarity_per_mille"
|
||||
const val acceptedGiftTypesField = "accepted_gift_types"
|
||||
@@ -544,6 +549,8 @@ const val isDirectMessagesField = "is_direct_messages"
|
||||
const val nextTransferDateField = "next_transfer_date"
|
||||
const val transferStarCountField = "transfer_star_count"
|
||||
const val lastResaleStarCountField = "last_resale_star_count"
|
||||
const val lastResaleCurrencyField = "last_resale_currency"
|
||||
const val lastResaleAmountField = "last_resale_amount"
|
||||
const val newOwnerChatIdField = "new_owner_chat_id"
|
||||
|
||||
const val pointField = "point"
|
||||
@@ -648,6 +655,8 @@ const val mediaField = "media"
|
||||
const val mainFrameTimestampField = "main_frame_timestamp"
|
||||
|
||||
const val paidMessageStarCountField = "paid_message_star_count"
|
||||
const val ratingField = "rating"
|
||||
const val uniqueGiftColorsField = "unique_gift_colors"
|
||||
const val paidStarCountField = "paid_star_count"
|
||||
const val isPaidPostField = "is_paid_post"
|
||||
|
||||
@@ -729,31 +738,48 @@ const val upgradeStarCountField = "upgrade_star_count"
|
||||
const val payToUpgradeField = "pay_for_upgrade"
|
||||
const val paidMediaField = "paid_media"
|
||||
const val publisherChatField = "publisher_chat"
|
||||
const val personalTotalCountField = "personal_total_count"
|
||||
const val personalRemainingCountField = "personal_remaining_count"
|
||||
const val isPremiumField2 = "is_premium"
|
||||
const val hasColorsField = "has_colors"
|
||||
const val uniqueGiftVariantCountField = "unique_gift_variant_count"
|
||||
const val uniqueGiftNumberField = "unique_gift_number"
|
||||
const val isUpgradeSeparateField = "is_upgrade_separate"
|
||||
const val isFromBlockchainField = "is_from_blockchain"
|
||||
|
||||
const val centerColorField = "center_color"
|
||||
const val edgeColorField = "edge_color"
|
||||
const val symbolColorField = "symbol_color"
|
||||
const val textColorField = "text_color"
|
||||
const val nameColorField = "name_color"
|
||||
const val baseColorField = "base_color"
|
||||
const val linkColorField = "link_color"
|
||||
|
||||
const val baseNameField = "base_name"
|
||||
const val numberField = "number"
|
||||
const val modelField = "model"
|
||||
const val symbolField = "symbol"
|
||||
const val backdropField = "backdrop"
|
||||
const val backgroundField = "background"
|
||||
|
||||
const val unlimitedGiftsField = "unlimited_gifts"
|
||||
const val limitedGiftsField = "limited_gifts"
|
||||
const val uniqueGiftsField = "unique_gifts"
|
||||
const val premiumSubscriptionField = "premium_subscription"
|
||||
const val giftsFromChannelsField = "gifts_from_channels"
|
||||
|
||||
const val excludeUnsavedField = "exclude_unsaved"
|
||||
const val excludeSavedField = "exclude_saved"
|
||||
const val excludeUnlimitedField = "exclude_unlimited"
|
||||
const val excludeLimitedField = "exclude_limited"
|
||||
const val excludeLimitedUpgradableField = "exclude_limited_upgradable"
|
||||
const val excludeLimitedNonUpgradableField = "exclude_limited_non_upgradable"
|
||||
const val excludeUniqueField = "exclude_unique"
|
||||
const val excludeFromBlockchainField = "exclude_from_blockchain"
|
||||
const val sortByPriceField = "sort_by_price"
|
||||
|
||||
const val businessConnectionIdField = "business_connection_id"
|
||||
const val fromBusinessConnectionIdField = "from_business_connection_id"
|
||||
const val businessIntroField = "business_intro"
|
||||
const val businessLocationField = "business_location"
|
||||
const val businessOpeningHoursField = "business_opening_hours"
|
||||
|
||||
@@ -13,7 +13,9 @@ data class ForumTopic(
|
||||
@SerialName(iconColorField)
|
||||
val color: RGBColor,
|
||||
@SerialName(iconCustomEmojiIdField)
|
||||
val iconEmojiId: CustomEmojiId? = null
|
||||
val iconEmojiId: CustomEmojiId? = null,
|
||||
@SerialName(isNameImplicitField)
|
||||
val isNameImplicit: Boolean = false
|
||||
) {
|
||||
companion object {
|
||||
val CYAN = RGBColor(0x6FB9F0)
|
||||
|
||||
@@ -18,6 +18,15 @@ 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 {
|
||||
@@ -51,7 +60,11 @@ sealed interface SupergroupChat : GroupChat, SuperPublicChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(ChatSerializer::class)
|
||||
sealed interface ForumChat : SupergroupChat
|
||||
sealed interface ForumChat : Chat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(ChatSerializer::class)
|
||||
sealed interface SupergroupForumChat : SupergroupChat, ForumChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(ChatSerializer::class)
|
||||
|
||||
@@ -81,8 +81,16 @@ object ChatSerializer : KSerializer<Chat> {
|
||||
val original = decodedJson[originField]
|
||||
|
||||
when (type) {
|
||||
ChatType.Sender -> formatter.decodeFromJsonElement(PrivateChatImpl.serializer(), decodedJson)
|
||||
ChatType.Private -> formatter.decodeFromJsonElement(PrivateChatImpl.serializer(), decodedJson)
|
||||
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.Group -> formatter.decodeFromJsonElement(GroupChatImpl.serializer(), decodedJson)
|
||||
ChatType.Supergroup -> when {
|
||||
isForum -> formatter.decodeFromJsonElement(ForumChatImpl.serializer(), decodedJson)
|
||||
@@ -128,8 +136,16 @@ object PreviewChatSerializer : KSerializer<PreviewChat> {
|
||||
val original = decodedJson[originField]
|
||||
|
||||
return when (type) {
|
||||
ChatType.Sender -> formatter.decodeFromJsonElement(PrivateChatImpl.serializer(), decodedJson)
|
||||
ChatType.Private -> formatter.decodeFromJsonElement(PrivateChatImpl.serializer(), decodedJson)
|
||||
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.Group -> formatter.decodeFromJsonElement(GroupChatImpl.serializer(), decodedJson)
|
||||
ChatType.Supergroup -> {
|
||||
when {
|
||||
@@ -156,6 +172,7 @@ 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)
|
||||
@@ -183,8 +200,16 @@ sealed class ExtendedChatSerializer : KSerializer<ExtendedChat> {
|
||||
val original = decodedJson[originField]
|
||||
|
||||
return when (type) {
|
||||
ChatType.Sender -> formatter.decodeFromJsonElement(ExtendedPrivateChatImpl.serializer(), decodedJson)
|
||||
ChatType.Private -> formatter.decodeFromJsonElement(ExtendedPrivateChatImpl.serializer(), decodedJson)
|
||||
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.Group -> formatter.decodeFromJsonElement(ExtendedGroupChatImpl.serializer(), decodedJson)
|
||||
ChatType.Supergroup -> {
|
||||
when {
|
||||
@@ -212,6 +237,7 @@ 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)
|
||||
@@ -238,7 +264,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) {
|
||||
if (it is ExtendedPrivateChatImpl || it is ExtendedPrivateForumChatImpl) {
|
||||
ExtendedBusinessChatImpl(
|
||||
BusinessChatId(it.id.chatId, businessConnectionId),
|
||||
it
|
||||
|
||||
@@ -6,6 +6,7 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessLocation
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessOpeningHours
|
||||
import dev.inmo.tgbotapi.types.colors.ColorId
|
||||
import dev.inmo.tgbotapi.types.gifts.AcceptedGiftTypes
|
||||
import dev.inmo.tgbotapi.types.gifts.unique.UniqueGiftColors
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.Message
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer
|
||||
import dev.inmo.tgbotapi.types.reactions.Reaction
|
||||
@@ -65,7 +66,13 @@ data class ExtendedChannelChatImpl(
|
||||
@SerialName(hasVisibleHistoryField)
|
||||
override val newMembersSeeHistory: Boolean = false,
|
||||
@SerialName(maxReactionCountField)
|
||||
override val maxReactionsCount: Int = 3
|
||||
override val maxReactionsCount: Int = 3,
|
||||
@SerialName(ratingField)
|
||||
override val rating: UserRating? = null,
|
||||
@SerialName(paidMessageStarCountField)
|
||||
override val paidMessageStarCount: Int? = null,
|
||||
@SerialName(uniqueGiftColorsField)
|
||||
override val uniqueGiftColors: UniqueGiftColors? = null
|
||||
) : ExtendedChannelChat
|
||||
|
||||
@Serializable
|
||||
@@ -109,6 +116,12 @@ data class ExtendedGroupChatImpl(
|
||||
override val maxReactionsCount: Int = 3,
|
||||
@SerialName(acceptedGiftTypesField)
|
||||
override val acceptedGiftTypes: AcceptedGiftTypes = AcceptedGiftTypes(),
|
||||
@SerialName(ratingField)
|
||||
override val rating: UserRating? = null,
|
||||
@SerialName(paidMessageStarCountField)
|
||||
override val paidMessageStarCount: Int? = null,
|
||||
@SerialName(uniqueGiftColorsField)
|
||||
override val uniqueGiftColors: UniqueGiftColors? = null
|
||||
) : ExtendedGroupChat
|
||||
|
||||
@Serializable
|
||||
@@ -165,7 +178,61 @@ data class ExtendedPrivateChatImpl(
|
||||
override val acceptedGiftTypes: AcceptedGiftTypes = AcceptedGiftTypes(),
|
||||
) : ExtendedPrivateChat
|
||||
|
||||
typealias ExtendedUser = ExtendedPrivateChatImpl
|
||||
@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
|
||||
|
||||
@Serializable
|
||||
@RiskFeature("This class is a subject of changes. It is better to use ExtendedSupergroupChat due")
|
||||
@@ -235,6 +302,12 @@ data class ExtendedSupergroupChatImpl(
|
||||
override val maxReactionsCount: Int = 3,
|
||||
@SerialName(acceptedGiftTypesField)
|
||||
override val acceptedGiftTypes: AcceptedGiftTypes = AcceptedGiftTypes(),
|
||||
@SerialName(ratingField)
|
||||
override val rating: UserRating? = null,
|
||||
@SerialName(paidMessageStarCountField)
|
||||
override val paidMessageStarCount: Int? = null,
|
||||
@SerialName(uniqueGiftColorsField)
|
||||
override val uniqueGiftColors: UniqueGiftColors? = null
|
||||
) : ExtendedSupergroupChat
|
||||
|
||||
@Serializable
|
||||
@@ -305,6 +378,12 @@ data class ExtendedForumChatImpl(
|
||||
override val maxReactionsCount: Int = 3,
|
||||
@SerialName(acceptedGiftTypesField)
|
||||
override val acceptedGiftTypes: AcceptedGiftTypes = AcceptedGiftTypes(),
|
||||
@SerialName(ratingField)
|
||||
override val rating: UserRating? = null,
|
||||
@SerialName(paidMessageStarCountField)
|
||||
override val paidMessageStarCount: Int? = null,
|
||||
@SerialName(uniqueGiftColorsField)
|
||||
override val uniqueGiftColors: UniqueGiftColors? = null
|
||||
) : ExtendedForumChat
|
||||
|
||||
@Serializable
|
||||
@@ -378,6 +457,12 @@ data class ExtendedChannelDirectMessagesChatImpl(
|
||||
override val maxReactionsCount: Int = 3,
|
||||
@SerialName(acceptedGiftTypesField)
|
||||
override val acceptedGiftTypes: AcceptedGiftTypes = AcceptedGiftTypes(),
|
||||
@SerialName(ratingField)
|
||||
override val rating: UserRating? = null,
|
||||
@SerialName(paidMessageStarCountField)
|
||||
override val paidMessageStarCount: Int? = null,
|
||||
@SerialName(uniqueGiftColorsField)
|
||||
override val uniqueGiftColors: UniqueGiftColors? = null
|
||||
) : ExtendedChannelDirectMessagesChat {
|
||||
@OptIn(ExperimentalSerializationApi::class)
|
||||
@SerialName(isDirectMessagesField)
|
||||
@@ -419,6 +504,8 @@ data class ExtendedBot(
|
||||
override val maxReactionsCount: Int = 3,
|
||||
@SerialName(hasMainWebAppField)
|
||||
val hasMainWebApp: Boolean = false,
|
||||
@SerialName(hasTopicsEnabledField)
|
||||
val hasTopicsEnabled: Boolean = false,
|
||||
@SerialName(acceptedGiftTypesField)
|
||||
override val acceptedGiftTypes: AcceptedGiftTypes = AcceptedGiftTypes(),
|
||||
) : Bot(), ExtendedChat {
|
||||
|
||||
@@ -6,6 +6,7 @@ import dev.inmo.tgbotapi.types.business_connection.BusinessLocation
|
||||
import dev.inmo.tgbotapi.types.business_connection.BusinessOpeningHours
|
||||
import dev.inmo.tgbotapi.types.colors.ColorId
|
||||
import dev.inmo.tgbotapi.types.gifts.AcceptedGiftTypes
|
||||
import dev.inmo.tgbotapi.types.gifts.unique.UniqueGiftColors
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.Message
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.TelegramBotAPIMessageDeserializeOnlySerializer
|
||||
import dev.inmo.tgbotapi.types.reactions.Reaction
|
||||
@@ -56,7 +57,7 @@ sealed interface ExtendedGroupChat : GroupChat, ExtendedPublicChat {
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(ExtendedChatSerializer.Companion::class)
|
||||
sealed interface ExtendedPrivateChat : PrivateChat, ExtendedChatWithUsername, ExtendedNonBotChat {
|
||||
sealed interface ExtendedPrivateChat : PrivateUserChat, ExtendedChatWithUsername, ExtendedNonBotChat {
|
||||
val bio: String
|
||||
val hasPrivateForwards: Boolean
|
||||
val hasRestrictedVoiceAndVideoMessages: Boolean
|
||||
@@ -72,6 +73,10 @@ sealed interface ExtendedPrivateChat : PrivateChat, ExtendedChatWithUsername, Ex
|
||||
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?
|
||||
@@ -81,6 +86,9 @@ sealed interface ExtendedPublicChat : ExtendedChat, PublicChat, ExtendedNonBotCh
|
||||
val membersHidden: Boolean
|
||||
val availableReactions: List<Reaction>?
|
||||
val newMembersSeeHistory: Boolean
|
||||
val rating: UserRating?
|
||||
val paidMessageStarCount: Int?
|
||||
val uniqueGiftColors: UniqueGiftColors?
|
||||
}
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@@ -112,7 +120,7 @@ sealed interface ExtendedSupergroupChat : SupergroupChat, ExtendedGroupChat, Ext
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(ExtendedChatSerializer.Companion::class)
|
||||
sealed interface ExtendedForumChat : ExtendedSupergroupChat, ForumChat
|
||||
sealed interface ExtendedForumChat : ExtendedSupergroupChat, SupergroupForumChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(PreviewChatSerializer::class)
|
||||
|
||||
@@ -33,6 +33,20 @@ 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")
|
||||
@@ -115,7 +129,7 @@ sealed class Bot : User()
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(UserSerializer::class)
|
||||
sealed class PreviewBot : PreviewUser()
|
||||
sealed class PreviewBot : PrivateChat, PreviewChat, User()
|
||||
|
||||
@Serializable
|
||||
data class CommonBot(
|
||||
@@ -129,6 +143,8 @@ data class CommonBot(
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(usernameField)
|
||||
override val username: Username? = null,
|
||||
@SerialName(hasTopicsEnabledField)
|
||||
val hasTopicsEnabled: Boolean = false,
|
||||
) : PreviewBot() {
|
||||
@SerialName(isBotField)
|
||||
private val isBot = true
|
||||
|
||||
@@ -11,7 +11,11 @@ sealed interface PreviewUsernameChat : PreviewChat, UsernameChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(PreviewChatSerializer::class)
|
||||
sealed interface PreviewPrivateChat : PreviewUsernameChat, PrivateChat
|
||||
sealed interface PreviewPrivateChat : PreviewUsernameChat, PrivateUserChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(PreviewChatSerializer::class)
|
||||
sealed interface PreviewPrivateForumChat : PreviewPrivateChat, PrivateForumChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(PreviewChatSerializer::class)
|
||||
@@ -39,7 +43,7 @@ sealed interface PreviewSupergroupChat : PreviewGroupChat, PreviewSuperPublicCha
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(PreviewChatSerializer::class)
|
||||
sealed interface PreviewForumChat : PreviewSupergroupChat, ForumChat
|
||||
sealed interface PreviewForumChat : PreviewSupergroupChat, SupergroupForumChat
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@Serializable(PreviewChatSerializer::class)
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package dev.inmo.tgbotapi.types.chat
|
||||
|
||||
import dev.inmo.tgbotapi.types.countField
|
||||
import dev.inmo.tgbotapi.types.ratingField
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class UserRating(
|
||||
@SerialName(countField)
|
||||
val count: Int,
|
||||
@SerialName(ratingField)
|
||||
val rating: Double
|
||||
)
|
||||
@@ -3,8 +3,10 @@ package dev.inmo.tgbotapi.types.checklists
|
||||
import dev.inmo.micro_utils.common.Warning
|
||||
import dev.inmo.tgbotapi.abstracts.TextedInput
|
||||
import dev.inmo.tgbotapi.types.TelegramDate
|
||||
import dev.inmo.tgbotapi.types.chat.PreviewChat
|
||||
import dev.inmo.tgbotapi.types.chat.PreviewUser
|
||||
import dev.inmo.tgbotapi.types.completedByUserField
|
||||
import dev.inmo.tgbotapi.types.completedByChatField
|
||||
import dev.inmo.tgbotapi.types.completionDateField
|
||||
import dev.inmo.tgbotapi.types.idField
|
||||
import dev.inmo.tgbotapi.types.message.ParseMode
|
||||
@@ -130,6 +132,8 @@ sealed interface ChecklistTask : TextedInput {
|
||||
override val id: ChecklistTaskId,
|
||||
@SerialName(completedByUserField)
|
||||
override val completedByUser: PreviewUser,
|
||||
@SerialName(completedByChatField)
|
||||
val completedByChat: PreviewChat? = null,
|
||||
@SerialName(completionDateField)
|
||||
override val completionDate: TelegramDate,
|
||||
@SerialName(textEntitiesField)
|
||||
@@ -145,10 +149,12 @@ sealed interface ChecklistTask : TextedInput {
|
||||
id: ChecklistTaskId,
|
||||
text: String,
|
||||
completedByUser: PreviewUser,
|
||||
completedByChat: PreviewChat? = null,
|
||||
completionDate: TelegramDate,
|
||||
): this(
|
||||
id,
|
||||
completedByUser,
|
||||
completedByChat,
|
||||
completionDate,
|
||||
listOf(
|
||||
RegularTextSource(text)
|
||||
@@ -176,6 +182,8 @@ sealed interface ChecklistTask : TextedInput {
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@SerialName(completedByUserField)
|
||||
val completedByUser: PreviewUser? = null,
|
||||
@SerialName(completedByChatField)
|
||||
val completedByChat: PreviewChat? = null,
|
||||
@SerialName(completionDateField)
|
||||
val completionDate: TelegramDate = TelegramDate(0), // TelegramDate(0) is the default according to https://core.telegram.org/bots/api#checklisttask
|
||||
)
|
||||
@@ -190,6 +198,7 @@ sealed interface ChecklistTask : TextedInput {
|
||||
raw.completedByUser != null -> Done(
|
||||
id = raw.id,
|
||||
completedByUser = raw.completedByUser,
|
||||
completedByChat = raw.completedByChat,
|
||||
completionDate = raw.completionDate,
|
||||
textSources = raw.textSources.asTextSources(raw.text),
|
||||
)
|
||||
@@ -207,6 +216,7 @@ sealed interface ChecklistTask : TextedInput {
|
||||
id = value.id,
|
||||
text = value.text,
|
||||
completedByUser = value.completedByUser,
|
||||
completedByChat = (value as? Done)?.completedByChat,
|
||||
completionDate = value.completionDate ?: TelegramDate(0),
|
||||
textSources = value.textSources.toRawMessageEntities()
|
||||
)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package dev.inmo.tgbotapi.types.gifts
|
||||
|
||||
import dev.inmo.tgbotapi.types.giftsFromChannelsField
|
||||
import dev.inmo.tgbotapi.types.limitedGiftsField
|
||||
import dev.inmo.tgbotapi.types.premiumSubscriptionField
|
||||
import dev.inmo.tgbotapi.types.uniqueGiftsField
|
||||
@@ -17,5 +18,7 @@ data class AcceptedGiftTypes(
|
||||
@SerialName(uniqueGiftsField)
|
||||
val uniqueGifts: Boolean = false,
|
||||
@SerialName(premiumSubscriptionField)
|
||||
val premiumSubscription: Boolean = false
|
||||
val premiumSubscription: Boolean = false,
|
||||
@SerialName(giftsFromChannelsField)
|
||||
val giftsFromChannels: Boolean = false
|
||||
)
|
||||
|
||||
@@ -4,6 +4,7 @@ import dev.inmo.tgbotapi.types.*
|
||||
import dev.inmo.tgbotapi.types.chat.PreviewChat
|
||||
import dev.inmo.tgbotapi.types.files.Sticker
|
||||
import dev.inmo.tgbotapi.types.gifts.unique.UniqueGiftBackdrop
|
||||
import dev.inmo.tgbotapi.types.gifts.unique.UniqueGiftColors
|
||||
import dev.inmo.tgbotapi.types.gifts.unique.UniqueGiftModel
|
||||
import dev.inmo.tgbotapi.types.gifts.unique.UniqueGiftSymbol
|
||||
import kotlinx.serialization.KSerializer
|
||||
@@ -24,6 +25,12 @@ sealed interface Gift {
|
||||
val totalCount: Int?
|
||||
val upgradeStarCount: Int?
|
||||
val remainingCount: Int?
|
||||
val personalTotalCount: Int?
|
||||
val personalRemainingCount: Int?
|
||||
val isPremium: Boolean
|
||||
val hasColors: Boolean
|
||||
val background: dev.inmo.tgbotapi.types.gifts.GiftBackground?
|
||||
val uniqueGiftVariantCount: Int?
|
||||
|
||||
@Serializable
|
||||
data class Unlimited(
|
||||
@@ -37,6 +44,18 @@ sealed interface Gift {
|
||||
override val upgradeStarCount: Int? = null,
|
||||
@SerialName(publisherChatField)
|
||||
override val publisherChat: PreviewChat? = null,
|
||||
@SerialName(personalTotalCountField)
|
||||
override val personalTotalCount: Int? = null,
|
||||
@SerialName(personalRemainingCountField)
|
||||
override val personalRemainingCount: Int? = null,
|
||||
@SerialName(isPremiumField2)
|
||||
override val isPremium: Boolean = false,
|
||||
@SerialName(hasColorsField)
|
||||
override val hasColors: Boolean = false,
|
||||
@SerialName(backgroundField)
|
||||
override val background: dev.inmo.tgbotapi.types.gifts.GiftBackground? = null,
|
||||
@SerialName(uniqueGiftVariantCountField)
|
||||
override val uniqueGiftVariantCount: Int? = null,
|
||||
) : Regular {
|
||||
override val totalCount: Int?
|
||||
get() = null
|
||||
@@ -60,6 +79,18 @@ sealed interface Gift {
|
||||
override val upgradeStarCount: Int? = null,
|
||||
@SerialName(publisherChatField)
|
||||
override val publisherChat: PreviewChat? = null,
|
||||
@SerialName(personalTotalCountField)
|
||||
override val personalTotalCount: Int? = null,
|
||||
@SerialName(personalRemainingCountField)
|
||||
override val personalRemainingCount: Int? = null,
|
||||
@SerialName(isPremiumField2)
|
||||
override val isPremium: Boolean = false,
|
||||
@SerialName(hasColorsField)
|
||||
override val hasColors: Boolean = false,
|
||||
@SerialName(backgroundField)
|
||||
override val background: dev.inmo.tgbotapi.types.gifts.GiftBackground? = null,
|
||||
@SerialName(uniqueGiftVariantCountField)
|
||||
override val uniqueGiftVariantCount: Int? = null,
|
||||
) : Regular
|
||||
|
||||
companion object : KSerializer<Regular> {
|
||||
@@ -73,6 +104,12 @@ sealed interface Gift {
|
||||
val remaining_count: Int? = null,
|
||||
val upgrade_star_count: Int? = null,
|
||||
val publisher_chat: PreviewChat? = null,
|
||||
val personal_total_count: Int? = null,
|
||||
val personal_remaining_count: Int? = null,
|
||||
val is_premium: Boolean = false,
|
||||
val has_colors: Boolean = false,
|
||||
val background: dev.inmo.tgbotapi.types.gifts.GiftBackground? = null,
|
||||
val unique_gift_variant_count: Int? = null,
|
||||
)
|
||||
|
||||
override val descriptor: SerialDescriptor
|
||||
@@ -89,7 +126,13 @@ sealed interface Gift {
|
||||
totalCount = surrogate.total_count,
|
||||
remainingCount = surrogate.remaining_count,
|
||||
upgradeStarCount = surrogate.upgrade_star_count,
|
||||
publisherChat = surrogate.publisher_chat
|
||||
publisherChat = surrogate.publisher_chat,
|
||||
personalTotalCount = surrogate.personal_total_count,
|
||||
personalRemainingCount = surrogate.personal_remaining_count,
|
||||
isPremium = surrogate.is_premium,
|
||||
hasColors = surrogate.has_colors,
|
||||
background = surrogate.background,
|
||||
uniqueGiftVariantCount = surrogate.unique_gift_variant_count
|
||||
)
|
||||
} else {
|
||||
Unlimited(
|
||||
@@ -98,6 +141,12 @@ sealed interface Gift {
|
||||
starCount = surrogate.star_count,
|
||||
upgradeStarCount = surrogate.upgrade_star_count,
|
||||
publisherChat = surrogate.publisher_chat,
|
||||
personalTotalCount = surrogate.personal_total_count,
|
||||
personalRemainingCount = surrogate.personal_remaining_count,
|
||||
isPremium = surrogate.is_premium,
|
||||
hasColors = surrogate.has_colors,
|
||||
background = surrogate.background,
|
||||
uniqueGiftVariantCount = surrogate.unique_gift_variant_count
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -110,7 +159,13 @@ sealed interface Gift {
|
||||
total_count = value.totalCount,
|
||||
remaining_count = value.remainingCount,
|
||||
upgrade_star_count = value.upgradeStarCount,
|
||||
publisher_chat = value.publisherChat
|
||||
publisher_chat = value.publisherChat,
|
||||
personal_total_count = value.personalTotalCount,
|
||||
personal_remaining_count = value.personalRemainingCount,
|
||||
is_premium = value.isPremium,
|
||||
has_colors = value.hasColors,
|
||||
background = value.background,
|
||||
unique_gift_variant_count = value.uniqueGiftVariantCount
|
||||
)
|
||||
RegularGiftSurrogate.serializer().serialize(encoder, surrogate)
|
||||
}
|
||||
@@ -119,6 +174,8 @@ sealed interface Gift {
|
||||
|
||||
@Serializable
|
||||
data class Unique(
|
||||
@SerialName(giftIdField)
|
||||
val id: GiftId? = null,
|
||||
@SerialName(baseNameField)
|
||||
val baseName: String,
|
||||
@SerialName(nameField)
|
||||
@@ -132,7 +189,13 @@ sealed interface Gift {
|
||||
@SerialName(backdropField)
|
||||
val backdrop: UniqueGiftBackdrop,
|
||||
@SerialName(publisherChatField)
|
||||
override val publisherChat: PreviewChat? = null
|
||||
override val publisherChat: PreviewChat? = null,
|
||||
@SerialName(isFromBlockchainField)
|
||||
val isFromBlockchain: Boolean = false,
|
||||
@SerialName(isPremiumField2)
|
||||
val isPremium: Boolean = false,
|
||||
@SerialName(colorsField)
|
||||
val colors: UniqueGiftColors = null
|
||||
) : Gift
|
||||
|
||||
companion object : KSerializer<Gift> {
|
||||
@@ -146,6 +209,12 @@ sealed interface Gift {
|
||||
val total_count: Int? = null,
|
||||
val remaining_count: Int? = null,
|
||||
val upgrade_star_count: Int? = null,
|
||||
val personal_total_count: Int? = null,
|
||||
val personal_remaining_count: Int? = null,
|
||||
val is_premium: Boolean = false,
|
||||
val has_colors: Boolean = false,
|
||||
val background: dev.inmo.tgbotapi.types.gifts.GiftBackground? = null,
|
||||
val unique_gift_variant_count: Int? = null,
|
||||
// unique gift fields
|
||||
val base_name: String? = null,
|
||||
val name: String? = null,
|
||||
@@ -153,6 +222,8 @@ sealed interface Gift {
|
||||
val model: UniqueGiftModel? = null,
|
||||
val symbol: UniqueGiftSymbol? = null,
|
||||
val backdrop: UniqueGiftBackdrop? = null,
|
||||
val is_from_blockchain: Boolean = false,
|
||||
val colors: dev.inmo.tgbotapi.types.gifts.unique.UniqueGiftColors? = null,
|
||||
val publisher_chat: PreviewChat? = null,
|
||||
)
|
||||
|
||||
@@ -164,13 +235,17 @@ sealed interface Gift {
|
||||
|
||||
return if (surrogate.base_name != null && surrogate.name != null && surrogate.number != null && surrogate.model != null && surrogate.symbol != null && surrogate.backdrop != null) {
|
||||
Unique(
|
||||
id = surrogate.id,
|
||||
baseName = surrogate.base_name,
|
||||
name = surrogate.name,
|
||||
number = surrogate.number,
|
||||
model = surrogate.model,
|
||||
symbol = surrogate.symbol,
|
||||
backdrop = surrogate.backdrop,
|
||||
publisherChat = surrogate.publisher_chat
|
||||
publisherChat = surrogate.publisher_chat,
|
||||
isFromBlockchain = surrogate.is_from_blockchain,
|
||||
isPremium = surrogate.is_premium,
|
||||
colors = surrogate.colors
|
||||
)
|
||||
} else {
|
||||
decoder.decodeSerializableValue(Regular.serializer())
|
||||
@@ -188,12 +263,21 @@ sealed interface Gift {
|
||||
total_count = (value as? Regular.Limited)?.totalCount,
|
||||
remaining_count = (value as? Regular.Limited)?.remainingCount,
|
||||
upgrade_star_count = (value as? Regular)?.upgradeStarCount,
|
||||
personal_total_count = (value as? Regular)?.personalTotalCount,
|
||||
personal_remaining_count = (value as? Regular)?.personalRemainingCount,
|
||||
is_premium = (value as? Regular)?.isPremium ?: (value as? Unique)?.isPremium ?: false,
|
||||
has_colors = (value as? Regular)?.hasColors ?: false,
|
||||
background = (value as? Regular)?.background,
|
||||
unique_gift_variant_count = (value as? Regular)?.uniqueGiftVariantCount,
|
||||
base_name = (value as? Unique)?.baseName,
|
||||
name = (value as? Unique)?.name,
|
||||
number = (value as? Unique)?.number,
|
||||
model = (value as? Unique)?.model,
|
||||
symbol = (value as? Unique)?.symbol,
|
||||
backdrop = (value as? Unique)?.backdrop,
|
||||
gift_id = (value as? Unique)?.id,
|
||||
is_from_blockchain = (value as? Unique)?.isFromBlockchain ?: false,
|
||||
colors = (value as? Unique)?.colors,
|
||||
publisher_chat = value.publisherChat,
|
||||
)
|
||||
GiftSurrogate.serializer().serialize(encoder, surrogate)
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package dev.inmo.tgbotapi.types.gifts
|
||||
|
||||
import dev.inmo.tgbotapi.types.backgroundField
|
||||
import dev.inmo.tgbotapi.types.files.PathedFile
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
|
||||
@Serializable
|
||||
data class GiftBackground(
|
||||
@SerialName(backgroundField)
|
||||
val background: PathedFile
|
||||
)
|
||||
@@ -9,6 +9,7 @@ import dev.inmo.tgbotapi.types.message.asTextSources
|
||||
import dev.inmo.tgbotapi.types.message.textsources.TextSource
|
||||
import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList
|
||||
import dev.inmo.tgbotapi.types.message.toRawMessageEntities
|
||||
import dev.inmo.tgbotapi.types.payments.abstracts.Currency
|
||||
import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded
|
||||
import kotlinx.serialization.EncodeDefault
|
||||
import kotlinx.serialization.KSerializer
|
||||
@@ -51,6 +52,8 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
val prepaidUpgradeStarCount: Int?
|
||||
val canBeUpgraded: Boolean
|
||||
val isPrivate: Boolean
|
||||
val isUpgradeSeparate: Boolean
|
||||
val uniqueGiftNumber: Int?
|
||||
|
||||
@Serializable
|
||||
data class Common(
|
||||
@@ -68,6 +71,10 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
private val entities: RawMessageEntities? = null,
|
||||
@SerialName(isPrivateField)
|
||||
override val isPrivate: Boolean = false,
|
||||
@SerialName(isUpgradeSeparateField)
|
||||
override val isUpgradeSeparate: Boolean = false,
|
||||
@SerialName(uniqueGiftNumberField)
|
||||
override val uniqueGiftNumber: Int? = null,
|
||||
@SerialName(nextTransferDateField)
|
||||
override val nextTransferDate: TelegramDate? = null
|
||||
) : Regular {
|
||||
@@ -96,6 +103,10 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
private val entities: RawMessageEntities? = null,
|
||||
@SerialName(isPrivateField)
|
||||
override val isPrivate: Boolean = false,
|
||||
@SerialName(isUpgradeSeparateField)
|
||||
override val isUpgradeSeparate: Boolean = false,
|
||||
@SerialName(uniqueGiftNumberField)
|
||||
override val uniqueGiftNumber: Int? = null,
|
||||
@SerialName(nextTransferDateField)
|
||||
override val nextTransferDate: TelegramDate? = null
|
||||
) : Regular, GiftSentOrReceived.ReceivedInBusinessAccount {
|
||||
@@ -123,6 +134,10 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
val entities: RawMessageEntities? = null,
|
||||
@SerialName(isPrivateField)
|
||||
val isPrivate: Boolean = false,
|
||||
@SerialName(isUpgradeSeparateField)
|
||||
val isUpgradeSeparate: Boolean = false,
|
||||
@SerialName(uniqueGiftNumberField)
|
||||
val uniqueGiftNumber: Int? = null,
|
||||
@SerialName(nextTransferDateField)
|
||||
val nextTransferDate: TelegramDate? = null
|
||||
)
|
||||
@@ -150,6 +165,8 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
text = surrogate.text,
|
||||
entities = surrogate.entities,
|
||||
isPrivate = surrogate.isPrivate,
|
||||
isUpgradeSeparate = surrogate.isUpgradeSeparate,
|
||||
uniqueGiftNumber = surrogate.uniqueGiftNumber,
|
||||
nextTransferDate = surrogate.nextTransferDate
|
||||
)
|
||||
}
|
||||
@@ -163,6 +180,8 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
text = surrogate.text,
|
||||
entities = surrogate.entities,
|
||||
isPrivate = surrogate.isPrivate,
|
||||
isUpgradeSeparate = surrogate.isUpgradeSeparate,
|
||||
uniqueGiftNumber = surrogate.uniqueGiftNumber,
|
||||
nextTransferDate = surrogate.nextTransferDate
|
||||
)
|
||||
}
|
||||
@@ -178,7 +197,9 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
text: String? = null,
|
||||
textSources: TextSourcesList = emptyList(),
|
||||
position: Int,
|
||||
isPrivate: Boolean = false
|
||||
isPrivate: Boolean = false,
|
||||
isUpgradeSeparate: Boolean = false,
|
||||
uniqueGiftNumber: Int? = null
|
||||
) = ownedGiftId ?.let {
|
||||
ReceivedInBusinessAccount(
|
||||
gift,
|
||||
@@ -188,7 +209,9 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
canBeUpgraded,
|
||||
text,
|
||||
textSources.toRawMessageEntities(position),
|
||||
isPrivate
|
||||
isPrivate,
|
||||
isUpgradeSeparate,
|
||||
uniqueGiftNumber
|
||||
)
|
||||
} ?: Common(
|
||||
gift,
|
||||
@@ -197,7 +220,9 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
canBeUpgraded,
|
||||
text,
|
||||
textSources.toRawMessageEntities(position),
|
||||
isPrivate
|
||||
isPrivate,
|
||||
isUpgradeSeparate,
|
||||
uniqueGiftNumber
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -207,7 +232,10 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
override val gift: Gift.Unique
|
||||
val origin: String?
|
||||
val originTyped: Origin?
|
||||
@Deprecated("Use lastResaleCurrency and lastResaleAmount instead")
|
||||
val lastResaleStarCount: Int?
|
||||
val lastResaleCurrency: String?
|
||||
val lastResaleAmount: Long?
|
||||
val transferStarCount: Int?
|
||||
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
@@ -215,11 +243,15 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
sealed interface Origin {
|
||||
val string: String
|
||||
@Serializable(Origin.Companion::class)
|
||||
object Upgrade : Origin { override val string: String = "upgrade" }
|
||||
data object Upgrade : Origin { override val string: String = "upgrade" }
|
||||
@Serializable(Origin.Companion::class)
|
||||
object Transfer : Origin { override val string: String = "transfer" }
|
||||
data object Transfer : Origin { override val string: String = "transfer" }
|
||||
@Serializable(Origin.Companion::class)
|
||||
object Resale : Origin { override val string: String = "resale" }
|
||||
data object Resale : Origin { override val string: String = "resale" }
|
||||
@Serializable(Origin.Companion::class)
|
||||
data object GiftedUpgrade : Origin { override val string: String = "gifted_upgrade" }
|
||||
@Serializable(Origin.Companion::class)
|
||||
data object Offer : Origin { override val string: String = "offer" }
|
||||
@Serializable(Origin.Companion::class)
|
||||
@JvmInline
|
||||
value class Unknown(override val string: String) : Origin
|
||||
@@ -231,6 +263,8 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
Upgrade.string -> Upgrade
|
||||
Transfer.string -> Transfer
|
||||
Resale.string -> Resale
|
||||
GiftedUpgrade.string -> GiftedUpgrade
|
||||
Offer.string -> Offer
|
||||
else -> Unknown(value)
|
||||
}
|
||||
|
||||
@@ -254,8 +288,13 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
override val gift: Gift.Unique,
|
||||
@SerialName(originField)
|
||||
override val originTyped: Origin? = null,
|
||||
@Deprecated("Use lastResaleCurrency and lastResaleAmount instead")
|
||||
@SerialName(lastResaleStarCountField)
|
||||
override val lastResaleStarCount: Int? = null,
|
||||
@SerialName(lastResaleCurrencyField)
|
||||
override val lastResaleCurrency: Currency? = null,
|
||||
@SerialName(lastResaleAmountField)
|
||||
override val lastResaleAmount: Long? = null,
|
||||
@SerialName(transferStarCountField)
|
||||
override val transferStarCount: Int? = null,
|
||||
@SerialName(nextTransferDateField)
|
||||
@@ -271,12 +310,16 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
gift: Gift.Unique,
|
||||
origin: String?,
|
||||
lastResaleStarCount: Int? = null,
|
||||
lastResaleCurrency: Currency? = null,
|
||||
lastResaleAmount: Long? = null,
|
||||
transferStarCount: Int? = null,
|
||||
nextTransferDate: TelegramDate? = null
|
||||
) : this(
|
||||
gift,
|
||||
origin ?.let { Origin.fromString(it) },
|
||||
lastResaleStarCount,
|
||||
lastResaleCurrency,
|
||||
lastResaleAmount,
|
||||
transferStarCount,
|
||||
nextTransferDate
|
||||
)
|
||||
@@ -290,8 +333,13 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
override val ownedGiftId: GiftId,
|
||||
@SerialName(originField)
|
||||
override val originTyped: Origin? = null,
|
||||
@Deprecated("Use lastResaleCurrency and lastResaleAmount instead")
|
||||
@SerialName(lastResaleStarCountField)
|
||||
override val lastResaleStarCount: Int? = null,
|
||||
@SerialName(lastResaleCurrencyField)
|
||||
override val lastResaleCurrency: Currency? = null,
|
||||
@SerialName(lastResaleAmountField)
|
||||
override val lastResaleAmount: Long? = null,
|
||||
@SerialName(transferStarCountField)
|
||||
override val transferStarCount: Int? = null,
|
||||
@SerialName(nextTransferDateField)
|
||||
@@ -305,6 +353,8 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
ownedGiftId: GiftId,
|
||||
origin: String? = null,
|
||||
lastResaleStarCount: Int? = null,
|
||||
lastResaleCurrency: Currency? = null,
|
||||
lastResaleAmount: Long? = null,
|
||||
transferStarCount: Int? = null,
|
||||
nextTransferDate: TelegramDate? = null
|
||||
) : this(
|
||||
@@ -312,6 +362,8 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
ownedGiftId = ownedGiftId,
|
||||
originTyped = origin ?.let { Origin.fromString(it) },
|
||||
lastResaleStarCount = lastResaleStarCount,
|
||||
lastResaleCurrency = lastResaleCurrency,
|
||||
lastResaleAmount = lastResaleAmount,
|
||||
transferStarCount = transferStarCount,
|
||||
nextTransferDate = nextTransferDate
|
||||
)
|
||||
@@ -328,6 +380,10 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
val origin: Origin? = null,
|
||||
@SerialName(lastResaleStarCountField)
|
||||
val lastResaleStarCount: Int? = null,
|
||||
@SerialName(lastResaleCurrencyField)
|
||||
val lastResaleCurrency: Currency? = null,
|
||||
@SerialName(lastResaleAmountField)
|
||||
val lastResaleAmount: Long? = null,
|
||||
@SerialName(transferStarCountField)
|
||||
val transferStarCount: Int? = null,
|
||||
@SerialName(nextTransferDateField)
|
||||
@@ -353,6 +409,8 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
gift = surrogate.gift,
|
||||
originTyped = surrogate.origin,
|
||||
lastResaleStarCount = surrogate.lastResaleStarCount,
|
||||
lastResaleCurrency = surrogate.lastResaleCurrency,
|
||||
lastResaleAmount = surrogate.lastResaleAmount,
|
||||
transferStarCount = surrogate.transferStarCount,
|
||||
nextTransferDate = surrogate.nextTransferDate
|
||||
)
|
||||
@@ -363,6 +421,8 @@ sealed interface GiftSentOrReceived : CommonEvent {
|
||||
ownedGiftId = surrogate.ownedGiftId,
|
||||
originTyped = surrogate.origin,
|
||||
lastResaleStarCount = surrogate.lastResaleStarCount,
|
||||
lastResaleCurrency = surrogate.lastResaleCurrency,
|
||||
lastResaleAmount = surrogate.lastResaleAmount,
|
||||
transferStarCount = surrogate.transferStarCount,
|
||||
nextTransferDate = surrogate.nextTransferDate
|
||||
)
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package dev.inmo.tgbotapi.types.gifts.unique
|
||||
|
||||
import dev.inmo.tgbotapi.types.baseColorField
|
||||
import dev.inmo.tgbotapi.types.linkColorField
|
||||
import dev.inmo.tgbotapi.types.nameColorField
|
||||
import dev.inmo.tgbotapi.utils.RGBColor
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
|
||||
@Serializable
|
||||
data class UniqueGiftColors(
|
||||
@SerialName(nameColorField)
|
||||
val nameColor: RGBColor,
|
||||
@SerialName(baseColorField)
|
||||
val baseColor: RGBColor,
|
||||
@SerialName(linkColorField)
|
||||
val linkColor: RGBColor
|
||||
)
|
||||
@@ -3,6 +3,7 @@ package dev.inmo.tgbotapi.types.message.ChatEvents.forum
|
||||
import dev.inmo.tgbotapi.types.CustomEmojiId
|
||||
import dev.inmo.tgbotapi.types.iconColorField
|
||||
import dev.inmo.tgbotapi.types.iconCustomEmojiIdField
|
||||
import dev.inmo.tgbotapi.types.isNameImplicitField
|
||||
import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ForumEvent
|
||||
import dev.inmo.tgbotapi.types.nameField
|
||||
import dev.inmo.tgbotapi.utils.RGBColor
|
||||
@@ -16,5 +17,7 @@ data class ForumTopicCreated(
|
||||
@SerialName(iconColorField)
|
||||
val iconColor: RGBColor,
|
||||
@SerialName(iconCustomEmojiIdField)
|
||||
val iconEmojiId: CustomEmojiId? = null
|
||||
val iconEmojiId: CustomEmojiId? = null,
|
||||
@SerialName(isNameImplicitField)
|
||||
val isNameImplicit: Boolean = false
|
||||
) : ForumEvent
|
||||
|
||||
@@ -201,6 +201,7 @@ internal data class RawMessage(
|
||||
// Gifts
|
||||
private val gift: GiftSentOrReceived.Regular? = null,
|
||||
private val unique_gift: GiftSentOrReceived.Unique? = null,
|
||||
private val gift_upgrade_sent: GiftSentOrReceived? = null,
|
||||
) {
|
||||
@Suppress("SERIALIZER_TYPE_INCOMPATIBLE")
|
||||
private val checkedFrom = from ?.takeIf { !it.isFakeTelegramUser() }
|
||||
@@ -328,6 +329,7 @@ internal data class RawMessage(
|
||||
paid_message_price_changed != null -> paid_message_price_changed
|
||||
gift != null -> gift
|
||||
unique_gift != null -> unique_gift
|
||||
gift_upgrade_sent != null -> gift_upgrade_sent
|
||||
checklist_tasks_done != null -> checklist_tasks_done
|
||||
checklist_tasks_added != null -> checklist_tasks_added
|
||||
direct_message_price_changed != null -> direct_message_price_changed
|
||||
|
||||
@@ -13,9 +13,11 @@ 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 PrivateChatImpl -> CommonUser(id, firstName, lastName, username)
|
||||
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)
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ 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
|
||||
@@ -30,7 +31,9 @@ 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 {
|
||||
it.typesRegex.takeIf { it.isNotEmpty() } ?.let(::Regex) to it.excludeRegex.takeIf { it.isNotEmpty() } ?.let(::Regex)
|
||||
val typesRegex = withNoSuchElementWorkaround("") { it.typesRegex }
|
||||
val excludeRegex = withNoSuchElementWorkaround("") { it.excludeRegex }
|
||||
typesRegex.takeIf { it.isNotEmpty() } ?.let(::Regex) to excludeRegex.takeIf { it.isNotEmpty() } ?.let(::Regex)
|
||||
} ?: return@mapNotNull null)
|
||||
}.toMap()
|
||||
val classesSubtypes = mutableMapOf<KSClassDeclaration, MutableSet<KSClassDeclaration>>()
|
||||
|
||||
@@ -1425,6 +1425,8 @@ 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;
|
||||
@@ -1745,6 +1747,7 @@ 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;
|
||||
@@ -1975,6 +1978,7 @@ 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;
|
||||
@@ -1986,6 +1990,8 @@ 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;
|
||||
@@ -2053,6 +2059,7 @@ 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;
|
||||
@@ -2480,6 +2487,8 @@ 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;
|
||||
@@ -2502,6 +2511,10 @@ 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;
|
||||
@@ -2636,6 +2649,8 @@ 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;
|
||||
@@ -3705,7 +3720,9 @@ 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,6 +1,5 @@
|
||||
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
|
||||
@@ -15,30 +14,36 @@ 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.DefaultKTgBotAPIKSLog
|
||||
import dev.inmo.tgbotapi.utils.causedCancellationException
|
||||
import dev.inmo.tgbotapi.utils.isCausedByCancellation
|
||||
import dev.inmo.tgbotapi.utils.isCausedUnresolvedAddressException
|
||||
import dev.inmo.tgbotapi.utils.subscribeWithBotLogger
|
||||
import io.ktor.client.network.sockets.ConnectTimeoutException
|
||||
import io.ktor.client.plugins.HttpRequestTimeoutException
|
||||
import io.ktor.util.network.UnresolvedAddressException
|
||||
import io.ktor.utils.io.CancellationException
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.flow.*
|
||||
|
||||
/**
|
||||
* @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
|
||||
* 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.
|
||||
*/
|
||||
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) {
|
||||
@@ -119,11 +124,7 @@ fun TelegramBot.longPollingFlow(
|
||||
while (isActive) {
|
||||
runCatchingLogging(logger = Log) {
|
||||
execute(
|
||||
GetUpdates(
|
||||
offset = lastUpdateIdentifier?.plus(1),
|
||||
timeout = timeoutSeconds,
|
||||
allowed_updates = allowedUpdates
|
||||
)
|
||||
getUpdatesRequestCreator(lastUpdateIdentifier ?.plus(1))
|
||||
).let { originalUpdates ->
|
||||
updatesHandler(originalUpdates)
|
||||
}
|
||||
@@ -148,6 +149,45 @@ 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