From 367cfff2cb1ad91a3fdfef8e2f6ba8cab9badcb1 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 16:45:13 +0600 Subject: [PATCH 01/31] start 0.32.10 --- CHANGELOG.md | 2 ++ gradle.properties | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b7c298b0f2..65581c5194 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # TelegramBotAPI changelog +## 0.32.10 + ## 0.32.9 * `Common`: diff --git a/gradle.properties b/gradle.properties index 07767190a1..ac7f563099 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,6 +17,6 @@ micro_utils_version=0.4.28 javax_activation_version=1.1.1 library_group=dev.inmo -library_version=0.32.9 +library_version=0.32.10 github_release_plugin_version=2.2.12 From baf4c74b6974441e6b5f1805bcec5d2426a73464 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 16:46:08 +0600 Subject: [PATCH 02/31] update micro_utils --- CHANGELOG.md | 4 ++++ gradle.properties | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 65581c5194..0b33ac4743 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## 0.32.10 +* `Common`: + * `Version`: + * `MicroUtils`: `0.4.28` -> `0.4.29` + ## 0.32.9 * `Common`: diff --git a/gradle.properties b/gradle.properties index ac7f563099..fa30cc70d3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,7 @@ klock_version=2.0.6 uuid_version=0.2.3 ktor_version=1.5.2 -micro_utils_version=0.4.28 +micro_utils_version=0.4.29 javax_activation_version=1.1.1 From 61b720c61fc9c847891526106fd52fbf120b509c Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 16:54:32 +0600 Subject: [PATCH 03/31] fix of content waiters and expecters --- CHANGELOG.md | 2 ++ .../extensions/behaviour_builder/expectations/WaitContent.kt | 2 +- .../behaviour_builder/triggers_handling/ContentTriggers.kt | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b33ac4743..b96231b661 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ * `Common`: * `Version`: * `MicroUtils`: `0.4.28` -> `0.4.29` +* `Behaviour Builder`: + * Now content triggers and expectaters will wait for channel posts too ## 0.32.9 diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContent.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContent.kt index fe5cdbf153..67b3746a09 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContent.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitContent.kt @@ -31,7 +31,7 @@ private suspend fun BehaviourContext.waitCommonMessage( (it as CommonMessage).mapper() } ?.let { return@expectFlow it } } - it.asMessageUpdate() ?.data ?.asCommonMessage() ?.mapper().let(::listOfNotNull) + it.asBaseSentMessageUpdate() ?.data ?.asCommonMessage() ?.mapper().let(::listOfNotNull) }.toList().toList() private suspend inline fun BehaviourContext.waitContent( diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ContentTriggers.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ContentTriggers.kt index 591686026e..493b58f0ee 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ContentTriggers.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ContentTriggers.kt @@ -36,7 +36,7 @@ internal suspend inline fun BehaviourContext.onCont return@expectFlow it } } - it.asMessageUpdate() ?.data ?.asCommonMessage() ?.let { message -> + it.asBaseSentMessageUpdate() ?.data ?.asCommonMessage() ?.let { message -> if (message.content is T) { val adaptedMessage = message as CommonMessage if (additionalFilter == null || additionalFilter(adaptedMessage)) adaptedMessage else null From 7639b15dc6c01a2586a3a8d6952cb19282346948 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 19:19:15 +0600 Subject: [PATCH 04/31] voice chats functionality included --- .../chat/members/PromoteChatMember.kt | 4 +++- .../ChatMember/AdministratorChatMemberImpl.kt | 2 ++ .../types/ChatMember/CreatorChatMember.kt | 2 ++ .../abstracts/AdministratorChatMember.kt | 1 + .../kotlin/dev/inmo/tgbotapi/types/Common.kt | 2 ++ .../ChatEvents/abstracts/VoiceChatEvent.kt | 3 +++ .../ChatEvents/voice/VoiceChatEnded.kt | 18 ++++++++++++++ .../voice/VoiceChatParticipantsInvited.kt | 13 ++++++++++ .../ChatEvents/voice/VoiceChatStarted.kt | 7 ++++++ .../inmo/tgbotapi/types/message/RawMessage.kt | 9 +++++++ .../api/chat/members/PromoteChatMember.kt | 24 ++++++++++++------- 11 files changed, 76 insertions(+), 9 deletions(-) create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/abstracts/VoiceChatEvent.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatEnded.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatParticipantsInvited.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatStarted.kt diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt index b878b0cd6a..74e17ee623 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt @@ -31,7 +31,9 @@ data class PromoteChatMember( @SerialName(canPinMessagesField) private val canPinMessages: Boolean? = null, @SerialName(canPromoteMembersField) - private val canPromoteMembers: Boolean? = null + private val canPromoteMembers: Boolean? = null, + @SerialName(canManageVoiceChatsField) + private val canManageVoiceChats: Boolean? = null ) : ChatMemberRequest, UntilDate { override fun method(): String = "promoteChatMember" override val resultDeserializer: DeserializationStrategy diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt index dd16ba76de..109f9b27cc 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt @@ -26,6 +26,8 @@ data class AdministratorChatMemberImpl( override val canPinMessages: Boolean = false, @SerialName(canPromoteMembersField) override val canPromoteMembers: Boolean = false, + @SerialName(canManageVoiceChatsField) + override val canManageVoiceChats: Boolean = false, @SerialName(isAnonymousField) override val isAnonymous: Boolean = false, @SerialName(customTitleField) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt index 014ac9c952..a47dafd111 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt @@ -30,6 +30,8 @@ data class CreatorChatMember( override val canPinMessages: Boolean = true @Transient override val canPromoteMembers: Boolean = true + @Transient + override val canManageVoiceChats: Boolean = true @SerialName(statusField) @Required private val type: String = "creator" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt index 7a7c9d0944..db02e9d67c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt @@ -13,6 +13,7 @@ interface AdministratorChatMember : SpecialRightsChatMember { val canRemoveMessages: Boolean val canRestrictMembers: Boolean val canPromoteMembers: Boolean + val canManageVoiceChats: Boolean val isAnonymous: Boolean val customTitle: String? } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt index 819fb35587..bb9f787337 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt @@ -239,6 +239,7 @@ const val canInviteUsersField = "can_invite_users" const val canRestrictMembersField = "can_restrict_members" const val canPinMessagesField = "can_pin_messages" const val canPromoteMembersField = "can_promote_members" +const val canManageVoiceChatsField = "can_manage_voice_chats" const val pngStickerField = "png_sticker" const val tgsStickerField = "tgs_sticker" @@ -331,6 +332,7 @@ const val telegramPaymentChargeIdField = "telegram_payment_charge_id" const val providerPaymentChargeIdField = "provider_payment_charge_id" const val providerTokenField = "provider_token" const val providerDataField = "provider_data" +const val usersField = "users" const val requireNameField = "need_name" const val requirePhoneNumberField = "need_phone_number" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/abstracts/VoiceChatEvent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/abstracts/VoiceChatEvent.kt new file mode 100644 index 0000000000..54bb629cde --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/abstracts/VoiceChatEvent.kt @@ -0,0 +1,3 @@ +package dev.inmo.tgbotapi.types.message.ChatEvents.abstracts + +interface VoiceChatEvent : SupergroupEvent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatEnded.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatEnded.kt new file mode 100644 index 0000000000..3969e603fd --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatEnded.kt @@ -0,0 +1,18 @@ +package dev.inmo.tgbotapi.types.message.ChatEvents.voice + +import com.soywiz.klock.TimeSpan +import com.soywiz.klock.seconds +import dev.inmo.tgbotapi.types.Seconds +import dev.inmo.tgbotapi.types.durationField +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.VoiceChatEvent +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class VoiceChatEnded( + @SerialName(durationField) + val duration: Seconds +) : VoiceChatEvent { + val timeSpan: TimeSpan + get() = TimeSpan(duration.seconds.milliseconds) +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatParticipantsInvited.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatParticipantsInvited.kt new file mode 100644 index 0000000000..44bddaac29 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatParticipantsInvited.kt @@ -0,0 +1,13 @@ +package dev.inmo.tgbotapi.types.message.ChatEvents.voice + +import dev.inmo.tgbotapi.types.User +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.VoiceChatEvent +import dev.inmo.tgbotapi.types.usersField +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +class VoiceChatParticipantsInvited( + @SerialName(usersField) + val users: List = emptyList() +) : VoiceChatEvent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatStarted.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatStarted.kt new file mode 100644 index 0000000000..9b72796ac1 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatStarted.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.types.message.ChatEvents.voice + +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.VoiceChatEvent +import kotlinx.serialization.Serializable + +@Serializable +object VoiceChatStarted : VoiceChatEvent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt index e10f88de8b..d3b204c2ba 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt @@ -11,6 +11,7 @@ import dev.inmo.tgbotapi.types.games.RawGame import dev.inmo.tgbotapi.types.location.Location import dev.inmo.tgbotapi.types.message.ChatEvents.* import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* +import dev.inmo.tgbotapi.types.message.ChatEvents.voice.* import dev.inmo.tgbotapi.types.message.abstracts.Message import dev.inmo.tgbotapi.types.message.abstracts.UnknownMessageType import dev.inmo.tgbotapi.types.message.content.* @@ -81,6 +82,11 @@ internal data class RawMessage( private val dice: Dice? = null, private val successful_payment: SuccessfulPayment? = null, + // Voice Chat Service Messages + private val voice_chat_started: VoiceChatStarted? = null, + private val voice_chat_ended: VoiceChatEnded? = null, + private val voice_chat_participants_invited: VoiceChatParticipantsInvited? = null, + // login property private val connected_website: String? = null, @@ -172,6 +178,9 @@ internal data class RawMessage( left_chat_member != null -> LeftChatMember(left_chat_member) new_chat_title != null -> NewChatTitle(new_chat_title) new_chat_photo != null -> NewChatPhoto(new_chat_photo.toList()) + voice_chat_started != null -> voice_chat_started + voice_chat_ended != null -> voice_chat_ended + voice_chat_participants_invited != null -> voice_chat_participants_invited delete_chat_photo -> DeleteChatPhoto() group_chat_created -> GroupChatCreated( migrate_to_chat_id diff --git a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt index e3f1dc9721..fe05c89a8d 100644 --- a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt +++ b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt @@ -17,7 +17,8 @@ suspend fun TelegramBot.promoteChatMember( canInviteUsers: Boolean? = null, canRestrictMembers: Boolean? = null, canPinMessages: Boolean? = null, - canPromoteMembers: Boolean? = null + canPromoteMembers: Boolean? = null, + canManageVoiceChats: Boolean? = null ) = execute( PromoteChatMember( chatId, @@ -31,7 +32,8 @@ suspend fun TelegramBot.promoteChatMember( canInviteUsers, canRestrictMembers, canPinMessages, - canPromoteMembers + canPromoteMembers, + canManageVoiceChats ) ) @@ -47,7 +49,8 @@ suspend fun TelegramBot.promoteChatMember( canInviteUsers: Boolean? = null, canRestrictMembers: Boolean? = null, canPinMessages: Boolean? = null, - canPromoteMembers: Boolean? = null + canPromoteMembers: Boolean? = null, + canManageVoiceChats: Boolean? ) = promoteChatMember( chat.id, userId, @@ -60,7 +63,8 @@ suspend fun TelegramBot.promoteChatMember( canInviteUsers, canRestrictMembers, canPinMessages, - canPromoteMembers + canPromoteMembers, + canManageVoiceChats ) suspend fun TelegramBot.promoteChatMember( @@ -75,7 +79,8 @@ suspend fun TelegramBot.promoteChatMember( canInviteUsers: Boolean? = null, canRestrictMembers: Boolean? = null, canPinMessages: Boolean? = null, - canPromoteMembers: Boolean? = null + canPromoteMembers: Boolean? = null, + canManageVoiceChats: Boolean? ) = promoteChatMember( chatId, user.id, @@ -88,7 +93,8 @@ suspend fun TelegramBot.promoteChatMember( canInviteUsers, canRestrictMembers, canPinMessages, - canPromoteMembers + canPromoteMembers, + canManageVoiceChats ) suspend fun TelegramBot.promoteChatMember( @@ -103,7 +109,8 @@ suspend fun TelegramBot.promoteChatMember( canInviteUsers: Boolean? = null, canRestrictMembers: Boolean? = null, canPinMessages: Boolean? = null, - canPromoteMembers: Boolean? = null + canPromoteMembers: Boolean? = null, + canManageVoiceChats: Boolean? ) = promoteChatMember( chat.id, user.id, @@ -116,5 +123,6 @@ suspend fun TelegramBot.promoteChatMember( canInviteUsers, canRestrictMembers, canPinMessages, - canPromoteMembers + canPromoteMembers, + canManageVoiceChats ) From 53524abcbb32b14f87897deca296c373ede1a6b2 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 19:26:30 +0600 Subject: [PATCH 05/31] include canManageChat --- .../chat/members/PromoteChatMember.kt | 4 +++- .../ChatMember/AdministratorChatMemberImpl.kt | 2 ++ .../types/ChatMember/CreatorChatMember.kt | 2 ++ .../abstracts/AdministratorChatMember.kt | 1 + .../kotlin/dev/inmo/tgbotapi/types/Common.kt | 1 + .../api/chat/members/PromoteChatMember.kt | 24 ++++++++++++------- 6 files changed, 25 insertions(+), 9 deletions(-) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt index 74e17ee623..91e18f7381 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/PromoteChatMember.kt @@ -33,7 +33,9 @@ data class PromoteChatMember( @SerialName(canPromoteMembersField) private val canPromoteMembers: Boolean? = null, @SerialName(canManageVoiceChatsField) - private val canManageVoiceChats: Boolean? = null + private val canManageVoiceChats: Boolean? = null, + @SerialName(canManageChatField) + private val canManageChat: Boolean? = null ) : ChatMemberRequest, UntilDate { override fun method(): String = "promoteChatMember" override val resultDeserializer: DeserializationStrategy diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt index 109f9b27cc..b3bfd4cd18 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/AdministratorChatMemberImpl.kt @@ -28,6 +28,8 @@ data class AdministratorChatMemberImpl( override val canPromoteMembers: Boolean = false, @SerialName(canManageVoiceChatsField) override val canManageVoiceChats: Boolean = false, + @SerialName(canManageChatField) + override val canManageChat: Boolean = false, @SerialName(isAnonymousField) override val isAnonymous: Boolean = false, @SerialName(customTitleField) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt index a47dafd111..8344c7bb22 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/CreatorChatMember.kt @@ -32,6 +32,8 @@ data class CreatorChatMember( override val canPromoteMembers: Boolean = true @Transient override val canManageVoiceChats: Boolean = true + @Transient + override val canManageChat: Boolean = true @SerialName(statusField) @Required private val type: String = "creator" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt index db02e9d67c..ab6e9056f6 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt @@ -14,6 +14,7 @@ interface AdministratorChatMember : SpecialRightsChatMember { val canRestrictMembers: Boolean val canPromoteMembers: Boolean val canManageVoiceChats: Boolean + val canManageChat: Boolean val isAnonymous: Boolean val customTitle: String? } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt index bb9f787337..50a9dacdc3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt @@ -240,6 +240,7 @@ const val canRestrictMembersField = "can_restrict_members" const val canPinMessagesField = "can_pin_messages" const val canPromoteMembersField = "can_promote_members" const val canManageVoiceChatsField = "can_manage_voice_chats" +const val canManageChatField = "can_manage_chat" const val pngStickerField = "png_sticker" const val tgsStickerField = "tgs_sticker" diff --git a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt index fe05c89a8d..865fc0ee80 100644 --- a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt +++ b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/PromoteChatMember.kt @@ -18,7 +18,8 @@ suspend fun TelegramBot.promoteChatMember( canRestrictMembers: Boolean? = null, canPinMessages: Boolean? = null, canPromoteMembers: Boolean? = null, - canManageVoiceChats: Boolean? = null + canManageVoiceChats: Boolean? = null, + canManageChat: Boolean? ) = execute( PromoteChatMember( chatId, @@ -33,7 +34,8 @@ suspend fun TelegramBot.promoteChatMember( canRestrictMembers, canPinMessages, canPromoteMembers, - canManageVoiceChats + canManageVoiceChats, + canManageChat ) ) @@ -50,7 +52,8 @@ suspend fun TelegramBot.promoteChatMember( canRestrictMembers: Boolean? = null, canPinMessages: Boolean? = null, canPromoteMembers: Boolean? = null, - canManageVoiceChats: Boolean? + canManageVoiceChats: Boolean? = null, + canManageChat: Boolean? = null ) = promoteChatMember( chat.id, userId, @@ -64,7 +67,8 @@ suspend fun TelegramBot.promoteChatMember( canRestrictMembers, canPinMessages, canPromoteMembers, - canManageVoiceChats + canManageVoiceChats, + canManageChat ) suspend fun TelegramBot.promoteChatMember( @@ -80,7 +84,8 @@ suspend fun TelegramBot.promoteChatMember( canRestrictMembers: Boolean? = null, canPinMessages: Boolean? = null, canPromoteMembers: Boolean? = null, - canManageVoiceChats: Boolean? + canManageVoiceChats: Boolean? = null, + canManageChat: Boolean? = null ) = promoteChatMember( chatId, user.id, @@ -94,7 +99,8 @@ suspend fun TelegramBot.promoteChatMember( canRestrictMembers, canPinMessages, canPromoteMembers, - canManageVoiceChats + canManageVoiceChats, + canManageChat ) suspend fun TelegramBot.promoteChatMember( @@ -110,7 +116,8 @@ suspend fun TelegramBot.promoteChatMember( canRestrictMembers: Boolean? = null, canPinMessages: Boolean? = null, canPromoteMembers: Boolean? = null, - canManageVoiceChats: Boolean? + canManageVoiceChats: Boolean? = null, + canManageChat: Boolean? = null ) = promoteChatMember( chat.id, user.id, @@ -124,5 +131,6 @@ suspend fun TelegramBot.promoteChatMember( canRestrictMembers, canPinMessages, canPromoteMembers, - canManageVoiceChats + canManageVoiceChats, + canManageChat ) From 9902b00e85804e0cff03ec53672fbfcae6718a8f Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 19:33:05 +0600 Subject: [PATCH 06/31] include revokeMessages in kickChatMember --- .../requests/chat/members/KickChatMember.kt | 4 +++- .../kotlin/dev/inmo/tgbotapi/types/Common.kt | 1 + .../api/chat/members/KickChatMember.kt | 20 +++++++++++-------- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/KickChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/KickChatMember.kt index 6074de0d79..58d62c3359 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/KickChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/members/KickChatMember.kt @@ -13,7 +13,9 @@ data class KickChatMember( @SerialName(userIdField) override val userId: UserId, @SerialName(untilDateField) - override val untilDate: TelegramDate? = null + override val untilDate: TelegramDate? = null, + @SerialName(revokeMessagesField) + val revokeMessages: Boolean? = null ) : ChatMemberRequest, UntilDate { override fun method(): String = "kickChatMember" override val resultDeserializer: DeserializationStrategy diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt index 50a9dacdc3..8eaef26cfb 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt @@ -162,6 +162,7 @@ const val optionIdsField = "option_ids" const val ipAddressField = "ip_address" const val linkedChatIdField = "linked_chat_id" const val horizontalAccuracyField = "horizontal_accuracy" +const val revokeMessagesField = "revoke_messages" const val requestContactField = "request_contact" const val requestLocationField = "request_location" diff --git a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/KickChatMember.kt b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/KickChatMember.kt index 4fb0049d5c..f924443d8b 100644 --- a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/KickChatMember.kt +++ b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/members/KickChatMember.kt @@ -8,23 +8,27 @@ import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat suspend fun TelegramBot.kickChatMember( chatId: ChatIdentifier, userId: UserId, - untilDate: TelegramDate? = null -) = execute(KickChatMember(chatId, userId, untilDate)) + untilDate: TelegramDate? = null, + revokeMessages: Boolean? = null +) = execute(KickChatMember(chatId, userId, untilDate, revokeMessages)) suspend fun TelegramBot.kickChatMember( chat: PublicChat, userId: UserId, - untilDate: TelegramDate? = null -) = kickChatMember(chat.id, userId, untilDate) + untilDate: TelegramDate? = null, + revokeMessages: Boolean? = null +) = kickChatMember(chat.id, userId, untilDate, revokeMessages) suspend fun TelegramBot.kickChatMember( chatId: ChatId, user: User, - untilDate: TelegramDate? = null -) = kickChatMember(chatId, user.id, untilDate) + untilDate: TelegramDate? = null, + revokeMessages: Boolean? = null +) = kickChatMember(chatId, user.id, untilDate, revokeMessages) suspend fun TelegramBot.kickChatMember( chat: PublicChat, user: User, - untilDate: TelegramDate? = null -) = kickChatMember(chat.id, user.id, untilDate) + untilDate: TelegramDate? = null, + revokeMessages: Boolean? = null +) = kickChatMember(chat.id, user.id, untilDate, revokeMessages) From 86e506c33d75dbd3d130921c728ef4e191dd0e23 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 19:45:19 +0600 Subject: [PATCH 07/31] include message_auto_delete_timer_change --- .../ChatEvents/MessageAutoDeleteTimerChanged.kt | 10 ++++++++++ .../dev/inmo/tgbotapi/types/message/RawMessage.kt | 4 ++++ 2 files changed, 14 insertions(+) create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt new file mode 100644 index 0000000000..b87f4718bc --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt @@ -0,0 +1,10 @@ +package dev.inmo.tgbotapi.types.message.ChatEvents + +import dev.inmo.tgbotapi.types.Seconds +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChatEvent +import kotlinx.serialization.Serializable + +@Serializable +data class MessageAutoDeleteTimerChanged( + val newAutoDeleteTime: Seconds // TODO:: check that it is seconds +) : ChatEvent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt index d3b204c2ba..2d3ebdc703 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/RawMessage.kt @@ -87,6 +87,9 @@ internal data class RawMessage( private val voice_chat_ended: VoiceChatEnded? = null, private val voice_chat_participants_invited: VoiceChatParticipantsInvited? = null, + // AutoDelete Message time changed + private val message_auto_delete_timer_changed: MessageAutoDeleteTimerChanged? = null, + // login property private val connected_website: String? = null, @@ -179,6 +182,7 @@ internal data class RawMessage( new_chat_title != null -> NewChatTitle(new_chat_title) new_chat_photo != null -> NewChatPhoto(new_chat_photo.toList()) voice_chat_started != null -> voice_chat_started + message_auto_delete_timer_changed != null -> message_auto_delete_timer_changed voice_chat_ended != null -> voice_chat_ended voice_chat_participants_invited != null -> voice_chat_participants_invited delete_chat_photo -> DeleteChatPhoto() From ded501d9634cd86c8bacd5b289354a95219124ba Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 19:52:46 +0600 Subject: [PATCH 08/31] remove regular build --- .github/workflows/regular-build.yml | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 .github/workflows/regular-build.yml diff --git a/.github/workflows/regular-build.yml b/.github/workflows/regular-build.yml deleted file mode 100644 index ceab9f2734..0000000000 --- a/.github/workflows/regular-build.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Build - -on: [push] - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Build with Gradle - run: ./gradlew build From 696822db02b83bef3111c7025013544f6a7fa674 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 20:04:44 +0600 Subject: [PATCH 09/31] add behaviour builder events updates --- .../expectations/WaitEventAction.kt | 34 +++++++++++++++++++ .../triggers_handling/EventTriggers.kt | 26 ++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt index 0093fa5111..e792af6007 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt @@ -8,6 +8,7 @@ import dev.inmo.tgbotapi.extensions.utils.asMessageUpdate import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.message.ChatEvents.* import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* +import dev.inmo.tgbotapi.types.message.ChatEvents.voice.* import dev.inmo.tgbotapi.types.message.abstracts.ChatEventMessage import kotlinx.coroutines.flow.toList @@ -63,6 +64,39 @@ suspend fun BehaviourContext.waitChatEvents( count: Int = 1, filter: EventMessageToEventMapper? = null ) = waitEvents(count, initRequest, errorFactory, filter) + +suspend fun BehaviourContext.waitVoiceChatEvents( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: EventMessageToEventMapper? = null +) = waitEvents(count, initRequest, errorFactory, filter) +suspend fun BehaviourContext.waitVoiceChatStartedEvents( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: EventMessageToEventMapper? = null +) = waitEvents(count, initRequest, errorFactory, filter) +suspend fun BehaviourContext.waitVoiceChatEndedEvents( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: EventMessageToEventMapper? = null +) = waitEvents(count, initRequest, errorFactory, filter) +suspend fun BehaviourContext.waitVoiceChatParticipantsInvitedEvents( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: EventMessageToEventMapper? = null +) = waitEvents(count, initRequest, errorFactory, filter) + +suspend fun BehaviourContext.waitMessageAutoDeleteTimerChangedEvents( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: EventMessageToEventMapper? = null +) = waitEvents(count, initRequest, errorFactory, filter) + suspend fun BehaviourContext.waitCommonEvents( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt index d5b9404550..7e7a8b8a27 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt @@ -8,6 +8,7 @@ import dev.inmo.tgbotapi.extensions.utils.* import dev.inmo.tgbotapi.extensions.utils.extensions.sourceChat import dev.inmo.tgbotapi.types.message.ChatEvents.* import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* +import dev.inmo.tgbotapi.types.message.ChatEvents.voice.* import dev.inmo.tgbotapi.types.message.abstracts.ChatEventMessage internal suspend inline fun BehaviourContext.onEvent( @@ -43,6 +44,31 @@ suspend fun BehaviourContext.onChatEvent( additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null, scenarioReceiver: BehaviourContextAndTypeReceiver> ) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver) +suspend fun BehaviourContext.onVoiceChatEvent( + includeFilterByChatInBehaviourSubContext: Boolean = true, + additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null, + scenarioReceiver: BehaviourContextAndTypeReceiver> +) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver) +suspend fun BehaviourContext.onVoiceChatStartedEvent( + includeFilterByChatInBehaviourSubContext: Boolean = true, + additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null, + scenarioReceiver: BehaviourContextAndTypeReceiver> +) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver) +suspend fun BehaviourContext.onVoiceChatEndedEvent( + includeFilterByChatInBehaviourSubContext: Boolean = true, + additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null, + scenarioReceiver: BehaviourContextAndTypeReceiver> +) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver) +suspend fun BehaviourContext.onVoiceChatParticipantsInvitedEvent( + includeFilterByChatInBehaviourSubContext: Boolean = true, + additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null, + scenarioReceiver: BehaviourContextAndTypeReceiver> +) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver) +suspend fun BehaviourContext.onMessageAutoDeleteTimerChangedEvent( + includeFilterByChatInBehaviourSubContext: Boolean = true, + additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null, + scenarioReceiver: BehaviourContextAndTypeReceiver> +) = onEvent(includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver) suspend fun BehaviourContext.onCommonEvent( includeFilterByChatInBehaviourSubContext: Boolean = true, additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null, From 2a1e6246418388ee233fb58d694e532634d173c5 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 20:23:03 +0600 Subject: [PATCH 10/31] VoiceChatParticipantsInvited type now is data class --- .../message/ChatEvents/voice/VoiceChatParticipantsInvited.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatParticipantsInvited.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatParticipantsInvited.kt index 44bddaac29..3df3f3d711 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatParticipantsInvited.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/voice/VoiceChatParticipantsInvited.kt @@ -7,7 +7,7 @@ import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -class VoiceChatParticipantsInvited( +data class VoiceChatParticipantsInvited( @SerialName(usersField) val users: List = emptyList() ) : VoiceChatEvent From 8daadcff95b92ca3efd59d16dc98755e33f2720c Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 21:35:53 +0600 Subject: [PATCH 11/31] now MessageAutoDeleteTimerChanged implementing ChannelEvent and GroupEvent --- .../message/ChatEvents/MessageAutoDeleteTimerChanged.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt index b87f4718bc..3efc8f9893 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt @@ -1,10 +1,11 @@ package dev.inmo.tgbotapi.types.message.ChatEvents import dev.inmo.tgbotapi.types.Seconds -import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChatEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChannelEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.GroupEvent import kotlinx.serialization.Serializable @Serializable data class MessageAutoDeleteTimerChanged( val newAutoDeleteTime: Seconds // TODO:: check that it is seconds -) : ChatEvent +) : ChannelEvent, GroupEvent From 8bb60bea341384fe90d1b667bcc05c67f2b2a279 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 21:37:25 +0600 Subject: [PATCH 12/31] now MessageAutoDeleteTimerChanged implementing ChannelEvent and GroupEvent --- .../message/ChatEvents/MessageAutoDeleteTimerChanged.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt index 3efc8f9893..e54c53fdd3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt @@ -1,11 +1,10 @@ package dev.inmo.tgbotapi.types.message.ChatEvents import dev.inmo.tgbotapi.types.Seconds -import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChannelEvent -import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.GroupEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* import kotlinx.serialization.Serializable @Serializable data class MessageAutoDeleteTimerChanged( val newAutoDeleteTime: Seconds // TODO:: check that it is seconds -) : ChannelEvent, GroupEvent +) : ChannelEvent, GroupEvent, SupergroupEvent From bc21a680bc9e0736edfb6776f24e4db4341d0966 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 22:00:17 +0600 Subject: [PATCH 13/31] fixes for MessageAutoDeleteTimerChanged --- .../kotlin/dev/inmo/tgbotapi/types/Common.kt | 1 + .../ChatEvents/MessageAutoDeleteTimerChanged.kt | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt index 8eaef26cfb..ff8adabedd 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt @@ -163,6 +163,7 @@ const val ipAddressField = "ip_address" const val linkedChatIdField = "linked_chat_id" const val horizontalAccuracyField = "horizontal_accuracy" const val revokeMessagesField = "revoke_messages" +const val messageAutoDeleteTimeField = "message_auto_delete_time" const val requestContactField = "request_contact" const val requestLocationField = "request_location" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt index e54c53fdd3..adbce62869 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt @@ -1,10 +1,23 @@ package dev.inmo.tgbotapi.types.message.ChatEvents +import com.soywiz.klock.hours import dev.inmo.tgbotapi.types.Seconds import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* +import dev.inmo.tgbotapi.types.messageAutoDeleteTimeField +import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +private val seconds24Hours: Seconds = 60 * 60 * 24 +private val seconds7Days: Seconds = seconds24Hours * 7 + @Serializable data class MessageAutoDeleteTimerChanged( + @SerialName(messageAutoDeleteTimeField) val newAutoDeleteTime: Seconds // TODO:: check that it is seconds ) : ChannelEvent, GroupEvent, SupergroupEvent + +val MessageAutoDeleteTimerChanged.is24Hours + get() = newAutoDeleteTime == seconds24Hours + +val MessageAutoDeleteTimerChanged.is7Days + get() = newAutoDeleteTime == seconds7Days From 838f62aa840c6d60db882a962f7c721d29d16aff Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 22:06:20 +0600 Subject: [PATCH 14/31] shortcuts seconds24Hours and seconds7Days are consts for now --- .../types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt index adbce62869..189b5d56af 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt @@ -7,8 +7,8 @@ import dev.inmo.tgbotapi.types.messageAutoDeleteTimeField import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable -private val seconds24Hours: Seconds = 60 * 60 * 24 -private val seconds7Days: Seconds = seconds24Hours * 7 +private const val seconds24Hours: Seconds = 60 * 60 * 24 +private const val seconds7Days: Seconds = seconds24Hours * 7 @Serializable data class MessageAutoDeleteTimerChanged( From 0faca5838c5169ffe933ebc9b6961d7dc687ea21 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 22:14:16 +0600 Subject: [PATCH 15/31] fixes in events builder behaviours --- .../behaviour_builder/expectations/WaitEventAction.kt | 5 ++--- .../behaviour_builder/triggers_handling/EventTriggers.kt | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt index e792af6007..308c5dbd39 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt @@ -3,8 +3,7 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext -import dev.inmo.tgbotapi.extensions.utils.asChatEventMessage -import dev.inmo.tgbotapi.extensions.utils.asMessageUpdate +import dev.inmo.tgbotapi.extensions.utils.* import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.message.ChatEvents.* import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* @@ -24,7 +23,7 @@ private suspend fun BehaviourContext.waitEventMessages( count, errorFactory ) { - it.asMessageUpdate() ?.data ?.asChatEventMessage() ?.mapper().let(::listOfNotNull) + it.asBaseSentMessageUpdate() ?.data ?.asChatEventMessage() ?.mapper().let(::listOfNotNull) }.toList().toList() diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt index 7e7a8b8a27..fdea3f9a0a 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt @@ -16,7 +16,7 @@ internal suspend inline fun BehaviourContext.onEvent( noinline additionalFilter: (suspend (ChatEventMessage) -> Boolean)? = null, noinline scenarioReceiver: BehaviourContextAndTypeReceiver> ) = flowsUpdatesFilter.expectFlow(bot) { - it.asMessageUpdate() ?.data ?.asChatEventMessage() ?.let { message -> + it.asBaseSentMessageUpdate() ?.data ?.asChatEventMessage() ?.let { message -> if (message.chatEvent is T) { val adaptedMessage = message as ChatEventMessage if (additionalFilter == null || additionalFilter(adaptedMessage)) adaptedMessage else null From 233d893b5a91e02ef734ad63ea4b6002b14152bc Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 9 Mar 2021 22:33:05 +0600 Subject: [PATCH 16/31] add isOff extension for MessageAutoDeleteTimerChanged --- .../types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt index 189b5d56af..fdd7e264d1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt @@ -16,6 +16,9 @@ data class MessageAutoDeleteTimerChanged( val newAutoDeleteTime: Seconds // TODO:: check that it is seconds ) : ChannelEvent, GroupEvent, SupergroupEvent +val MessageAutoDeleteTimerChanged.isOff + get() = newAutoDeleteTime == 0 + val MessageAutoDeleteTimerChanged.is24Hours get() = newAutoDeleteTime == seconds24Hours From 40d702a3118264d66165d4140430c837a84c63eb Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Wed, 10 Mar 2021 22:46:56 +0600 Subject: [PATCH 17/31] add representations of all chat invite link functionality --- .../chat/abstracts/ChatInviteLinkRequest.kt | 20 +++ .../chat/invite_links/CreateChatInviteLink.kt | 31 ++++ .../chat/invite_links/EditChatInviteLink.kt | 35 +++++ .../chat/invite_links/RevokeChatInviteLink.kt | 20 +++ .../dev/inmo/tgbotapi/types/ChatInviteLink.kt | 133 ++++++++++++++++++ .../kotlin/dev/inmo/tgbotapi/types/Common.kt | 9 ++ 6 files changed, 248 insertions(+) create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt new file mode 100644 index 0000000000..afbcbd72f8 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt @@ -0,0 +1,20 @@ +package dev.inmo.tgbotapi.requests.chat.abstracts + +import com.soywiz.klock.DateTime +import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.DeserializationStrategy + +interface ChatInviteLinkRequest : SimpleRequest { + val chatId: ChatId + + override val resultDeserializer: DeserializationStrategy + get() = BotInviteLink.serializer() +} +interface KnownChatInviteLinkRequest : ChatInviteLinkRequest { + val inviteLink: String +} +interface EditChatInviteLinkRequest : ChatInviteLinkRequest { + val expireDate: DateTime? + val membersLimit: MembersLimit? +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt new file mode 100644 index 0000000000..32ff101b0e --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt @@ -0,0 +1,31 @@ +package dev.inmo.tgbotapi.requests.chat.invite_links + +import com.soywiz.klock.* +import dev.inmo.tgbotapi.requests.chat.abstracts.EditChatInviteLinkRequest +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.* + +@Serializable +data class CreateChatInviteLink( + @SerialName(chatIdField) + override val chatId: ChatId, + @SerialName(expireDateField) + private val expirationUnixTimeStamp: UnixTimeStamp? = null, + @SerialName(memberLimitField) + override val membersLimit: MembersLimit? = null +) : EditChatInviteLinkRequest { + override val expireDate: DateTime? + get() = expirationUnixTimeStamp ?.seconds ?.let { DateTime(it.milliseconds) } + override val requestSerializer: SerializationStrategy<*> + get() = serializer() + + override fun method(): String = "createChatInviteLink" +} + +fun CreateChatInviteLink( + chatId: ChatId, + expireDate: DateTime, + membersLimit: MembersLimit? = null +): CreateChatInviteLink = CreateChatInviteLink( + chatId, expireDate.unixMillisDouble.milliseconds.seconds.toLong(), membersLimit +) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt new file mode 100644 index 0000000000..2e6c7e2bce --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt @@ -0,0 +1,35 @@ +package dev.inmo.tgbotapi.requests.chat.invite_links + +import com.soywiz.klock.* +import dev.inmo.tgbotapi.requests.chat.abstracts.EditChatInviteLinkRequest +import dev.inmo.tgbotapi.requests.chat.abstracts.KnownChatInviteLinkRequest +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.* + +@Serializable +data class EditChatInviteLink( + @SerialName(chatIdField) + override val chatId: ChatId, + @SerialName(inviteLinkField) + override val inviteLink: String, + @SerialName(expireDateField) + private val expirationUnixTimeStamp: UnixTimeStamp? = null, + @SerialName(memberLimitField) + override val membersLimit: MembersLimit? = null +) : EditChatInviteLinkRequest, KnownChatInviteLinkRequest { + override val expireDate: DateTime? + get() = expirationUnixTimeStamp ?.seconds ?.let { DateTime(it.milliseconds) } + override val requestSerializer: SerializationStrategy<*> + get() = serializer() + + override fun method(): String = "editChatInviteLink" +} + +fun EditChatInviteLink( + chatId: ChatId, + inviteLink: String, + expireDate: DateTime, + membersLimit: MembersLimit? = null +): EditChatInviteLink = EditChatInviteLink( + chatId, inviteLink, expireDate.unixMillisDouble.milliseconds.seconds.toLong(), membersLimit +) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt new file mode 100644 index 0000000000..9d14035c37 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt @@ -0,0 +1,20 @@ +package dev.inmo.tgbotapi.requests.chat.invite_links + +import com.soywiz.klock.* +import dev.inmo.tgbotapi.requests.chat.abstracts.EditChatInviteLinkRequest +import dev.inmo.tgbotapi.requests.chat.abstracts.KnownChatInviteLinkRequest +import dev.inmo.tgbotapi.types.* +import kotlinx.serialization.* + +@Serializable +data class RevokeChatInviteLink( + @SerialName(chatIdField) + override val chatId: ChatId, + @SerialName(inviteLinkField) + override val inviteLink: String +) : KnownChatInviteLinkRequest { + override val requestSerializer: SerializationStrategy<*> + get() = serializer() + + override fun method(): String = "revokeChatInviteLink" +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt new file mode 100644 index 0000000000..cba15be9b9 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt @@ -0,0 +1,133 @@ +package dev.inmo.tgbotapi.types + +import com.soywiz.klock.* +import kotlinx.serialization.* +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlinx.serialization.json.JsonObject + +@Serializable +private data class RawChatInviteLink( + @SerialName(inviteLinkField) + val inviteLink: String, + @SerialName(creatorField) + val creator: User, + @SerialName(isPrimaryField) + val isPrimary: Boolean, + @SerialName(isRevokedField) + val isRevoked: Boolean, + @SerialName(expireDateField) + val expirationDateTime: UnixTimeStamp? = null, + @SerialName(memberLimitField) + val membersLimit: MembersLimit ?= null +) + +private fun ChatInviteLink.toRawChatInviteLink() = RawChatInviteLink( + inviteLink, + creator, + isPrimary, + isRevoked, + expirationDateTime ?.unixMillis ?.milliseconds ?.seconds ?.toLong(), + membersLimit +) + +@Serializable(ChatInviteLinkSerializer::class) +sealed class ChatInviteLink { + abstract val inviteLink: String + abstract val creator: User + abstract val isPrimary: Boolean + abstract val isRevoked: Boolean + abstract val expirationDateTime: DateTime? + abstract val membersLimit: MembersLimit? +} + +@Serializable +data class BotInviteLink( + @SerialName(inviteLinkField) + override val inviteLink: String, + @SerialName(creatorField) + override val creator: Bot, + @SerialName(isRevokedField) + override val isRevoked: Boolean = false, + @SerialName(expireDateField) + private val expireDate: UnixTimeStamp? = null, + @SerialName(memberLimitField) + override val membersLimit: MembersLimit? = null +) : ChatInviteLink() { + override val isPrimary: Boolean + get() = false + override val expirationDateTime: DateTime? + get() { + return DateTime(expireDate ?.seconds ?.milliseconds ?: return null) + } +} + +@Serializable +data class PrimaryInviteLink( + @SerialName(inviteLinkField) + override val inviteLink: String, + @SerialName(creatorField) + override val creator: User, + @SerialName(isRevokedField) + override val isRevoked: Boolean = false, + @SerialName(expireDateField) + private val expireDate: UnixTimeStamp? = null, + @SerialName(memberLimitField) + override val membersLimit: MembersLimit? = null +) : ChatInviteLink() { + override val isPrimary: Boolean + get() = true + override val expirationDateTime: DateTime? + get() { + return DateTime(expireDate ?.seconds ?.milliseconds ?: return null) + } +} + +@Serializable +data class CommonInviteLink( + @SerialName(inviteLinkField) + override val inviteLink: String, + @SerialName(creatorField) + override val creator: User, + @SerialName(isRevokedField) + override val isRevoked: Boolean = false, + @SerialName(expireDateField) + private val expireDate: UnixTimeStamp? = null, + @SerialName(memberLimitField) + override val membersLimit: MembersLimit? = null +) : ChatInviteLink() { + override val isPrimary: Boolean + get() = false + override val expirationDateTime: DateTime? + get() { + return DateTime(expireDate ?.seconds ?.milliseconds ?: return null) + } +} + +@Serializer(ChatInviteLink::class) +object ChatInviteLinkSerializer : KSerializer { + override val descriptor: SerialDescriptor + get() = RawChatInviteLink.serializer().descriptor + + override fun deserialize(decoder: Decoder): ChatInviteLink { + val deserializedRaw = RawChatInviteLink.serializer().deserialize(decoder) + return deserializedRaw.run { + when { + creator is Bot -> BotInviteLink( + inviteLink, creator, isRevoked, expirationDateTime, membersLimit + ) + deserializedRaw.isPrimary -> PrimaryInviteLink( + inviteLink, creator, isRevoked, expirationDateTime, membersLimit + ) + else -> CommonInviteLink( + inviteLink, creator, isRevoked, expirationDateTime, membersLimit + ) + } + } + } + + override fun serialize(encoder: Encoder, value: ChatInviteLink) { + RawChatInviteLink.serializer().serialize(encoder, value.toRawChatInviteLink()) + } +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt index ff8adabedd..74d2f356b0 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt @@ -26,10 +26,12 @@ typealias FoursquareId = String typealias FoursquareType = String typealias GooglePlaceId = String typealias GooglePlaceType = String +typealias MembersLimit = Int typealias Seconds = Int typealias MilliSeconds = Long typealias LongSeconds = Long +typealias UnixTimeStamp = LongSeconds typealias Meters = Float typealias Degrees = Int @@ -76,6 +78,8 @@ val explanationLimit = 0 .. 200 val openPeriodPollSecondsLimit = 5 .. 600 +val membersLimit = 1 .. 99999 + // Made as lazy for correct work in K/JS val telegramInlineModeGifPermittedMimeTypes by lazy { listOf( @@ -164,6 +168,10 @@ const val linkedChatIdField = "linked_chat_id" const val horizontalAccuracyField = "horizontal_accuracy" const val revokeMessagesField = "revoke_messages" const val messageAutoDeleteTimeField = "message_auto_delete_time" +const val isPrimaryField = "is_primary" +const val isRevokedField = "is_revoked" +const val expireDateField = "expire_date" +const val memberLimitField = "member_limit" const val requestContactField = "request_contact" const val requestLocationField = "request_location" @@ -296,6 +304,7 @@ const val payField = "pay" const val permissionsField = "permissions" const val typeField = "type" const val valueField = "value" +const val creatorField = "creator" const val pointField = "point" const val xShiftField = "x_shift" From aba62ba930d713d4afca478168c46cec1f3a629c Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 11 Mar 2021 16:00:47 +0600 Subject: [PATCH 18/31] chatmember serializers are public --- CHANGELOG.md | 4 +++- .../types/ChatMember/abstracts/AdministratorChatMember.kt | 4 +++- .../inmo/tgbotapi/types/ChatMember/abstracts/ChatMember.kt | 4 +++- .../commonMain/kotlin/dev/inmo/tgbotapi/utils/Annotations.kt | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b96231b661..355c8a83e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,8 +5,10 @@ * `Common`: * `Version`: * `MicroUtils`: `0.4.28` -> `0.4.29` +* `Core`: + * `AdministratorChatMemberSerializer` and `ChatMemberSerializer` has changed their visibility: they are public for now * `Behaviour Builder`: - * Now content triggers and expectaters will wait for channel posts too + * Now content triggers and expectators will wait for channel posts too ## 0.32.9 diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt index ab6e9056f6..cd05b4e9c9 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/AdministratorChatMember.kt @@ -1,5 +1,6 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts +import dev.inmo.tgbotapi.utils.RiskFeature import kotlinx.serialization.* import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.encoding.Decoder @@ -20,7 +21,8 @@ interface AdministratorChatMember : SpecialRightsChatMember { } @Serializer(AdministratorChatMember::class) -internal object AdministratorChatMemberSerializer : KSerializer { +@RiskFeature +object AdministratorChatMemberSerializer : KSerializer { override val descriptor: SerialDescriptor = ChatMemberSerializer.descriptor override fun deserialize(decoder: Decoder): AdministratorChatMember = ChatMemberSerializer.deserialize(decoder) as AdministratorChatMember diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatMember.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatMember.kt index 8f4b9a88d1..d7c3f9b0ce 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatMember.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMember/abstracts/ChatMember.kt @@ -3,6 +3,7 @@ package dev.inmo.tgbotapi.types.ChatMember.abstracts import dev.inmo.tgbotapi.types.ChatMember.* import dev.inmo.tgbotapi.types.User import dev.inmo.tgbotapi.types.statusField +import dev.inmo.tgbotapi.utils.RiskFeature import dev.inmo.tgbotapi.utils.nonstrictJsonFormat import kotlinx.serialization.* import kotlinx.serialization.descriptors.SerialDescriptor @@ -17,7 +18,8 @@ interface ChatMember { } @Serializer(ChatMember::class) -internal object ChatMemberSerializer : KSerializer { +@RiskFeature +object ChatMemberSerializer : KSerializer { override val descriptor: SerialDescriptor = JsonObject.serializer().descriptor override fun deserialize(decoder: Decoder): ChatMember { diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/Annotations.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/Annotations.kt index 2d516c712a..421b12ba5b 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/Annotations.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/Annotations.kt @@ -35,4 +35,4 @@ const val lowLevelRiskFeatureMessage = "This method is low-level and not recomme AnnotationTarget.TYPEALIAS, AnnotationTarget.TYPE_PARAMETER ) -annotation class RiskFeature(val message: String) +annotation class RiskFeature(val message: String = lowLevelRiskFeatureMessage) From 9ad5bfbc572437d0eacc9332989ffbc76253e261 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 11 Mar 2021 16:36:01 +0600 Subject: [PATCH 19/31] remove BotInviteChatLink --- .../dev/inmo/tgbotapi/types/ChatInviteLink.kt | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt index cba15be9b9..46a46759d8 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt @@ -5,7 +5,6 @@ import kotlinx.serialization.* import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder -import kotlinx.serialization.json.JsonObject @Serializable private data class RawChatInviteLink( @@ -42,27 +41,6 @@ sealed class ChatInviteLink { abstract val membersLimit: MembersLimit? } -@Serializable -data class BotInviteLink( - @SerialName(inviteLinkField) - override val inviteLink: String, - @SerialName(creatorField) - override val creator: Bot, - @SerialName(isRevokedField) - override val isRevoked: Boolean = false, - @SerialName(expireDateField) - private val expireDate: UnixTimeStamp? = null, - @SerialName(memberLimitField) - override val membersLimit: MembersLimit? = null -) : ChatInviteLink() { - override val isPrimary: Boolean - get() = false - override val expirationDateTime: DateTime? - get() { - return DateTime(expireDate ?.seconds ?.milliseconds ?: return null) - } -} - @Serializable data class PrimaryInviteLink( @SerialName(inviteLinkField) @@ -114,9 +92,6 @@ object ChatInviteLinkSerializer : KSerializer { val deserializedRaw = RawChatInviteLink.serializer().deserialize(decoder) return deserializedRaw.run { when { - creator is Bot -> BotInviteLink( - inviteLink, creator, isRevoked, expirationDateTime, membersLimit - ) deserializedRaw.isPrimary -> PrimaryInviteLink( inviteLink, creator, isRevoked, expirationDateTime, membersLimit ) From e7265829d1c62d68305814d2f69508360d32cef8 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 11 Mar 2021 20:17:08 +0600 Subject: [PATCH 20/31] include ChatMemberUpdated functionality --- .../dev/inmo/tgbotapi/types/ChatInviteLink.kt | 16 +++++--------- .../inmo/tgbotapi/types/ChatMemberUpdated.kt | 22 +++++++++++++++++++ .../kotlin/dev/inmo/tgbotapi/types/Common.kt | 2 ++ .../dev/inmo/tgbotapi/types/UpdateTypes.kt | 6 ++++- .../update/CommonChatMemberUpdatedUpdate.kt | 10 +++++++++ .../types/update/MyChatMemberUpdatedUpdate.kt | 10 +++++++++ .../inmo/tgbotapi/types/update/RawUpdate.kt | 9 +++++--- .../abstracts/ChatMemberUpdatedUpdate.kt | 7 ++++++ 8 files changed, 68 insertions(+), 14 deletions(-) create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMemberUpdated.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/CommonChatMemberUpdatedUpdate.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MyChatMemberUpdatedUpdate.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/abstracts/ChatMemberUpdatedUpdate.kt diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt index 46a46759d8..fe6a0d094c 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt @@ -17,7 +17,7 @@ private data class RawChatInviteLink( @SerialName(isRevokedField) val isRevoked: Boolean, @SerialName(expireDateField) - val expirationDateTime: UnixTimeStamp? = null, + val expirationDateTime: TelegramDate? = null, @SerialName(memberLimitField) val membersLimit: MembersLimit ?= null ) @@ -27,7 +27,7 @@ private fun ChatInviteLink.toRawChatInviteLink() = RawChatInviteLink( creator, isPrimary, isRevoked, - expirationDateTime ?.unixMillis ?.milliseconds ?.seconds ?.toLong(), + expirationDateTime ?.toTelegramDate(), membersLimit ) @@ -50,16 +50,14 @@ data class PrimaryInviteLink( @SerialName(isRevokedField) override val isRevoked: Boolean = false, @SerialName(expireDateField) - private val expireDate: UnixTimeStamp? = null, + private val expireDate: TelegramDate? = null, @SerialName(memberLimitField) override val membersLimit: MembersLimit? = null ) : ChatInviteLink() { override val isPrimary: Boolean get() = true override val expirationDateTime: DateTime? - get() { - return DateTime(expireDate ?.seconds ?.milliseconds ?: return null) - } + get() = expireDate ?.asDate } @Serializable @@ -71,16 +69,14 @@ data class CommonInviteLink( @SerialName(isRevokedField) override val isRevoked: Boolean = false, @SerialName(expireDateField) - private val expireDate: UnixTimeStamp? = null, + private val expireDate: TelegramDate? = null, @SerialName(memberLimitField) override val membersLimit: MembersLimit? = null ) : ChatInviteLink() { override val isPrimary: Boolean get() = false override val expirationDateTime: DateTime? - get() { - return DateTime(expireDate ?.seconds ?.milliseconds ?: return null) - } + get() = expireDate ?.asDate } @Serializer(ChatInviteLink::class) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMemberUpdated.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMemberUpdated.kt new file mode 100644 index 0000000000..856e113ac0 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatMemberUpdated.kt @@ -0,0 +1,22 @@ +package dev.inmo.tgbotapi.types + +import dev.inmo.tgbotapi.types.ChatMember.abstracts.ChatMember +import dev.inmo.tgbotapi.types.chat.abstracts.Chat +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class ChatMemberUpdated( + @SerialName(chatField) + val chat: Chat, + @SerialName(fromField) + val user: User, + @SerialName(dateField) + val date: TelegramDate, + @SerialName(oldChatMemberField) + val oldChatMemberState: ChatMember, + @SerialName(newChatMemberField) + val newChatMemberState: ChatMember, + @SerialName(inviteLinkField) + val inviteLink: ChatInviteLink? = null +) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt index 74d2f356b0..8fc47f2a24 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt @@ -253,6 +253,8 @@ const val canManageVoiceChatsField = "can_manage_voice_chats" const val canManageChatField = "can_manage_chat" const val pngStickerField = "png_sticker" const val tgsStickerField = "tgs_sticker" +const val oldChatMemberField = "old_chat_member" +const val newChatMemberField = "new_chat_member" const val okField = "ok" const val captionField = "caption" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/UpdateTypes.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/UpdateTypes.kt index 0c2be08534..1606ea6ed4 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/UpdateTypes.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/UpdateTypes.kt @@ -11,6 +11,8 @@ const val UPDATE_SHIPPING_QUERY = "shipping_query" const val UPDATE_PRE_CHECKOUT_QUERY = "pre_checkout_query" const val UPDATE_POLL = "poll" const val UPDATE_POLL_ANSWER = "poll_answer" +const val MY_CHAT_MEMBER = "my_chat_member" +const val CHAT_MEMBER = "chat_member" val ALL_UPDATES_LIST = listOf( UPDATE_MESSAGE, @@ -23,5 +25,7 @@ val ALL_UPDATES_LIST = listOf( UPDATE_SHIPPING_QUERY, UPDATE_PRE_CHECKOUT_QUERY, UPDATE_POLL, - UPDATE_POLL_ANSWER + UPDATE_POLL_ANSWER, + MY_CHAT_MEMBER, + CHAT_MEMBER ) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/CommonChatMemberUpdatedUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/CommonChatMemberUpdatedUpdate.kt new file mode 100644 index 0000000000..4811ebaa74 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/CommonChatMemberUpdatedUpdate.kt @@ -0,0 +1,10 @@ +package dev.inmo.tgbotapi.types.update + +import dev.inmo.tgbotapi.types.ChatMemberUpdated +import dev.inmo.tgbotapi.types.UpdateIdentifier +import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate + +data class CommonChatMemberUpdatedUpdate( + override val updateId: UpdateIdentifier, + override val data: ChatMemberUpdated +) : ChatMemberUpdatedUpdate diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MyChatMemberUpdatedUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MyChatMemberUpdatedUpdate.kt new file mode 100644 index 0000000000..3dabbbb017 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/MyChatMemberUpdatedUpdate.kt @@ -0,0 +1,10 @@ +package dev.inmo.tgbotapi.types.update + +import dev.inmo.tgbotapi.types.ChatMemberUpdated +import dev.inmo.tgbotapi.types.UpdateIdentifier +import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate + +data class MyChatMemberUpdatedUpdate( + override val updateId: UpdateIdentifier, + override val data: ChatMemberUpdated +) : ChatMemberUpdatedUpdate diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/RawUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/RawUpdate.kt index 60080dac74..87e46b45d3 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/RawUpdate.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/RawUpdate.kt @@ -1,9 +1,9 @@ package dev.inmo.tgbotapi.types.update +import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.CallbackQuery.RawCallbackQuery import dev.inmo.tgbotapi.types.InlineQueries.ChosenInlineResult.RawChosenInlineResult import dev.inmo.tgbotapi.types.InlineQueries.query.RawInlineQuery -import dev.inmo.tgbotapi.types.UpdateIdentifier import dev.inmo.tgbotapi.types.message.abstracts.* import dev.inmo.tgbotapi.types.payments.PreCheckoutQuery import dev.inmo.tgbotapi.types.payments.ShippingQuery @@ -11,7 +11,6 @@ import dev.inmo.tgbotapi.types.polls.Poll import dev.inmo.tgbotapi.types.polls.PollAnswer import dev.inmo.tgbotapi.types.update.abstracts.UnknownUpdate import dev.inmo.tgbotapi.types.update.abstracts.Update -import dev.inmo.tgbotapi.types.updateIdField import kotlinx.serialization.* import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.jsonObject @@ -34,7 +33,9 @@ internal data class RawUpdate constructor( private val shipping_query: ShippingQuery? = null, private val pre_checkout_query: PreCheckoutQuery? = null, private val poll: Poll? = null, - private val poll_answer: PollAnswer? = null + private val poll_answer: PollAnswer? = null, + private val my_chat_member: ChatMemberUpdated? = null, + private val chat_member: ChatMemberUpdated? = null ) { private var initedUpdate: Update? = null /** @@ -58,6 +59,8 @@ internal data class RawUpdate constructor( pre_checkout_query != null -> PreCheckoutQueryUpdate(updateId, pre_checkout_query) poll != null -> PollUpdate(updateId, poll) poll_answer != null -> PollAnswerUpdate(updateId, poll_answer) + my_chat_member != null -> MyChatMemberUpdatedUpdate(updateId, my_chat_member) + chat_member != null -> CommonChatMemberUpdatedUpdate(updateId, chat_member) else -> UnknownUpdate( updateId, raw.toString(), diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/abstracts/ChatMemberUpdatedUpdate.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/abstracts/ChatMemberUpdatedUpdate.kt new file mode 100644 index 0000000000..44c11da4d3 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/update/abstracts/ChatMemberUpdatedUpdate.kt @@ -0,0 +1,7 @@ +package dev.inmo.tgbotapi.types.update.abstracts + +import dev.inmo.tgbotapi.types.ChatMemberUpdated + +interface ChatMemberUpdatedUpdate : Update { + override val data: ChatMemberUpdated +} From 66f7801b3263a770603b66fa760fabf0f3136ac8 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 11 Mar 2021 20:39:33 +0600 Subject: [PATCH 21/31] fix ChatInviteLinkRequest --- .../requests/chat/abstracts/ChatInviteLinkRequest.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt index afbcbd72f8..a56d8c5523 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt @@ -5,11 +5,11 @@ import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.DeserializationStrategy -interface ChatInviteLinkRequest : SimpleRequest { +interface ChatInviteLinkRequest : SimpleRequest { val chatId: ChatId - override val resultDeserializer: DeserializationStrategy - get() = BotInviteLink.serializer() + override val resultDeserializer: DeserializationStrategy + get() = CommonInviteLink.serializer() } interface KnownChatInviteLinkRequest : ChatInviteLinkRequest { val inviteLink: String From 36202133a1a4ff833094fbd166da8330059d8597 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 11 Mar 2021 21:06:25 +0600 Subject: [PATCH 22/31] update classcasts --- .../tgbotapi/extensions/utils/ClassCasts.kt | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt index 5e27c2c544..708f85ae7d 100644 --- a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt +++ b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt @@ -48,6 +48,53 @@ import dev.inmo.tgbotapi.types.update.* import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.* import dev.inmo.tgbotapi.types.update.abstracts.* import dev.inmo.tgbotapi.utils.PreviewFeature +import dev.inmo.tgbotapi.types.dice.DiceAnimationType +import dev.inmo.tgbotapi.types.update.abstracts.Update +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChatEvent +import dev.inmo.tgbotapi.types.update.CallbackQueryUpdate +import dev.inmo.tgbotapi.types.update.ChannelPostUpdate +import dev.inmo.tgbotapi.types.update.ChosenInlineResultUpdate +import dev.inmo.tgbotapi.types.update.CommonChatMemberUpdatedUpdate +import dev.inmo.tgbotapi.types.update.EditChannelPostUpdate +import dev.inmo.tgbotapi.types.update.EditMessageUpdate +import dev.inmo.tgbotapi.types.update.InlineQueryUpdate +import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.ChannelPostMediaGroupUpdate +import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.EditChannelPostMediaGroupUpdate +import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.EditMediaGroupUpdate +import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.EditMessageMediaGroupUpdate +import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.MediaGroupUpdate +import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.MessageMediaGroupUpdate +import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.SentMediaGroupUpdate +import dev.inmo.tgbotapi.types.update.MessageUpdate +import dev.inmo.tgbotapi.types.update.MyChatMemberUpdatedUpdate +import dev.inmo.tgbotapi.types.update.PollAnswerUpdate +import dev.inmo.tgbotapi.types.update.PollUpdate +import dev.inmo.tgbotapi.types.update.PreCheckoutQueryUpdate +import dev.inmo.tgbotapi.types.update.ShippingQueryUpdate +import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate +import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate +import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate +import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate +import dev.inmo.tgbotapi.types.update.abstracts.UnknownUpdate +import dev.inmo.tgbotapi.types.message.ChatEvents.ChannelChatCreated +import dev.inmo.tgbotapi.types.message.ChatEvents.DeleteChatPhoto +import dev.inmo.tgbotapi.types.message.ChatEvents.GroupChatCreated +import dev.inmo.tgbotapi.types.message.ChatEvents.LeftChatMember +import dev.inmo.tgbotapi.types.message.ChatEvents.MessageAutoDeleteTimerChanged +import dev.inmo.tgbotapi.types.message.ChatEvents.NewChatMembers +import dev.inmo.tgbotapi.types.message.ChatEvents.NewChatPhoto +import dev.inmo.tgbotapi.types.message.ChatEvents.NewChatTitle +import dev.inmo.tgbotapi.types.message.ChatEvents.PinnedMessage +import dev.inmo.tgbotapi.types.message.ChatEvents.ProximityAlertTriggered +import dev.inmo.tgbotapi.types.message.ChatEvents.SupergroupChatCreated +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChannelEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.CommonEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.GroupEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.SupergroupEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.VoiceChatEvent +import dev.inmo.tgbotapi.types.message.ChatEvents.voice.VoiceChatEnded +import dev.inmo.tgbotapi.types.message.ChatEvents.voice.VoiceChatParticipantsInvited +import dev.inmo.tgbotapi.types.message.ChatEvents.voice.VoiceChatStarted @PreviewFeature inline fun Chat.asBot(): Bot? = this as? Bot @@ -938,6 +985,18 @@ inline fun Update.asUnknownUpdate(): UnknownUpdate? = this as? UnknownUpdate @PreviewFeature inline fun Update.requireUnknownUpdate(): UnknownUpdate = this as UnknownUpdate @PreviewFeature +inline fun Update.asCommonChatMemberUpdatedUpdate(): CommonChatMemberUpdatedUpdate? = this as? CommonChatMemberUpdatedUpdate +@PreviewFeature +inline fun Update.requireCommonChatMemberUpdatedUpdate(): CommonChatMemberUpdatedUpdate = this as CommonChatMemberUpdatedUpdate +@PreviewFeature +inline fun Update.asMyChatMemberUpdatedUpdate(): MyChatMemberUpdatedUpdate? = this as? MyChatMemberUpdatedUpdate +@PreviewFeature +inline fun Update.requireMyChatMemberUpdatedUpdate(): MyChatMemberUpdatedUpdate = this as MyChatMemberUpdatedUpdate +@PreviewFeature +inline fun Update.asChatMemberUpdatedUpdate(): ChatMemberUpdatedUpdate? = this as? ChatMemberUpdatedUpdate +@PreviewFeature +inline fun Update.requireChatMemberUpdatedUpdate(): ChatMemberUpdatedUpdate = this as ChatMemberUpdatedUpdate +@PreviewFeature inline fun TelegramMediaFile.asAnimationFile(): AnimationFile? = this as? AnimationFile @PreviewFeature inline fun TelegramMediaFile.requireAnimationFile(): AnimationFile = this as AnimationFile @@ -1245,3 +1304,79 @@ inline fun DiceAnimationType.requireFootballDiceAnimationType(): FootballDiceAni inline fun DiceAnimationType.asSlotMachineDiceAnimationType(): SlotMachineDiceAnimationType? = this as? SlotMachineDiceAnimationType @PreviewFeature inline fun DiceAnimationType.requireSlotMachineDiceAnimationType(): SlotMachineDiceAnimationType = this as SlotMachineDiceAnimationType +@PreviewFeature +inline fun ChatEvent.asChannelChatCreated(): ChannelChatCreated? = this as? ChannelChatCreated +@PreviewFeature +inline fun ChatEvent.requireChannelChatCreated(): ChannelChatCreated = this as ChannelChatCreated +@PreviewFeature +inline fun ChatEvent.asDeleteChatPhoto(): DeleteChatPhoto? = this as? DeleteChatPhoto +@PreviewFeature +inline fun ChatEvent.requireDeleteChatPhoto(): DeleteChatPhoto = this as DeleteChatPhoto +@PreviewFeature +inline fun ChatEvent.asGroupChatCreated(): GroupChatCreated? = this as? GroupChatCreated +@PreviewFeature +inline fun ChatEvent.requireGroupChatCreated(): GroupChatCreated = this as GroupChatCreated +@PreviewFeature +inline fun ChatEvent.asLeftChatMember(): LeftChatMember? = this as? LeftChatMember +@PreviewFeature +inline fun ChatEvent.requireLeftChatMember(): LeftChatMember = this as LeftChatMember +@PreviewFeature +inline fun ChatEvent.asMessageAutoDeleteTimerChanged(): MessageAutoDeleteTimerChanged? = this as? MessageAutoDeleteTimerChanged +@PreviewFeature +inline fun ChatEvent.requireMessageAutoDeleteTimerChanged(): MessageAutoDeleteTimerChanged = this as MessageAutoDeleteTimerChanged +@PreviewFeature +inline fun ChatEvent.asNewChatMembers(): NewChatMembers? = this as? NewChatMembers +@PreviewFeature +inline fun ChatEvent.requireNewChatMembers(): NewChatMembers = this as NewChatMembers +@PreviewFeature +inline fun ChatEvent.asNewChatPhoto(): NewChatPhoto? = this as? NewChatPhoto +@PreviewFeature +inline fun ChatEvent.requireNewChatPhoto(): NewChatPhoto = this as NewChatPhoto +@PreviewFeature +inline fun ChatEvent.asNewChatTitle(): NewChatTitle? = this as? NewChatTitle +@PreviewFeature +inline fun ChatEvent.requireNewChatTitle(): NewChatTitle = this as NewChatTitle +@PreviewFeature +inline fun ChatEvent.asPinnedMessage(): PinnedMessage? = this as? PinnedMessage +@PreviewFeature +inline fun ChatEvent.requirePinnedMessage(): PinnedMessage = this as PinnedMessage +@PreviewFeature +inline fun ChatEvent.asProximityAlertTriggered(): ProximityAlertTriggered? = this as? ProximityAlertTriggered +@PreviewFeature +inline fun ChatEvent.requireProximityAlertTriggered(): ProximityAlertTriggered = this as ProximityAlertTriggered +@PreviewFeature +inline fun ChatEvent.asSupergroupChatCreated(): SupergroupChatCreated? = this as? SupergroupChatCreated +@PreviewFeature +inline fun ChatEvent.requireSupergroupChatCreated(): SupergroupChatCreated = this as SupergroupChatCreated +@PreviewFeature +inline fun ChatEvent.asChannelEvent(): ChannelEvent? = this as? ChannelEvent +@PreviewFeature +inline fun ChatEvent.requireChannelEvent(): ChannelEvent = this as ChannelEvent +@PreviewFeature +inline fun ChatEvent.asCommonEvent(): CommonEvent? = this as? CommonEvent +@PreviewFeature +inline fun ChatEvent.requireCommonEvent(): CommonEvent = this as CommonEvent +@PreviewFeature +inline fun ChatEvent.asGroupEvent(): GroupEvent? = this as? GroupEvent +@PreviewFeature +inline fun ChatEvent.requireGroupEvent(): GroupEvent = this as GroupEvent +@PreviewFeature +inline fun ChatEvent.asSupergroupEvent(): SupergroupEvent? = this as? SupergroupEvent +@PreviewFeature +inline fun ChatEvent.requireSupergroupEvent(): SupergroupEvent = this as SupergroupEvent +@PreviewFeature +inline fun ChatEvent.asVoiceChatEvent(): VoiceChatEvent? = this as? VoiceChatEvent +@PreviewFeature +inline fun ChatEvent.requireVoiceChatEvent(): VoiceChatEvent = this as VoiceChatEvent +@PreviewFeature +inline fun ChatEvent.asVoiceChatEnded(): VoiceChatEnded? = this as? VoiceChatEnded +@PreviewFeature +inline fun ChatEvent.requireVoiceChatEnded(): VoiceChatEnded = this as VoiceChatEnded +@PreviewFeature +inline fun ChatEvent.asVoiceChatParticipantsInvited(): VoiceChatParticipantsInvited? = this as? VoiceChatParticipantsInvited +@PreviewFeature +inline fun ChatEvent.requireVoiceChatParticipantsInvited(): VoiceChatParticipantsInvited = this as VoiceChatParticipantsInvited +@PreviewFeature +inline fun ChatEvent.asVoiceChatStarted(): VoiceChatStarted? = this as? VoiceChatStarted +@PreviewFeature +inline fun ChatEvent.requireVoiceChatStarted(): VoiceChatStarted = this as VoiceChatStarted From 65cba0f014e52e19b32580a25fd918b0b2058958 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 11 Mar 2021 21:25:11 +0600 Subject: [PATCH 23/31] fill api of chat invite links --- .../chat/abstracts/ChatInviteLinkRequest.kt | 2 +- .../chat/invite_links/CreateChatInviteLink.kt | 8 +-- .../chat/invite_links/EditChatInviteLink.kt | 10 +-- .../chat/invite_links/RevokeChatInviteLink.kt | 2 +- .../chat/invite_links/CreateChatInviteLink.kt | 31 +++++++++ .../chat/invite_links/EditChatInviteLink.kt | 64 +++++++++++++++++++ .../chat/invite_links/RevokeChatInviteLink.kt | 27 ++++++++ 7 files changed, 133 insertions(+), 11 deletions(-) create mode 100644 tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/CreateChatInviteLink.kt create mode 100644 tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt create mode 100644 tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt index a56d8c5523..a45d428a8d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/abstracts/ChatInviteLinkRequest.kt @@ -6,7 +6,7 @@ import dev.inmo.tgbotapi.types.* import kotlinx.serialization.DeserializationStrategy interface ChatInviteLinkRequest : SimpleRequest { - val chatId: ChatId + val chatId: ChatIdentifier override val resultDeserializer: DeserializationStrategy get() = CommonInviteLink.serializer() diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt index 32ff101b0e..a6212c4a44 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt @@ -8,14 +8,14 @@ import kotlinx.serialization.* @Serializable data class CreateChatInviteLink( @SerialName(chatIdField) - override val chatId: ChatId, + override val chatId: ChatIdentifier, @SerialName(expireDateField) - private val expirationUnixTimeStamp: UnixTimeStamp? = null, + private val expirationUnixTimeStamp: TelegramDate? = null, @SerialName(memberLimitField) override val membersLimit: MembersLimit? = null ) : EditChatInviteLinkRequest { override val expireDate: DateTime? - get() = expirationUnixTimeStamp ?.seconds ?.let { DateTime(it.milliseconds) } + get() = expirationUnixTimeStamp ?.asDate override val requestSerializer: SerializationStrategy<*> get() = serializer() @@ -27,5 +27,5 @@ fun CreateChatInviteLink( expireDate: DateTime, membersLimit: MembersLimit? = null ): CreateChatInviteLink = CreateChatInviteLink( - chatId, expireDate.unixMillisDouble.milliseconds.seconds.toLong(), membersLimit + chatId, expireDate.toTelegramDate(), membersLimit ) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt index 2e6c7e2bce..3ea6fc0eda 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt @@ -9,16 +9,16 @@ import kotlinx.serialization.* @Serializable data class EditChatInviteLink( @SerialName(chatIdField) - override val chatId: ChatId, + override val chatId: ChatIdentifier, @SerialName(inviteLinkField) override val inviteLink: String, @SerialName(expireDateField) - private val expirationUnixTimeStamp: UnixTimeStamp? = null, + private val expirationUnixTimeStamp: TelegramDate? = null, @SerialName(memberLimitField) override val membersLimit: MembersLimit? = null ) : EditChatInviteLinkRequest, KnownChatInviteLinkRequest { override val expireDate: DateTime? - get() = expirationUnixTimeStamp ?.seconds ?.let { DateTime(it.milliseconds) } + get() = expirationUnixTimeStamp ?.asDate override val requestSerializer: SerializationStrategy<*> get() = serializer() @@ -26,10 +26,10 @@ data class EditChatInviteLink( } fun EditChatInviteLink( - chatId: ChatId, + chatId: ChatIdentifier, inviteLink: String, expireDate: DateTime, membersLimit: MembersLimit? = null ): EditChatInviteLink = EditChatInviteLink( - chatId, inviteLink, expireDate.unixMillisDouble.milliseconds.seconds.toLong(), membersLimit + chatId, inviteLink, expireDate.toTelegramDate(), membersLimit ) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt index 9d14035c37..617f181e2a 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt @@ -9,7 +9,7 @@ import kotlinx.serialization.* @Serializable data class RevokeChatInviteLink( @SerialName(chatIdField) - override val chatId: ChatId, + override val chatId: ChatIdentifier, @SerialName(inviteLinkField) override val inviteLink: String ) : KnownChatInviteLinkRequest { diff --git a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/CreateChatInviteLink.kt b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/CreateChatInviteLink.kt new file mode 100644 index 0000000000..93ed35d244 --- /dev/null +++ b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/CreateChatInviteLink.kt @@ -0,0 +1,31 @@ +package dev.inmo.tgbotapi.extensions.api.chat.invite_links + +import com.soywiz.klock.DateTime +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.chat.invite_links.CreateChatInviteLink +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat + +suspend fun TelegramBot.createChatInviteLink( + chatId: ChatIdentifier, + expiration: TelegramDate? = null, + membersLimit: MembersLimit? = null +) = execute(CreateChatInviteLink(chatId, expiration, membersLimit)) + +suspend fun TelegramBot.createChatInviteLink( + chat: PublicChat, + expiration: TelegramDate? = null, + membersLimit: MembersLimit? = null +) = createChatInviteLink(chat.id, expiration, membersLimit) + +suspend fun TelegramBot.createChatInviteLink( + chatId: ChatIdentifier, + expiration: DateTime, + membersLimit: MembersLimit? = null +) = createChatInviteLink(chatId, expiration.toTelegramDate(), membersLimit) + +suspend fun TelegramBot.createChatInviteLink( + chat: PublicChat, + expiration: DateTime, + membersLimit: MembersLimit? = null +) = createChatInviteLink(chat.id, expiration.toTelegramDate(), membersLimit) diff --git a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt new file mode 100644 index 0000000000..c5fdf01154 --- /dev/null +++ b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt @@ -0,0 +1,64 @@ +package dev.inmo.tgbotapi.extensions.api.chat.invite_links + +import com.soywiz.klock.DateTime +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.chat.invite_links.CreateChatInviteLink +import dev.inmo.tgbotapi.requests.chat.invite_links.EditChatInviteLink +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat + +suspend fun TelegramBot.editChatInviteLink( + chatId: ChatIdentifier, + previousLink: String, + expiration: TelegramDate? = null, + membersLimit: MembersLimit? = null +) = execute(EditChatInviteLink(chatId, previousLink, expiration, membersLimit)) + +suspend fun TelegramBot.editChatInviteLink( + chat: PublicChat, + previousLink: String, + expiration: TelegramDate? = null, + membersLimit: MembersLimit? = null +) = editChatInviteLink(chat.id, previousLink, expiration, membersLimit) + +suspend fun TelegramBot.editChatInviteLink( + chatId: ChatIdentifier, + previousLink: String, + expiration: DateTime, + membersLimit: MembersLimit? = null +) = editChatInviteLink(chatId, previousLink, expiration.toTelegramDate(), membersLimit) + +suspend fun TelegramBot.editChatInviteLink( + chat: PublicChat, + previousLink: String, + expiration: DateTime, + membersLimit: MembersLimit? = null +) = editChatInviteLink(chat.id, previousLink, expiration.toTelegramDate(), membersLimit) + +suspend fun TelegramBot.editChatInviteLink( + chat: ChatIdentifier, + previousLink: ChatInviteLink, + expiration: TelegramDate? = previousLink.expirationDateTime ?.toTelegramDate(), + membersLimit: MembersLimit? = previousLink.membersLimit +) = editChatInviteLink(chat, previousLink.inviteLink, expiration, membersLimit) + +suspend fun TelegramBot.editChatInviteLink( + chat: ChatIdentifier, + previousLink: ChatInviteLink, + expiration: DateTime, + membersLimit: MembersLimit? = previousLink.membersLimit +) = editChatInviteLink(chat, previousLink.inviteLink, expiration, membersLimit) + +suspend fun TelegramBot.editChatInviteLink( + chat: PublicChat, + previousLink: ChatInviteLink, + expiration: TelegramDate? = previousLink.expirationDateTime ?.toTelegramDate(), + membersLimit: MembersLimit? = previousLink.membersLimit +) = editChatInviteLink(chat, previousLink.inviteLink, expiration, membersLimit) + +suspend fun TelegramBot.editChatInviteLink( + chat: PublicChat, + previousLink: ChatInviteLink, + expiration: DateTime, + membersLimit: MembersLimit? = previousLink.membersLimit +) = editChatInviteLink(chat, previousLink.inviteLink, expiration, membersLimit) diff --git a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt new file mode 100644 index 0000000000..4e2a4edeee --- /dev/null +++ b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt @@ -0,0 +1,27 @@ +package dev.inmo.tgbotapi.extensions.api.chat.invite_links + +import com.soywiz.klock.DateTime +import dev.inmo.tgbotapi.bot.TelegramBot +import dev.inmo.tgbotapi.requests.chat.invite_links.* +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat + +suspend fun TelegramBot.revokeChatInviteLink( + chatId: ChatIdentifier, + previousLink: String +) = execute(RevokeChatInviteLink(chatId, previousLink)) + +suspend fun TelegramBot.revokeChatInviteLink( + chat: PublicChat, + previousLink: String +) = revokeChatInviteLink(chat.id, previousLink) + +suspend fun TelegramBot.revokeChatInviteLink( + chatId: ChatIdentifier, + previousLink: ChatInviteLink +) = revokeChatInviteLink(chatId, previousLink.inviteLink) + +suspend fun TelegramBot.revokeChatInviteLink( + chat: PublicChat, + previousLink: ChatInviteLink +) = revokeChatInviteLink(chat, previousLink.inviteLink) From e9b074a36c54e62f22fa896f50ae306a754373c2 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 11 Mar 2021 21:36:29 +0600 Subject: [PATCH 24/31] updates of FlowsUpdatesFilter --- .../dev/inmo/tgbotapi/updateshandlers/FlowsUpdatesFilter.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/updateshandlers/FlowsUpdatesFilter.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/updateshandlers/FlowsUpdatesFilter.kt index b07bc97cf6..9b86454801 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/updateshandlers/FlowsUpdatesFilter.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/updateshandlers/FlowsUpdatesFilter.kt @@ -28,6 +28,8 @@ interface FlowsUpdatesFilter : UpdatesFilter { val preCheckoutQueryFlow: Flow val pollFlow: Flow val pollAnswerFlow: Flow + val chatMemberUpdatedFlow: Flow + val myChatMemberUpdatedFlow: Flow val unknownUpdateTypeFlow: Flow } @@ -74,5 +76,7 @@ class DefaultFlowsUpdatesFilter( override val preCheckoutQueryFlow: Flow = allUpdatesFlow.filterIsInstance() override val pollFlow: Flow = allUpdatesFlow.filterIsInstance() override val pollAnswerFlow: Flow = allUpdatesFlow.filterIsInstance() + override val chatMemberUpdatedFlow: Flow = allUpdatesFlow.filterIsInstance() + override val myChatMemberUpdatedFlow: Flow = allUpdatesFlow.filterIsInstance() override val unknownUpdateTypeFlow: Flow = allUpdatesFlow.filterIsInstance() } \ No newline at end of file From d7d4adc8e4608b99040acefd895bfd0a5bb2e835 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 11 Mar 2021 21:39:34 +0600 Subject: [PATCH 25/31] optimize imports --- .../requests/SetPassportDataErrors.kt | 1 - .../chat/invite_links/CreateChatInviteLink.kt | 2 +- .../chat/invite_links/EditChatInviteLink.kt | 2 +- .../chat/invite_links/RevokeChatInviteLink.kt | 2 - .../tgbotapi/requests/send/polls/SendPoll.kt | 1 - .../dev/inmo/tgbotapi/types/ChatIdentifier.kt | 1 - .../dev/inmo/tgbotapi/types/ChatInviteLink.kt | 2 +- .../MessageAutoDeleteTimerChanged.kt | 1 - .../types/message/PrivateMessageImpl.kt | 3 +- .../types/message/content/TextContent.kt | 3 +- .../types/passport/encrypted/Email.kt | 2 +- .../passport/encrypted/EncryptedAddress.kt | 2 +- .../encrypted/EncryptedPersonalDetails.kt | 2 +- .../types/passport/encrypted/PhoneNumber.kt | 2 +- .../utils/passport/DecryptionContext.kt | 7 --- .../utils/passport/CredentialsDecrypting.kt | 5 +- .../chat/invite_links/EditChatInviteLink.kt | 1 - .../chat/invite_links/RevokeChatInviteLink.kt | 6 +-- .../api/send/media/SendMediaGroup.kt | 1 - .../expectations/WaitEventAction.kt | 3 +- .../expectations/WaitInlineQuery.kt | 2 - .../expectations/WaitPassportData.kt | 3 +- .../CallbackQueryTriggers.kt | 2 +- .../triggers_handling/EventTriggers.kt | 3 +- .../triggers_handling/InlineQueryTriggers.kt | 2 - .../triggers_handling/MediaGroupTriggers.kt | 5 +- .../triggers_handling/PassportTriggers.kt | 3 +- .../tgbotapi/extensions/utils/ClassCasts.kt | 50 ++----------------- .../utils/updates/retrieving/LongPolling.kt | 2 - .../updates/retrieving/MediaGroupsIncluder.kt | 1 - 30 files changed, 31 insertions(+), 91 deletions(-) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/SetPassportDataErrors.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/SetPassportDataErrors.kt index 80a039fd40..34a6deb85f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/SetPassportDataErrors.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/SetPassportDataErrors.kt @@ -1,6 +1,5 @@ package dev.inmo.tgbotapi.requests -import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.abstracts.SimpleRequest import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.passport.PassportElementError diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt index a6212c4a44..4a87ef49c7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/CreateChatInviteLink.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.invite_links -import com.soywiz.klock.* +import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.requests.chat.abstracts.EditChatInviteLinkRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt index 3ea6fc0eda..fdeb3b55e1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/EditChatInviteLink.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.requests.chat.invite_links -import com.soywiz.klock.* +import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.requests.chat.abstracts.EditChatInviteLinkRequest import dev.inmo.tgbotapi.requests.chat.abstracts.KnownChatInviteLinkRequest import dev.inmo.tgbotapi.types.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt index 617f181e2a..31a8993666 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/chat/invite_links/RevokeChatInviteLink.kt @@ -1,7 +1,5 @@ package dev.inmo.tgbotapi.requests.chat.invite_links -import com.soywiz.klock.* -import dev.inmo.tgbotapi.requests.chat.abstracts.EditChatInviteLinkRequest import dev.inmo.tgbotapi.requests.chat.abstracts.KnownChatInviteLinkRequest import dev.inmo.tgbotapi.types.* import kotlinx.serialization.* diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/polls/SendPoll.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/polls/SendPoll.kt index d4bfd445cf..2af52017ef 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/polls/SendPoll.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/polls/SendPoll.kt @@ -1,7 +1,6 @@ package dev.inmo.tgbotapi.requests.send.polls import com.soywiz.klock.DateTime -import com.soywiz.klock.TimeSpan import dev.inmo.tgbotapi.CommonAbstracts.* import dev.inmo.tgbotapi.requests.send.abstracts.ReplyingMarkupSendMessageRequest import dev.inmo.tgbotapi.requests.send.abstracts.SendMessageRequest diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatIdentifier.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatIdentifier.kt index bdd251b7ed..3633593f94 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatIdentifier.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatIdentifier.kt @@ -1,7 +1,6 @@ package dev.inmo.tgbotapi.types import dev.inmo.micro_utils.common.Warning -import dev.inmo.tgbotapi.types.chat.abstracts.Chat import kotlinx.serialization.* import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt index fe6a0d094c..fe4bc031e7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/ChatInviteLink.kt @@ -1,6 +1,6 @@ package dev.inmo.tgbotapi.types -import com.soywiz.klock.* +import com.soywiz.klock.DateTime import kotlinx.serialization.* import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.encoding.Decoder diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt index fdd7e264d1..3144e466cc 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChatEvents/MessageAutoDeleteTimerChanged.kt @@ -1,6 +1,5 @@ package dev.inmo.tgbotapi.types.message.ChatEvents -import com.soywiz.klock.hours import dev.inmo.tgbotapi.types.Seconds import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* import dev.inmo.tgbotapi.types.messageAutoDeleteTimeField diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateMessageImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateMessageImpl.kt index 94438537e2..94cd9fea81 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateMessageImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateMessageImpl.kt @@ -4,7 +4,8 @@ import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup import dev.inmo.tgbotapi.types.chat.abstracts.Chat -import dev.inmo.tgbotapi.types.message.abstracts.* +import dev.inmo.tgbotapi.types.message.abstracts.Message +import dev.inmo.tgbotapi.types.message.abstracts.PrivateContentMessage import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent import dev.inmo.tgbotapi.types.message.payments.SuccessfulPaymentInfo diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/TextContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/TextContent.kt index 2d098ebc64..915c875a69 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/TextContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/TextContent.kt @@ -5,7 +5,8 @@ import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.send.SendTextMessage import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier -import dev.inmo.tgbotapi.types.ParseMode.* +import dev.inmo.tgbotapi.types.ParseMode.ParseMode +import dev.inmo.tgbotapi.types.ParseMode.defaultParseMode import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/Email.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/Email.kt index a8ed36220e..707a87f62f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/Email.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/Email.kt @@ -3,8 +3,8 @@ package dev.inmo.tgbotapi.types.passport.encrypted import dev.inmo.micro_utils.serialization.base64.Base64BytesToFromStringSerializer import dev.inmo.tgbotapi.types.emailField import dev.inmo.tgbotapi.types.hashField -import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.PassportElementHash import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithEmail +import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.PassportElementHash import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedAddress.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedAddress.kt index 3e3f1d2010..5b2cec3eb1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedAddress.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedAddress.kt @@ -3,8 +3,8 @@ package dev.inmo.tgbotapi.types.passport.encrypted import dev.inmo.micro_utils.serialization.base64.Base64BytesToFromStringSerializer import dev.inmo.tgbotapi.types.dataField import dev.inmo.tgbotapi.types.passport.credentials.EncryptedData -import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.PassportElementHash import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithData +import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.PassportElementHash import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedPersonalDetails.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedPersonalDetails.kt index fe1142a7e4..1df8d90be5 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedPersonalDetails.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/EncryptedPersonalDetails.kt @@ -3,8 +3,8 @@ package dev.inmo.tgbotapi.types.passport.encrypted import dev.inmo.micro_utils.serialization.base64.Base64BytesToFromStringSerializer import dev.inmo.tgbotapi.types.dataField import dev.inmo.tgbotapi.types.passport.credentials.EncryptedData -import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.PassportElementHash import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithData +import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.PassportElementHash import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/PhoneNumber.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/PhoneNumber.kt index 88dc723765..d6cc0df603 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/PhoneNumber.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/passport/encrypted/PhoneNumber.kt @@ -2,8 +2,8 @@ package dev.inmo.tgbotapi.types.passport.encrypted import dev.inmo.micro_utils.serialization.base64.Base64BytesToFromStringSerializer import dev.inmo.tgbotapi.types.hashField -import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.PassportElementHash import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElementWithPhoneNumber +import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.PassportElementHash import dev.inmo.tgbotapi.types.phoneNumberField import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/passport/DecryptionContext.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/passport/DecryptionContext.kt index f179e3f627..57654fcfb7 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/passport/DecryptionContext.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/passport/DecryptionContext.kt @@ -1,14 +1,7 @@ package dev.inmo.tgbotapi.utils.passport import dev.inmo.micro_utils.crypto.SourceBytes -import dev.inmo.tgbotapi.bot.TelegramBot -import dev.inmo.tgbotapi.requests.DownloadFile -import dev.inmo.tgbotapi.requests.get.GetFile -import dev.inmo.tgbotapi.types.passport.credentials.EncryptedCredentials import dev.inmo.tgbotapi.types.passport.credentials.EncryptedData -import dev.inmo.tgbotapi.types.passport.encrypted.PassportFile -import dev.inmo.tgbotapi.utils.nonstrictJsonFormat -import kotlinx.serialization.json.JsonObject interface Decryptor { fun decrypt(data: EncryptedData): SourceBytes diff --git a/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/passport/CredentialsDecrypting.kt b/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/passport/CredentialsDecrypting.kt index 7639ee5845..e150cc7f78 100644 --- a/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/passport/CredentialsDecrypting.kt +++ b/tgbotapi.core/src/jvmMain/kotlin/dev/inmo/tgbotapi/utils/passport/CredentialsDecrypting.kt @@ -4,11 +4,10 @@ import dev.inmo.micro_utils.crypto.decodeBase64 import dev.inmo.tgbotapi.types.passport.credentials.DecryptedCredentials import dev.inmo.tgbotapi.types.passport.credentials.EncryptedCredentials import dev.inmo.tgbotapi.utils.nonstrictJsonFormat -import java.security.* +import java.security.KeyFactory +import java.security.PrivateKey import java.security.spec.PKCS8EncodedKeySpec import javax.crypto.Cipher -import javax.crypto.spec.IvParameterSpec -import javax.crypto.spec.SecretKeySpec private val regexToRemoveFromKey = Regex("(-----(BEGIN|END) ((?:.*? KEY)|CERTIFICATE)-----|[\\s])") diff --git a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt index c5fdf01154..027a54360f 100644 --- a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt +++ b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/EditChatInviteLink.kt @@ -2,7 +2,6 @@ package dev.inmo.tgbotapi.extensions.api.chat.invite_links import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.bot.TelegramBot -import dev.inmo.tgbotapi.requests.chat.invite_links.CreateChatInviteLink import dev.inmo.tgbotapi.requests.chat.invite_links.EditChatInviteLink import dev.inmo.tgbotapi.types.* import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat diff --git a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt index 4e2a4edeee..320e29fa08 100644 --- a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt +++ b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/chat/invite_links/RevokeChatInviteLink.kt @@ -1,9 +1,9 @@ package dev.inmo.tgbotapi.extensions.api.chat.invite_links -import com.soywiz.klock.DateTime import dev.inmo.tgbotapi.bot.TelegramBot -import dev.inmo.tgbotapi.requests.chat.invite_links.* -import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.requests.chat.invite_links.RevokeChatInviteLink +import dev.inmo.tgbotapi.types.ChatIdentifier +import dev.inmo.tgbotapi.types.ChatInviteLink import dev.inmo.tgbotapi.types.chat.abstracts.PublicChat suspend fun TelegramBot.revokeChatInviteLink( diff --git a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendMediaGroup.kt b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendMediaGroup.kt index e8cf10588f..01b8bb5077 100644 --- a/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendMediaGroup.kt +++ b/tgbotapi.extensions.api/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/api/send/media/SendMediaGroup.kt @@ -8,7 +8,6 @@ import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.chat.abstracts.Chat import dev.inmo.tgbotapi.types.message.abstracts.Message import dev.inmo.tgbotapi.types.message.content.abstracts.MediaGroupContent -import dev.inmo.tgbotapi.types.message.content.abstracts.VisualMediaGroupContent import dev.inmo.tgbotapi.utils.RiskFeature /** diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt index 308c5dbd39..53fee66475 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitEventAction.kt @@ -3,7 +3,8 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext -import dev.inmo.tgbotapi.extensions.utils.* +import dev.inmo.tgbotapi.extensions.utils.asBaseSentMessageUpdate +import dev.inmo.tgbotapi.extensions.utils.asChatEventMessage import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.message.ChatEvents.* import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitInlineQuery.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitInlineQuery.kt index 009af3d38a..1e34de13eb 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitInlineQuery.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitInlineQuery.kt @@ -1,10 +1,8 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext -import dev.inmo.tgbotapi.extensions.utils.asCallbackQueryUpdate import dev.inmo.tgbotapi.extensions.utils.asInlineQueryUpdate import dev.inmo.tgbotapi.requests.abstracts.Request -import dev.inmo.tgbotapi.types.CallbackQuery.* import dev.inmo.tgbotapi.types.InlineQueries.abstracts.InlineQuery import dev.inmo.tgbotapi.types.InlineQueries.query.BaseInlineQuery import dev.inmo.tgbotapi.types.InlineQueries.query.LocationInlineQuery diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPassportData.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPassportData.kt index 309a4705d0..c77cd0381b 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPassportData.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitPassportData.kt @@ -1,7 +1,8 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext -import dev.inmo.tgbotapi.extensions.utils.* +import dev.inmo.tgbotapi.extensions.utils.asMessageUpdate +import dev.inmo.tgbotapi.extensions.utils.asPassportMessage import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.message.PassportMessage import dev.inmo.tgbotapi.types.passport.PassportData diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggers.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggers.kt index d66c64eab8..8e0f9724f8 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggers.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/CallbackQueryTriggers.kt @@ -4,7 +4,7 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions import dev.inmo.tgbotapi.extensions.behaviour_builder.* import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.expectFlow -import dev.inmo.tgbotapi.extensions.utils.* +import dev.inmo.tgbotapi.extensions.utils.asCallbackQueryUpdate import dev.inmo.tgbotapi.extensions.utils.extensions.sourceChat import dev.inmo.tgbotapi.types.CallbackQuery.* diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt index fdea3f9a0a..6940426c78 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/EventTriggers.kt @@ -4,7 +4,8 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions import dev.inmo.tgbotapi.extensions.behaviour_builder.* import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.expectFlow -import dev.inmo.tgbotapi.extensions.utils.* +import dev.inmo.tgbotapi.extensions.utils.asBaseSentMessageUpdate +import dev.inmo.tgbotapi.extensions.utils.asChatEventMessage import dev.inmo.tgbotapi.extensions.utils.extensions.sourceChat import dev.inmo.tgbotapi.types.message.ChatEvents.* import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/InlineQueryTriggers.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/InlineQueryTriggers.kt index e85f2cee37..317943df52 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/InlineQueryTriggers.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/InlineQueryTriggers.kt @@ -5,8 +5,6 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.* import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.expectFlow import dev.inmo.tgbotapi.extensions.utils.asInlineQueryUpdate import dev.inmo.tgbotapi.extensions.utils.extensions.sourceChat -import dev.inmo.tgbotapi.types.CallbackQuery.DataCallbackQuery -import dev.inmo.tgbotapi.types.CallbackQuery.GameShortNameCallbackQuery import dev.inmo.tgbotapi.types.InlineQueries.abstracts.InlineQuery import dev.inmo.tgbotapi.types.InlineQueries.query.BaseInlineQuery import dev.inmo.tgbotapi.types.InlineQueries.query.LocationInlineQuery diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MediaGroupTriggers.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MediaGroupTriggers.kt index 639f2cbeff..31a9b9d11c 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MediaGroupTriggers.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/MediaGroupTriggers.kt @@ -5,12 +5,13 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions import dev.inmo.tgbotapi.extensions.behaviour_builder.* import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.expectFlow -import dev.inmo.tgbotapi.extensions.utils.* +import dev.inmo.tgbotapi.extensions.utils.asSentMediaGroupUpdate import dev.inmo.tgbotapi.extensions.utils.extensions.sourceChat import dev.inmo.tgbotapi.extensions.utils.shortcuts.chat import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage import dev.inmo.tgbotapi.types.message.content.abstracts.* -import dev.inmo.tgbotapi.types.message.content.media.* +import dev.inmo.tgbotapi.types.message.content.media.PhotoContent +import dev.inmo.tgbotapi.types.message.content.media.VideoContent import dev.inmo.tgbotapi.utils.PreviewFeature @PreviewFeature diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PassportTriggers.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PassportTriggers.kt index 971a55419f..e954526b0e 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PassportTriggers.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/PassportTriggers.kt @@ -3,7 +3,8 @@ package dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions import dev.inmo.tgbotapi.extensions.behaviour_builder.* import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.expectFlow -import dev.inmo.tgbotapi.extensions.utils.* +import dev.inmo.tgbotapi.extensions.utils.asMessageUpdate +import dev.inmo.tgbotapi.extensions.utils.asPassportMessage import dev.inmo.tgbotapi.extensions.utils.extensions.sourceChat import dev.inmo.tgbotapi.types.message.PassportMessage import dev.inmo.tgbotapi.types.passport.encrypted.abstracts.EncryptedPassportElement diff --git a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt index 708f85ae7d..6eef25aed0 100644 --- a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt +++ b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt @@ -32,7 +32,10 @@ import dev.inmo.tgbotapi.types.dice.* import dev.inmo.tgbotapi.types.files.* import dev.inmo.tgbotapi.types.files.abstracts.* import dev.inmo.tgbotapi.types.message.* +import dev.inmo.tgbotapi.types.message.ChatEvents.* +import dev.inmo.tgbotapi.types.message.ChatEvents.LeftChatMember import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.* +import dev.inmo.tgbotapi.types.message.ChatEvents.voice.* import dev.inmo.tgbotapi.types.message.abstracts.* import dev.inmo.tgbotapi.types.message.content.* import dev.inmo.tgbotapi.types.message.content.abstracts.* @@ -48,53 +51,6 @@ import dev.inmo.tgbotapi.types.update.* import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.* import dev.inmo.tgbotapi.types.update.abstracts.* import dev.inmo.tgbotapi.utils.PreviewFeature -import dev.inmo.tgbotapi.types.dice.DiceAnimationType -import dev.inmo.tgbotapi.types.update.abstracts.Update -import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChatEvent -import dev.inmo.tgbotapi.types.update.CallbackQueryUpdate -import dev.inmo.tgbotapi.types.update.ChannelPostUpdate -import dev.inmo.tgbotapi.types.update.ChosenInlineResultUpdate -import dev.inmo.tgbotapi.types.update.CommonChatMemberUpdatedUpdate -import dev.inmo.tgbotapi.types.update.EditChannelPostUpdate -import dev.inmo.tgbotapi.types.update.EditMessageUpdate -import dev.inmo.tgbotapi.types.update.InlineQueryUpdate -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.ChannelPostMediaGroupUpdate -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.EditChannelPostMediaGroupUpdate -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.EditMediaGroupUpdate -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.EditMessageMediaGroupUpdate -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.MediaGroupUpdate -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.MessageMediaGroupUpdate -import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.SentMediaGroupUpdate -import dev.inmo.tgbotapi.types.update.MessageUpdate -import dev.inmo.tgbotapi.types.update.MyChatMemberUpdatedUpdate -import dev.inmo.tgbotapi.types.update.PollAnswerUpdate -import dev.inmo.tgbotapi.types.update.PollUpdate -import dev.inmo.tgbotapi.types.update.PreCheckoutQueryUpdate -import dev.inmo.tgbotapi.types.update.ShippingQueryUpdate -import dev.inmo.tgbotapi.types.update.abstracts.BaseEditMessageUpdate -import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate -import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate -import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate -import dev.inmo.tgbotapi.types.update.abstracts.UnknownUpdate -import dev.inmo.tgbotapi.types.message.ChatEvents.ChannelChatCreated -import dev.inmo.tgbotapi.types.message.ChatEvents.DeleteChatPhoto -import dev.inmo.tgbotapi.types.message.ChatEvents.GroupChatCreated -import dev.inmo.tgbotapi.types.message.ChatEvents.LeftChatMember -import dev.inmo.tgbotapi.types.message.ChatEvents.MessageAutoDeleteTimerChanged -import dev.inmo.tgbotapi.types.message.ChatEvents.NewChatMembers -import dev.inmo.tgbotapi.types.message.ChatEvents.NewChatPhoto -import dev.inmo.tgbotapi.types.message.ChatEvents.NewChatTitle -import dev.inmo.tgbotapi.types.message.ChatEvents.PinnedMessage -import dev.inmo.tgbotapi.types.message.ChatEvents.ProximityAlertTriggered -import dev.inmo.tgbotapi.types.message.ChatEvents.SupergroupChatCreated -import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.ChannelEvent -import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.CommonEvent -import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.GroupEvent -import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.SupergroupEvent -import dev.inmo.tgbotapi.types.message.ChatEvents.abstracts.VoiceChatEvent -import dev.inmo.tgbotapi.types.message.ChatEvents.voice.VoiceChatEnded -import dev.inmo.tgbotapi.types.message.ChatEvents.voice.VoiceChatParticipantsInvited -import dev.inmo.tgbotapi.types.message.ChatEvents.voice.VoiceChatStarted @PreviewFeature inline fun Chat.asBot(): Bot? = this as? Bot diff --git a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/LongPolling.kt b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/LongPolling.kt index 5e6057d576..b8496069e7 100644 --- a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/LongPolling.kt +++ b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/LongPolling.kt @@ -14,10 +14,8 @@ import dev.inmo.tgbotapi.types.update.abstracts.Update import dev.inmo.tgbotapi.updateshandlers.* import dev.inmo.tgbotapi.utils.* import io.ktor.client.features.HttpRequestTimeoutException -import io.ktor.utils.io.core.use import kotlinx.coroutines.* import kotlinx.coroutines.flow.* -import kotlin.coroutines.coroutineContext fun TelegramBot.startGettingOfUpdatesByLongPolling( timeoutSeconds: Seconds = 30, diff --git a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/MediaGroupsIncluder.kt b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/MediaGroupsIncluder.kt index bae30b47ce..c369e14c16 100644 --- a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/MediaGroupsIncluder.kt +++ b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/MediaGroupsIncluder.kt @@ -2,7 +2,6 @@ package dev.inmo.tgbotapi.extensions.utils.updates.retrieving import dev.inmo.tgbotapi.extensions.utils.updates.convertWithMediaGroupUpdates import dev.inmo.tgbotapi.types.message.abstracts.MediaGroupMessage -import dev.inmo.tgbotapi.types.message.content.abstracts.MediaGroupContent import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate import dev.inmo.tgbotapi.types.update.abstracts.Update import dev.inmo.tgbotapi.updateshandlers.UpdateReceiver From f9e3e57f24d3aa47c87e75da637d6f7f229134c8 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 11 Mar 2021 21:44:08 +0600 Subject: [PATCH 26/31] migrate 0.32.10 -> 0.33.0 --- CHANGELOG.md | 2 +- gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 355c8a83e2..25c14ecb71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # TelegramBotAPI changelog -## 0.32.10 +## 0.33.0 * `Common`: * `Version`: diff --git a/gradle.properties b/gradle.properties index fa30cc70d3..d338fd8535 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,6 +17,6 @@ micro_utils_version=0.4.29 javax_activation_version=1.1.1 library_group=dev.inmo -library_version=0.32.10 +library_version=0.33.0 github_release_plugin_version=2.2.12 From 0adee13cba127caf385ecd9aea70a43fb33cd9e6 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Thu, 11 Mar 2021 22:28:56 +0600 Subject: [PATCH 27/31] remove deprecations --- .../types/message/ChannelMessageImpl.kt | 2 - .../tgbotapi/types/message/GroupMessages.kt | 6 - .../types/message/PrivateMessageImpl.kt | 2 - .../types/message/abstracts/ChannelMessage.kt | 2 - .../types/message/abstracts/GroupMessages.kt | 8 -- .../types/message/abstracts/PrivateMessage.kt | 2 - .../types/message/abstracts/PublicMessage.kt | 2 - .../types/message/content/TextContent.kt | 33 ------ .../content/abstracts/ResendableContent.kt | 8 -- .../dev/inmo/tgbotapi/utils/StorageFile.kt | 2 - .../tgbotapi/extensions/utils/ClassCasts.kt | 44 -------- .../utils/ContentMessageConversations.kt | 10 -- .../extensions/utils/SlotMachineUtils.kt | 2 - .../utils/updates/retrieving/LongPolling.kt | 105 ------------------ 14 files changed, 228 deletions(-) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelMessageImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelMessageImpl.kt index bf173782c8..6a0552ac1e 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelMessageImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelMessageImpl.kt @@ -20,5 +20,3 @@ data class ChannelContentMessageImpl( override val senderBot: CommonBot?, override val authorSignature: AuthorSignature? ) : ChannelContentMessage -@Deprecated("Renamed due to ambiguity of naming", ReplaceWith("ChannelContentMessageImpl", "dev.inmo.tgbotapi.types.message.ChannelContentMessageImpl")) -typealias ChannelMessageImpl = ChannelContentMessageImpl diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/GroupMessages.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/GroupMessages.kt index 061eae0a99..e24405ba79 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/GroupMessages.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/GroupMessages.kt @@ -21,8 +21,6 @@ data class FromChannelGroupContentMessageImpl( override val senderBot: CommonBot?, override val authorSignature: AuthorSignature? ) : FromChannelGroupContentMessage -@Deprecated("Renamed due to ambiguity of naming", ReplaceWith("FromChannelGroupContentMessageImpl", "dev.inmo.tgbotapi.types.message.FromChannelGroupContentMessageImpl")) -typealias FromChannelGroupMessageImpl = FromChannelGroupContentMessageImpl data class AnonymousGroupContentMessageImpl( override val chat: GroupChat, @@ -36,8 +34,6 @@ data class AnonymousGroupContentMessageImpl( override val senderBot: CommonBot?, override val authorSignature: AuthorSignature? ) : AnonymousGroupContentMessage -@Deprecated("Renamed due to ambiguity of naming", ReplaceWith("AnonymousGroupContentMessageImpl", "dev.inmo.tgbotapi.types.message.AnonymousGroupContentMessageImpl")) -typealias AnonymousGroupMessageImpl = AnonymousGroupContentMessageImpl data class CommonGroupContentMessageImpl( override val chat: GroupChat, @@ -51,5 +47,3 @@ data class CommonGroupContentMessageImpl( override val content: T, override val senderBot: CommonBot? ) : CommonGroupContentMessage -@Deprecated("Renamed due to ambiguity of naming", ReplaceWith("CommonGroupContentMessageImpl", "dev.inmo.tgbotapi.types.message.CommonGroupContentMessageImpl")) -typealias CommonGroupMessageImpl = CommonGroupContentMessageImpl diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateMessageImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateMessageImpl.kt index 94cd9fea81..75a928c049 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateMessageImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateMessageImpl.kt @@ -22,5 +22,3 @@ data class PrivateContentMessageImpl( override val senderBot: CommonBot?, val paymentInfo: SuccessfulPaymentInfo? ) : PrivateContentMessage -@Deprecated("Renamed due to ambiguity of naming", ReplaceWith("PrivateContentMessageImpl", "dev.inmo.tgbotapi.types.message.PrivateContentMessageImpl")) -typealias PrivateMessageImpl = PrivateContentMessageImpl diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ChannelMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ChannelMessage.kt index b9bbbec871..a7ddbc6e66 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ChannelMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ChannelMessage.kt @@ -9,5 +9,3 @@ interface ChannelContentMessage : PossiblySentViaBotCommonMes override val senderChat: ChannelChat get() = chat } -@Deprecated("Renamed due to ambiguity of naming", ReplaceWith("ChannelContentMessage", "dev.inmo.tgbotapi.types.message.abstracts.ChannelContentMessage")) -typealias ChannelMessage = ChannelContentMessage diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/GroupMessages.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/GroupMessages.kt index 6167a0ca1d..d5a91e20c1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/GroupMessages.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/GroupMessages.kt @@ -7,8 +7,6 @@ import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent interface GroupContentMessage : PublicContentMessage { override val chat: GroupChat } -@Deprecated("Renamed due to ambiguity of naming", ReplaceWith("GroupContentMessage", "dev.inmo.tgbotapi.types.message.abstracts.GroupContentMessage")) -typealias GroupMessage = GroupContentMessage interface FromChannelGroupContentMessage : GroupContentMessage, SignedMessage, WithSenderChatMessage { @@ -16,16 +14,10 @@ interface FromChannelGroupContentMessage : GroupContentMessa override val senderChat: ChannelChat get() = channel } -@Deprecated("Renamed due to ambiguity of naming", ReplaceWith("FromChannelGroupContentMessage", "dev.inmo.tgbotapi.types.message.abstracts.FromChannelGroupContentMessage")) -typealias FromChannelGroupMessage = FromChannelGroupContentMessage interface AnonymousGroupContentMessage : GroupContentMessage, SignedMessage, WithSenderChatMessage { override val senderChat: GroupChat get() = chat } -@Deprecated("Renamed due to ambiguity of naming", ReplaceWith("AnonymousGroupContentMessage", "dev.inmo.tgbotapi.types.message.abstracts.AnonymousGroupContentMessage")) -typealias AnonymousGroupMessage = AnonymousGroupContentMessage interface CommonGroupContentMessage : GroupContentMessage, FromUserMessage -@Deprecated("Renamed due to ambiguity of naming", ReplaceWith("CommonGroupContentMessage", "dev.inmo.tgbotapi.types.message.abstracts.CommonGroupContentMessage")) -typealias CommonGroupMessage = CommonGroupContentMessage diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PrivateMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PrivateMessage.kt index 27a6c23614..767cef23ca 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PrivateMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PrivateMessage.kt @@ -4,5 +4,3 @@ import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent import dev.inmo.tgbotapi.types.message.content.abstracts.PossiblySentViaBotCommonMessage interface PrivateContentMessage : PossiblySentViaBotCommonMessage, FromUserMessage -@Deprecated("Renamed due to ambiguity of naming", ReplaceWith("PrivateContentMessage", "dev.inmo.tgbotapi.types.message.abstracts.PrivateContentMessage")) -typealias PrivateMessage = PrivateContentMessage diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PublicMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PublicMessage.kt index 4b409815c7..d965cc2db9 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PublicMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PublicMessage.kt @@ -7,5 +7,3 @@ import dev.inmo.tgbotapi.types.message.content.abstracts.PossiblySentViaBotCommo interface PublicContentMessage : PossiblySentViaBotCommonMessage { override val chat: PublicChat } -@Deprecated("Renamed due to ambiguity of naming", ReplaceWith("PublicContentMessage", "dev.inmo.tgbotapi.types.message.PublicContentMessage")) -typealias PublicMessage = PublicContentMessage diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/TextContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/TextContent.kt index 915c875a69..abc204e63e 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/TextContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/TextContent.kt @@ -30,37 +30,4 @@ data class TextContent( allowSendingWithoutReply, replyMarkup ) - - @Deprecated( - "Useless due to fact that createResend currently use textSource and that will guarantee correct sending of message", - ReplaceWith("createResend") - ) - override fun createResends( - chatId: ChatIdentifier, - disableNotification: Boolean, - replyToMessageId: MessageIdentifier?, - allowSendingWithoutReply: Boolean?, - replyMarkup: KeyboardMarkup? - ): List>> = listOf( - createResend( - chatId, - disableNotification, - replyToMessageId, - allowSendingWithoutReply, - replyMarkup - ) - ) - - @Deprecated( - "Useless due to fact that createResend currently use textSource and that will guarantee correct sending of message", - ReplaceWith("createResend") - ) - fun createResends( - chatId: ChatIdentifier, - disableNotification: Boolean, - replyToMessageId: MessageIdentifier?, - allowSendingWithoutReply: Boolean?, - replyMarkup: KeyboardMarkup?, - parseMode: ParseMode = defaultParseMode - ): List>> = createResends(chatId, disableNotification, replyToMessageId, allowSendingWithoutReply, replyMarkup) } diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/ResendableContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/ResendableContent.kt index f0b1993573..895c312eb9 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/ResendableContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/abstracts/ResendableContent.kt @@ -14,12 +14,4 @@ interface ResendableContent { allowSendingWithoutReply: Boolean? = null, replyMarkup: KeyboardMarkup? = null ): Request - - fun createResends( - chatId: ChatIdentifier, - disableNotification: Boolean = false, - replyToMessageId: MessageIdentifier? = null, - allowSendingWithoutReply: Boolean? = null, - replyMarkup: KeyboardMarkup? = null - ): List> = listOf(createResend(chatId, disableNotification, replyToMessageId, allowSendingWithoutReply, replyMarkup)) } \ No newline at end of file diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/StorageFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/StorageFile.kt index 167f6b80b8..6db07683ee 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/StorageFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/StorageFile.kt @@ -37,8 +37,6 @@ data class StorageFile( ) { val input: Input get() = inputSource() - @Deprecated("This method will be fully replaced with input property", ReplaceWith("input")) - fun asInput() = input } @Suppress("NOTHING_TO_INLINE") diff --git a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt index 6eef25aed0..999f165c15 100644 --- a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt +++ b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt @@ -398,40 +398,24 @@ inline fun SecureValue.asSecureValueWithTranslations(): SecureValueWithTranslati inline fun SecureValue.requireSecureValueWithTranslations(): SecureValueWithTranslations = this as SecureValueWithTranslations @PreviewFeature inline fun Message.asAnonymousGroupContentMessageImpl(): AnonymousGroupContentMessageImpl? = this as? AnonymousGroupContentMessageImpl -@Deprecated("Renamed", ReplaceWith("asAnonymousGroupContentMessageImpl", "dev.inmo.tgbotapi.extensions.utils.asAnonymousGroupContentMessageImpl")) -inline fun Message.asAnonymousGroupMessageImpl() = asAnonymousGroupContentMessageImpl() @PreviewFeature inline fun Message.requireAnonymousGroupContentMessageImpl(): AnonymousGroupContentMessageImpl = this as AnonymousGroupContentMessageImpl -@Deprecated("Renamed", ReplaceWith("requireAnonymousGroupContentMessageImpl", "dev.inmo.tgbotapi.extensions.utils.requireAnonymousGroupContentMessageImpl")) -inline fun Message.requireAnonymousGroupMessageImpl() = requireAnonymousGroupContentMessageImpl() @PreviewFeature inline fun Message.asChannelContentMessageImpl(): ChannelContentMessageImpl? = this as? ChannelContentMessageImpl -@Deprecated("Renamed", ReplaceWith("asChannelContentMessageImpl", "dev.inmo.tgbotapi.extensions.utils.asChannelContentMessageImpl")) -inline fun Message.asChannelMessageImpl() = asChannelContentMessageImpl() @PreviewFeature inline fun Message.requireChannelContentMessageImpl(): ChannelContentMessageImpl = this as ChannelContentMessageImpl -@Deprecated("Renamed", ReplaceWith("requireChannelContentMessageImpl", "dev.inmo.tgbotapi.extensions.utils.requireChannelContentMessageImpl")) -inline fun Message.requireChannelMessageImpl() = requireChannelContentMessageImpl() @PreviewFeature inline fun Message.asFromChannelGroupContentMessageImpl(): FromChannelGroupContentMessageImpl? = this as? FromChannelGroupContentMessageImpl -@Deprecated("Renamed", ReplaceWith("asFromChannelGroupContentMessageImpl", "dev.inmo.tgbotapi.extensions.utils.asFromChannelGroupContentMessageImpl")) -inline fun Message.asFromChannelGroupMessageImpl() = asFromChannelGroupContentMessageImpl() @PreviewFeature inline fun Message.requireFromChannelGroupContentMessageImpl(): FromChannelGroupContentMessageImpl = this as FromChannelGroupContentMessageImpl -@Deprecated("Renamed", ReplaceWith("requireFromChannelGroupContentMessageImpl", "dev.inmo.tgbotapi.extensions.utils.requireFromChannelGroupContentMessageImpl")) -inline fun Message.requireFromChannelGroupMessageImpl() = requireFromChannelGroupContentMessageImpl() @PreviewFeature inline fun Message.asPassportMessage(): PassportMessage? = this as? PassportMessage @PreviewFeature inline fun Message.requirePassportMessage(): PassportMessage = this as PassportMessage @PreviewFeature inline fun Message.asPrivateContentMessageImpl(): PrivateContentMessageImpl? = this as? PrivateContentMessageImpl -@Deprecated("Renamed", ReplaceWith("asPrivateContentMessageImpl", "dev.inmo.tgbotapi.extensions.utils.asPrivateContentMessageImpl")) -inline fun Message.asPrivateMessageImpl() = asPrivateContentMessageImpl() @PreviewFeature inline fun Message.requirePrivateContentMessageImpl(): PrivateContentMessageImpl = this as PrivateContentMessageImpl -@Deprecated("Renamed", ReplaceWith("requirePrivateContentMessageImpl", "dev.inmo.tgbotapi.extensions.utils.requirePrivateContentMessageImpl")) -inline fun Message.requirePrivateMessageImpl() = requirePrivateContentMessageImpl() @PreviewFeature inline fun Message.asChannelEventMessage(): ChannelEventMessage? = this as? ChannelEventMessage @PreviewFeature @@ -454,32 +438,20 @@ inline fun Message.asCommonSupergroupEventMessage(): CommonSupergroupEventMessag inline fun Message.requireCommonSupergroupEventMessage(): CommonSupergroupEventMessage = this as CommonSupergroupEventMessage @PreviewFeature inline fun Message.asAnonymousGroupContentMessage(): AnonymousGroupContentMessage? = this as? AnonymousGroupContentMessage -@Deprecated("Renamed", ReplaceWith("asAnonymousGroupContentMessage", "dev.inmo.tgbotapi.extensions.utils.asAnonymousGroupContentMessage")) -inline fun Message.asAnonymousGroupMessage() = asAnonymousGroupContentMessage() @PreviewFeature inline fun Message.requireAnonymousGroupContentMessage(): AnonymousGroupContentMessage = this as AnonymousGroupContentMessage -@Deprecated("Renamed", ReplaceWith("requireAnonymousGroupContentMessage", "dev.inmo.tgbotapi.extensions.utils.requireAnonymousGroupContentMessage")) -inline fun Message.requireAnonymousGroupMessage() = requireAnonymousGroupContentMessage() @PreviewFeature inline fun Message.asChannelContentMessage(): ChannelContentMessageImpl? = this as? ChannelContentMessageImpl -@Deprecated("Renamed", ReplaceWith("asChannelContentMessage", "dev.inmo.tgbotapi.extensions.utils.asChannelContentMessage")) -inline fun Message.asChannelMessage() = asChannelContentMessage() @PreviewFeature inline fun Message.requireChannelContentMessage(): ChannelContentMessageImpl = this as ChannelContentMessageImpl -@Deprecated("Renamed", ReplaceWith("requireChannelContentMessage", "dev.inmo.tgbotapi.extensions.utils.requireChannelContentMessage")) -inline fun Message.requireChannelMessage() = requireChannelContentMessage() @PreviewFeature inline fun Message.asChatEventMessage(): ChatEventMessage? = this as? ChatEventMessage @PreviewFeature inline fun Message.requireChatEventMessage(): ChatEventMessage = this as ChatEventMessage @PreviewFeature inline fun Message.asCommonGroupContentMessage(): CommonGroupContentMessage? = this as? CommonGroupContentMessage -@Deprecated("Renamed", ReplaceWith("asCommonGroupContentMessage", "dev.inmo.tgbotapi.extensions.utils.asCommonGroupContentMessage")) -inline fun Message.asCommonGroupMessage() = asCommonGroupContentMessage() @PreviewFeature inline fun Message.requireCommonGroupContentMessage(): CommonGroupContentMessage = this as CommonGroupContentMessage -@Deprecated("Renamed", ReplaceWith("requireCommonGroupContentMessage", "dev.inmo.tgbotapi.extensions.utils.requireCommonGroupContentMessage")) -inline fun Message.requireCommonGroupMessage() = requireCommonGroupContentMessage() @PreviewFeature inline fun Message.asCommonMessage(): CommonMessage? = this as? CommonMessage @PreviewFeature @@ -490,24 +462,16 @@ inline fun Message.asContentMessage(): ContentMessage? = this as inline fun Message.requireContentMessage(): ContentMessage = this as ContentMessage @PreviewFeature inline fun Message.asFromChannelGroupContentMessage(): FromChannelGroupContentMessage? = this as? FromChannelGroupContentMessage -@Deprecated("Renamed", ReplaceWith("asFromChannelGroupContentMessage", "dev.inmo.tgbotapi.extensions.utils.asFromChannelGroupContentMessage")) -inline fun Message.asFromChannelGroupMessage() = asFromChannelGroupContentMessage() @PreviewFeature inline fun Message.requireFromChannelGroupContentMessage(): FromChannelGroupContentMessage = this as FromChannelGroupContentMessage -@Deprecated("Renamed", ReplaceWith("requireFromChannelGroupContentMessage", "dev.inmo.tgbotapi.extensions.utils.requireFromChannelGroupContentMessage")) -inline fun Message.requireFromChannelGroupMessage() = requireFromChannelGroupContentMessage() @PreviewFeature inline fun Message.asGroupEventMessage(): GroupEventMessage? = this as? GroupEventMessage @PreviewFeature inline fun Message.requireGroupEventMessage(): GroupEventMessage = this as GroupEventMessage @PreviewFeature inline fun Message.asGroupContentMessage(): GroupContentMessage? = this as? GroupContentMessage -@Deprecated("Renamed", ReplaceWith("asGroupContentMessage", "dev.inmo.tgbotapi.extensions.utils.asGroupContentMessage")) -inline fun Message.asGroupMessage() = asGroupContentMessage() @PreviewFeature inline fun Message.requireGroupContentMessage(): GroupContentMessage = this as GroupContentMessage -@Deprecated("Renamed", ReplaceWith("requireGroupContentMessage", "dev.inmo.tgbotapi.extensions.utils.requireGroupContentMessage")) -inline fun Message.requireGroupMessage() = requireGroupContentMessage() @PreviewFeature inline fun Message.asMediaGroupMessage(): MediaGroupMessage? = this as? MediaGroupMessage @PreviewFeature @@ -526,20 +490,12 @@ inline fun Message.asPossiblyPaymentMessage(): PossiblyPaymentMessage? = this as inline fun Message.requirePossiblyPaymentMessage(): PossiblyPaymentMessage = this as PossiblyPaymentMessage @PreviewFeature inline fun Message.asPrivateContentMessage(): PrivateContentMessage? = this as? PrivateContentMessage -@Deprecated("Renamed", ReplaceWith("asPrivateContentMessage", "dev.inmo.tgbotapi.extensions.utils.asPrivateContentMessage")) -inline fun Message.asPrivateMessage() = asPrivateContentMessage() @PreviewFeature inline fun Message.requirePrivateContentMessage(): PrivateContentMessage = this as PrivateContentMessage -@Deprecated("Renamed", ReplaceWith("requirePrivateContentMessage", "dev.inmo.tgbotapi.extensions.utils.requirePrivateContentMessage")) -inline fun Message.requirePrivateMessage() = requirePrivateContentMessage() @PreviewFeature inline fun Message.asPublicContentMessage(): PublicContentMessage? = this as? PublicContentMessage -@Deprecated("Renamed", ReplaceWith("asPublicContentMessage", "dev.inmo.tgbotapi.extensions.utils.asPublicContentMessage")) -inline fun Message.asPublicMessage() = asPublicContentMessage() @PreviewFeature inline fun Message.requirePublicContentMessage(): PublicContentMessage = this as PublicContentMessage -@Deprecated("Renamed", ReplaceWith("requirePublicContentMessage", "dev.inmo.tgbotapi.extensions.utils.requirePublicContentMessage")) -inline fun Message.requirePublicMessage() = requirePublicContentMessage() @PreviewFeature inline fun Message.asSignedMessage(): SignedMessage? = this as? SignedMessage @PreviewFeature diff --git a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ContentMessageConversations.kt b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ContentMessageConversations.kt index bcdff2ce59..37841333c7 100644 --- a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ContentMessageConversations.kt +++ b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ContentMessageConversations.kt @@ -13,16 +13,6 @@ private inline fun Flow>.withCont it.withContent() } -@Deprecated("This method will be removed in next major update") -fun Flow>.withContentType(contentType: KClass) = mapNotNull { - if (contentType.isInstance(it.content)) { - @Suppress("UNCHECKED_CAST") - it as ContentMessage - } else { - null - } -} - fun Flow>.onlyAnimationContentMessages() = withContentType() fun Flow>.onlyAudioContentMessages() = withContentType() fun Flow>.onlyContactContentMessages() = withContentType() diff --git a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/SlotMachineUtils.kt b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/SlotMachineUtils.kt index 82fcdb7e77..9fae120809 100644 --- a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/SlotMachineUtils.kt +++ b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/SlotMachineUtils.kt @@ -16,8 +16,6 @@ enum class SlotMachineReelImage(val text: String, val number: Int) { LEMON("\uD83C\uDF4B", 2), SEVEN("7", 3) } -@Deprecated("Renamed", ReplaceWith("SlotMachineReelImage", "dev.inmo.tgbotapi.extensions.utils.SlotMachineReelImage")) -typealias SlotMachineReelImages = SlotMachineReelImage /** * @return First [SlotMachineReelImage] with [SlotMachineReelImage.number] equal to receiver OR [SlotMachineReelImage.SEVEN] diff --git a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/LongPolling.kt b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/LongPolling.kt index b8496069e7..6cb849335e 100644 --- a/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/LongPolling.kt +++ b/tgbotapi.extensions.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/LongPolling.kt @@ -158,26 +158,6 @@ fun TelegramBot.longPolling( flowUpdatesPreset: FlowsUpdatesFilter.() -> Unit ): Job = longPolling(FlowsUpdatesFilter(flowsUpdatesFilterUpdatesKeeperCount).apply(flowUpdatesPreset), timeoutSeconds, scope, exceptionsHandler) -/** - * This method will create a new one [FlowsUpdatesFilter]. This method could be unsafe due to the fact that it will start - * getting updates IMMEDIATELY. That means that your bot will be able to skip some of them until you will call - * [kotlinx.coroutines.flow.Flow.collect] on one of [FlowsUpdatesFilter] flows. To avoid it, you can pass - * [flowUpdatesPreset] lambda - it will be called BEFORE starting updates getting - */ -@FlowPreview -@Deprecated("Will be removed soon", ReplaceWith("longPolling", "dev.inmo.tgbotapi.extensions.utils.updates.retrieving.longPolling")) -@Suppress("unused") -fun RequestsExecutor.startGettingFlowsUpdatesByLongPolling( - timeoutSeconds: Seconds = 30, - scope: CoroutineScope = CoroutineScope(Dispatchers.Default), - exceptionsHandler: ExceptionHandler? = null, - flowsUpdatesFilterUpdatesKeeperCount: Int = 100, - flowUpdatesPreset: FlowsUpdatesFilter.() -> Unit = {} -): FlowsUpdatesFilter = FlowsUpdatesFilter(flowsUpdatesFilterUpdatesKeeperCount).apply { - flowUpdatesPreset() - startGettingOfUpdatesByLongPolling(timeoutSeconds, scope, exceptionsHandler, allowedUpdates, asUpdateReceiver) -} - fun RequestsExecutor.startGettingOfUpdatesByLongPolling( updatesFilter: UpdatesFilter, timeoutSeconds: Seconds = 30, @@ -190,88 +170,3 @@ fun RequestsExecutor.startGettingOfUpdatesByLongPolling( updatesFilter.allowedUpdates, updatesFilter.asUpdateReceiver ) - -@Deprecated("Will be removed soon", ReplaceWith("longPolling", "dev.inmo.tgbotapi.extensions.utils.updates.retrieving.longPolling")) -fun RequestsExecutor.startGettingOfUpdatesByLongPolling( - messageCallback: UpdateReceiver? = null, - messageMediaGroupCallback: UpdateReceiver? = null, - editedMessageCallback: UpdateReceiver? = null, - editedMessageMediaGroupCallback: UpdateReceiver? = null, - channelPostCallback: UpdateReceiver? = null, - channelPostMediaGroupCallback: UpdateReceiver? = null, - editedChannelPostCallback: UpdateReceiver? = null, - editedChannelPostMediaGroupCallback: UpdateReceiver? = null, - chosenInlineResultCallback: UpdateReceiver? = null, - inlineQueryCallback: UpdateReceiver? = null, - callbackQueryCallback: UpdateReceiver? = null, - shippingQueryCallback: UpdateReceiver? = null, - preCheckoutQueryCallback: UpdateReceiver? = null, - pollCallback: UpdateReceiver? = null, - pollAnswerCallback: UpdateReceiver? = null, - timeoutSeconds: Seconds = 30, - exceptionsHandler: ExceptionHandler? = null, - scope: CoroutineScope = CoroutineScope(Dispatchers.Default) -): Job { - return startGettingOfUpdatesByLongPolling( - SimpleUpdatesFilter( - messageCallback, - messageMediaGroupCallback, - editedMessageCallback, - editedMessageMediaGroupCallback, - channelPostCallback, - channelPostMediaGroupCallback, - editedChannelPostCallback, - editedChannelPostMediaGroupCallback, - chosenInlineResultCallback, - inlineQueryCallback, - callbackQueryCallback, - shippingQueryCallback, - preCheckoutQueryCallback, - pollCallback, - pollAnswerCallback - ), - timeoutSeconds, - exceptionsHandler, - scope - ) -} - -@Deprecated("Will be removed soon", ReplaceWith("longPolling", "dev.inmo.tgbotapi.extensions.utils.updates.retrieving.longPolling")) -@Suppress("unused") -fun RequestsExecutor.startGettingOfUpdatesByLongPolling( - messageCallback: UpdateReceiver? = null, - mediaGroupCallback: UpdateReceiver? = null, - editedMessageCallback: UpdateReceiver? = null, - channelPostCallback: UpdateReceiver? = null, - editedChannelPostCallback: UpdateReceiver? = null, - chosenInlineResultCallback: UpdateReceiver? = null, - inlineQueryCallback: UpdateReceiver? = null, - callbackQueryCallback: UpdateReceiver? = null, - shippingQueryCallback: UpdateReceiver? = null, - preCheckoutQueryCallback: UpdateReceiver? = null, - pollCallback: UpdateReceiver? = null, - pollAnswerCallback: UpdateReceiver? = null, - timeoutSeconds: Seconds = 30, - exceptionsHandler: ExceptionHandler? = null, - scope: CoroutineScope = CoroutineScope(Dispatchers.Default) -): Job = startGettingOfUpdatesByLongPolling( - messageCallback = messageCallback, - messageMediaGroupCallback = mediaGroupCallback, - editedMessageCallback = editedMessageCallback, - editedMessageMediaGroupCallback = mediaGroupCallback, - channelPostCallback = channelPostCallback, - channelPostMediaGroupCallback = mediaGroupCallback, - editedChannelPostCallback = editedChannelPostCallback, - editedChannelPostMediaGroupCallback = mediaGroupCallback, - chosenInlineResultCallback = chosenInlineResultCallback, - inlineQueryCallback = inlineQueryCallback, - callbackQueryCallback = callbackQueryCallback, - shippingQueryCallback = shippingQueryCallback, - preCheckoutQueryCallback = preCheckoutQueryCallback, - pollCallback = pollCallback, - pollAnswerCallback = pollAnswerCallback, - timeoutSeconds = timeoutSeconds, - exceptionsHandler = exceptionsHandler, - scope = scope -) - From 72cf38d3bb05ee3f1d78f911b527174ade65bbad Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 12 Mar 2021 14:36:10 +0600 Subject: [PATCH 28/31] fill Behaviour Builder for ChatMemberUpdated --- .../expectations/WaitChatMemberUpdated.kt | 65 +++++++++++++++++++ .../ChatMemberUpdatedTriggers.kt | 61 +++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatMemberUpdated.kt create mode 100644 tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatMemberUpdatedTriggers.kt diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatMemberUpdated.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatMemberUpdated.kt new file mode 100644 index 0000000000..27827be3e1 --- /dev/null +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatMemberUpdated.kt @@ -0,0 +1,65 @@ +package dev.inmo.tgbotapi.extensions.behaviour_builder.expectations + +import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContext +import dev.inmo.tgbotapi.extensions.utils.asCallbackQueryUpdate +import dev.inmo.tgbotapi.requests.abstracts.Request +import dev.inmo.tgbotapi.types.CallbackQuery.CallbackQuery +import dev.inmo.tgbotapi.types.CallbackQuery.DataCallbackQuery +import dev.inmo.tgbotapi.types.ChatMemberUpdated +import dev.inmo.tgbotapi.types.update.CommonChatMemberUpdatedUpdate +import dev.inmo.tgbotapi.types.update.MyChatMemberUpdatedUpdate +import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate +import kotlinx.coroutines.flow.toList + +typealias ChatMemberUpdatedMapper = T.() -> T? + +private suspend inline fun BehaviourContext.waitChatMemberUpdated( + count: Int = 1, + initRequest: Request<*>? = null, + noinline errorFactory: NullableRequestBuilder<*> = { null }, + noinline mapper: ChatMemberUpdatedMapper +): List = expectFlow( + initRequest, + count, + errorFactory +) { + (it as? T) ?.data.let(::listOfNotNull) +}.toList().toList() + +private suspend inline fun BehaviourContext.waitChatMemberUpdated( + count: Int = 1, + initRequest: Request<*>? = null, + noinline errorFactory: NullableRequestBuilder<*> = { null }, + noinline filter: ChatMemberUpdatedMapper? = null +) : List = waitChatMemberUpdated( + count, + initRequest, + errorFactory +) { + if (filter == null) { + this + } else { + filter(this) + } +} + +suspend fun BehaviourContext.waitChatMemberUpdated( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: ChatMemberUpdatedMapper? = null +) = waitChatMemberUpdated(count, initRequest, errorFactory, filter) + +suspend fun BehaviourContext.waitCommonChatMemberUpdated( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: ChatMemberUpdatedMapper? = null +) = waitChatMemberUpdated(count, initRequest, errorFactory, filter) + +suspend fun BehaviourContext.waitMyChatMemberUpdated( + initRequest: Request<*>? = null, + errorFactory: NullableRequestBuilder<*> = { null }, + count: Int = 1, + filter: ChatMemberUpdatedMapper? = null +) = waitChatMemberUpdated(count, initRequest, errorFactory, filter) diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatMemberUpdatedTriggers.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatMemberUpdatedTriggers.kt new file mode 100644 index 0000000000..180702731e --- /dev/null +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatMemberUpdatedTriggers.kt @@ -0,0 +1,61 @@ +package dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling + +import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions +import dev.inmo.tgbotapi.extensions.behaviour_builder.* +import dev.inmo.tgbotapi.extensions.behaviour_builder.expectations.expectFlow +import dev.inmo.tgbotapi.extensions.utils.asChatMemberUpdatedUpdate +import dev.inmo.tgbotapi.extensions.utils.extensions.sourceChat +import dev.inmo.tgbotapi.types.ChatMemberUpdated +import dev.inmo.tgbotapi.types.update.CommonChatMemberUpdatedUpdate +import dev.inmo.tgbotapi.types.update.MyChatMemberUpdatedUpdate +import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate + +internal suspend inline fun BehaviourContext.onChatMemberUpdated( + includeFilterByChatInBehaviourSubContext: Boolean = true, + noinline additionalFilter: (suspend (ChatMemberUpdated) -> Boolean)? = null, + noinline scenarioReceiver: BehaviourContextAndTypeReceiver +) = flowsUpdatesFilter.expectFlow(bot) { + (it as? U) ?.data ?.let { chatMemberUpdated -> + if (additionalFilter == null || additionalFilter(chatMemberUpdated)) chatMemberUpdated else null + }.let(::listOfNotNull) +}.subscribeSafelyWithoutExceptions(scope) { triggerChatMemberUpdated -> + doInSubContextWithUpdatesFilter( + updatesFilter = if (includeFilterByChatInBehaviourSubContext) { + { it.sourceChat() ?.id ?.chatId == triggerChatMemberUpdated.chat.id.chatId } + } else { + null + } + ) { + scenarioReceiver(triggerChatMemberUpdated) + } +} + +suspend fun BehaviourContext.onChatMemberUpdated( + includeFilterByChatInBehaviourSubContext: Boolean = true, + additionalFilter: (suspend (ChatMemberUpdated) -> Boolean)? = null, + scenarioReceiver: BehaviourContextAndTypeReceiver +) = onChatMemberUpdated( + includeFilterByChatInBehaviourSubContext, + additionalFilter, + scenarioReceiver +) + +suspend fun BehaviourContext.onCommonChatMemberUpdated( + includeFilterByChatInBehaviourSubContext: Boolean = true, + additionalFilter: (suspend (ChatMemberUpdated) -> Boolean)? = null, + scenarioReceiver: BehaviourContextAndTypeReceiver +) = onChatMemberUpdated( + includeFilterByChatInBehaviourSubContext, + additionalFilter, + scenarioReceiver +) + +suspend fun BehaviourContext.onMyChatMemberUpdated( + includeFilterByChatInBehaviourSubContext: Boolean = true, + additionalFilter: (suspend (ChatMemberUpdated) -> Boolean)? = null, + scenarioReceiver: BehaviourContextAndTypeReceiver +) = onChatMemberUpdated( + includeFilterByChatInBehaviourSubContext, + additionalFilter, + scenarioReceiver +) From 7bb272f2fa35f7a157355f3f60bd159021a346f9 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 12 Mar 2021 14:39:27 +0600 Subject: [PATCH 29/31] update compatibility note --- tgbotapi.core/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tgbotapi.core/README.md b/tgbotapi.core/README.md index 0b8ed3f0d4..344aeace98 100644 --- a/tgbotapi.core/README.md +++ b/tgbotapi.core/README.md @@ -10,7 +10,7 @@ moments are describing by official [Telegram Bot API](https://core.telegram.org/ ## Compatibility -This version compatible with [4th of November 2020 update of TelegramBotAPI (version 5.0)](https://core.telegram.org/bots/api#november-4-2020). +This version compatible with [9th of March 2021 update of TelegramBotAPI (version 5.1)](https://core.telegram.org/bots/api#march-9-2021). ## How to implement library? From a4bae5133a9cb8a8f07a103e26f192b1bad332a6 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 12 Mar 2021 14:58:13 +0600 Subject: [PATCH 30/31] fill changelog --- CHANGELOG.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25c14ecb71..4d5a5d1710 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,13 +2,37 @@ ## 0.33.0 +**UPDATE UP TO Telegram Bot API 5.1** +_**ALL DEPRECATIONS WERE REMOVED**_ + * `Common`: * `Version`: * `MicroUtils`: `0.4.28` -> `0.4.29` * `Core`: * `AdministratorChatMemberSerializer` and `ChatMemberSerializer` has changed their visibility: they are public for now + * Add `ChatInviteLinkRequest` with subrequests like `KnownChatInviteLinkRequest` + * Add `CreateChatInviteLink`/`EditChatInviteLink`/`RevokeChatInviteLink` requests + * Update `KickChatMember` to include `revokeMessages` flag + * Update `PromoteChatMember` to include `canManageVoiceChats` and `canManageChat` flags + * Add `ChatInviteLink` object + * Add `PrimaryInviteLink` for `ChatInviteLink` with `isPrimary == true` + * Add `CommonInviteLink` for `ChatInviteLink` with `isPrimary == false` + * `AdministratorChatMemberSerializer` has been set as public for several versions + * `ChatMemberSerializer` has been set as public for several versions + * Add `ChatMemberUpdated` + * Add `MessageAutoDeleteTimerChanged` + * Add `VoiceChatEvent` + * Add `VoiceChatEnded` + * Add `VoiceChatParticipantsInvited` + * Add `VoiceChatStarted` + * Add `ChatMemberUpdatedUpdate` + * Add `CommonChatMemberUpdatedUpdate` + * Add `MyChatMemberUpdatedUpdate` +* `API`: + * All API extensions has been updated * `Behaviour Builder`: * Now content triggers and expectators will wait for channel posts too + * New waiters and triggers for `ChatMemberUpdated` and its variations ## 0.32.9 From 9fc07f2ff30149ecbbd5d1a1763693469afa8af8 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 12 Mar 2021 15:03:11 +0600 Subject: [PATCH 31/31] fix build --- .../expectations/WaitChatMemberUpdated.kt | 8 ++++---- .../triggers_handling/ChatMemberUpdatedTriggers.kt | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatMemberUpdated.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatMemberUpdated.kt index 27827be3e1..8e69298190 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatMemberUpdated.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/expectations/WaitChatMemberUpdated.kt @@ -26,7 +26,7 @@ private suspend inline fun BehaviourContex (it as? T) ?.data.let(::listOfNotNull) }.toList().toList() -private suspend inline fun BehaviourContext.waitChatMemberUpdated( +private suspend inline fun BehaviourContext.waitChatMemberUpdatedWithFilter( count: Int = 1, initRequest: Request<*>? = null, noinline errorFactory: NullableRequestBuilder<*> = { null }, @@ -48,18 +48,18 @@ suspend fun BehaviourContext.waitChatMemberUpdated( errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: ChatMemberUpdatedMapper? = null -) = waitChatMemberUpdated(count, initRequest, errorFactory, filter) +) = waitChatMemberUpdatedWithFilter(count, initRequest, errorFactory, filter) suspend fun BehaviourContext.waitCommonChatMemberUpdated( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: ChatMemberUpdatedMapper? = null -) = waitChatMemberUpdated(count, initRequest, errorFactory, filter) +) = waitChatMemberUpdatedWithFilter(count, initRequest, errorFactory, filter) suspend fun BehaviourContext.waitMyChatMemberUpdated( initRequest: Request<*>? = null, errorFactory: NullableRequestBuilder<*> = { null }, count: Int = 1, filter: ChatMemberUpdatedMapper? = null -) = waitChatMemberUpdated(count, initRequest, errorFactory, filter) +) = waitChatMemberUpdatedWithFilter(count, initRequest, errorFactory, filter) diff --git a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatMemberUpdatedTriggers.kt b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatMemberUpdatedTriggers.kt index 180702731e..1156af2648 100644 --- a/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatMemberUpdatedTriggers.kt +++ b/tgbotapi.extensions.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/triggers_handling/ChatMemberUpdatedTriggers.kt @@ -10,7 +10,7 @@ import dev.inmo.tgbotapi.types.update.CommonChatMemberUpdatedUpdate import dev.inmo.tgbotapi.types.update.MyChatMemberUpdatedUpdate import dev.inmo.tgbotapi.types.update.abstracts.ChatMemberUpdatedUpdate -internal suspend inline fun BehaviourContext.onChatMemberUpdated( +internal suspend inline fun BehaviourContext.onChatMemberUpdatedInternal( includeFilterByChatInBehaviourSubContext: Boolean = true, noinline additionalFilter: (suspend (ChatMemberUpdated) -> Boolean)? = null, noinline scenarioReceiver: BehaviourContextAndTypeReceiver @@ -34,7 +34,7 @@ suspend fun BehaviourContext.onChatMemberUpdated( includeFilterByChatInBehaviourSubContext: Boolean = true, additionalFilter: (suspend (ChatMemberUpdated) -> Boolean)? = null, scenarioReceiver: BehaviourContextAndTypeReceiver -) = onChatMemberUpdated( +) = onChatMemberUpdatedInternal( includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver @@ -44,7 +44,7 @@ suspend fun BehaviourContext.onCommonChatMemberUpdated( includeFilterByChatInBehaviourSubContext: Boolean = true, additionalFilter: (suspend (ChatMemberUpdated) -> Boolean)? = null, scenarioReceiver: BehaviourContextAndTypeReceiver -) = onChatMemberUpdated( +) = onChatMemberUpdatedInternal( includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver @@ -54,7 +54,7 @@ suspend fun BehaviourContext.onMyChatMemberUpdated( includeFilterByChatInBehaviourSubContext: Boolean = true, additionalFilter: (suspend (ChatMemberUpdated) -> Boolean)? = null, scenarioReceiver: BehaviourContextAndTypeReceiver -) = onChatMemberUpdated( +) = onChatMemberUpdatedInternal( includeFilterByChatInBehaviourSubContext, additionalFilter, scenarioReceiver