From fb8cfed382757e40abfeaa44c7c7e900babdb813 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Mon, 20 Dec 2021 14:07:45 +0600 Subject: [PATCH] hotfix --- CHANGELOG.md | 27 ++++++ gradle.properties | 2 +- ...geImpl.kt => ChannelContentMessageImpl.kt} | 4 +- .../tgbotapi/types/message/GroupMessages.kt | 22 ++++- .../inmo/tgbotapi/types/message/RawMessage.kt | 90 +++++++++---------- .../UnconnectedChannelContentMessageImpl.kt | 39 -------- .../abstracts/ChannelContentMessage.kt | 2 +- .../ConnectedChannelContentMessage.kt | 5 -- .../types/message/abstracts/GroupMessages.kt | 3 + .../UnconnectedChannelContentMessage.kt | 5 -- .../tgbotapi/extensions/utils/ClassCasts.kt | 30 +++---- 11 files changed, 114 insertions(+), 115 deletions(-) rename tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/{ConnectedChannelContentMessageImpl.kt => ChannelContentMessageImpl.kt} (92%) delete mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/UnconnectedChannelContentMessageImpl.kt delete mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ConnectedChannelContentMessage.kt delete mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/UnconnectedChannelContentMessage.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 266b1ce541..94877dd28a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,32 @@ # TelegramBotAPI changelog +## 0.37.3 Hotfix of 0.37.3 + +* `Core`: + * Fixes in hierarchy (and creating) of messages from channels + +--- + +`0.37.2` changelog: + +* `Common`: + * `Version`: + * `MicroUtils`: `0.8.2` -> `0.8.7` +* `Core`: + * New request type: `ChatSenderRequest` + * New request `BanChatSenderChat` + * New request `UnbanChatSenderChat` + * `ExtendedPrivateChat` got new properties: `hasPrivateForwards` and `allowCreateUserIdLink` (same as `hasPrivateForwards`) + * All `ContentMessage` got field `forwardable` (old constructors marked as `Deprecated`) + * `FromChannelGroupContentMessage` has been divided for two interfaces (and corresponding classes): + * `ConnectedFromChannelGroupContentMessage` (and `ConnectedFromChannelGroupContentMessageImpl`) for connected to the group channels messages + * `UnconnectedFromChannelGroupContentMessage` (and `UnconnectedFromChannelGroupContentMessageImpl`) for unconnected channels +* `API`: + * New extensions `TelegramBot#banChatSenderChat` + * New extensions `TelegramBot#unbanChatSenderChat` +* `Utils`: + * Fix of `EntitiesBuilder#linkln` + ## 0.37.2 Telegram Bot API 5.5 * `Common`: diff --git a/gradle.properties b/gradle.properties index 6311dfe804..4fd64ecc26 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,6 +17,6 @@ micro_utils_version=0.8.7 javax_activation_version=1.1.1 library_group=dev.inmo -library_version=0.37.2 +library_version=0.37.3 github_release_plugin_version=2.2.12 diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ConnectedChannelContentMessageImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelContentMessageImpl.kt similarity index 92% rename from tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ConnectedChannelContentMessageImpl.kt rename to tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelContentMessageImpl.kt index fcd348bbbe..64f01f45bd 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ConnectedChannelContentMessageImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelContentMessageImpl.kt @@ -7,7 +7,7 @@ import dev.inmo.tgbotapi.types.chat.abstracts.ChannelChat import dev.inmo.tgbotapi.types.message.abstracts.* import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent -data class ConnectedChannelContentMessageImpl( +data class ChannelContentMessageImpl( override val messageId: MessageIdentifier, override val chat: ChannelChat, override val content: T, @@ -19,7 +19,7 @@ data class ConnectedChannelContentMessageImpl( override val replyMarkup: InlineKeyboardMarkup?, override val senderBot: CommonBot?, override val authorSignature: AuthorSignature? -) : ConnectedChannelContentMessage { +) : ChannelContentMessage { @Deprecated("Use the constructor with forwardable field") constructor( messageId: MessageIdentifier, 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 296f64fae2..15439bb763 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 @@ -8,7 +8,7 @@ import dev.inmo.tgbotapi.types.chat.abstracts.GroupChat import dev.inmo.tgbotapi.types.message.abstracts.* import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent -data class FromChannelGroupContentMessageImpl( +data class ConnectedFromChannelGroupContentMessageImpl( override val chat: GroupChat, override val channel: ChannelChat, override val messageId: MessageIdentifier, @@ -21,7 +21,7 @@ data class FromChannelGroupContentMessageImpl( override val content: T, override val senderBot: CommonBot?, override val authorSignature: AuthorSignature? -) : FromChannelGroupContentMessage { +) : ConnectedFromChannelGroupContentMessage { @Deprecated("Use the constructor with forwardable field") constructor( chat: GroupChat, @@ -38,6 +38,24 @@ data class FromChannelGroupContentMessageImpl( ) : this(chat, channel, messageId, date, forwardInfo, editDate, true, replyTo, replyMarkup, content, senderBot, authorSignature) } +@Deprecated("Renamed", ReplaceWith("ConnectedFromChannelGroupContentMessageImpl", "dev.inmo.tgbotapi.types.message.ConnectedFromChannelGroupContentMessageImpl")) +typealias FromChannelGroupContentMessageImpl = ConnectedFromChannelGroupContentMessageImpl + +data class UnconnectedFromChannelGroupContentMessageImpl( + override val chat: GroupChat, + override val channel: ChannelChat, + override val messageId: MessageIdentifier, + override val date: DateTime, + override val forwardInfo: ForwardInfo?, + override val editDate: DateTime?, + override val forwardable: Boolean, + override val replyTo: Message?, + override val replyMarkup: InlineKeyboardMarkup?, + override val content: T, + override val senderBot: CommonBot?, + override val authorSignature: AuthorSignature? +) : UnconnectedFromChannelGroupContentMessage + data class AnonymousGroupContentMessageImpl( override val chat: GroupChat, override val messageId: MessageIdentifier, 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 26916b327b..343afb1f75 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 @@ -12,8 +12,7 @@ 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.abstracts.* import dev.inmo.tgbotapi.types.message.content.* import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent import dev.inmo.tgbotapi.types.message.content.media.* @@ -273,50 +272,51 @@ internal data class RawMessage( } } ?: when (chat) { is PublicChat -> when (chat) { - is ChannelChat -> if (is_automatic_forward == true) { - ConnectedChannelContentMessageImpl( - messageId, - chat, - content, - date.asDate, - edit_date?.asDate, - has_protected_content != true, - forwarded, - reply_to_message?.asMessage, - reply_markup, - via_bot, - author_signature - ) - } else { - UnconnectedChannelContentMessageImpl( - messageId, - chat, - content, - date.asDate, - edit_date?.asDate, - has_protected_content != true, - forwarded, - reply_to_message?.asMessage, - reply_markup, - via_bot, - author_signature - ) - } + is ChannelChat -> ChannelContentMessageImpl( + messageId, + chat, + content, + date.asDate, + edit_date?.asDate, + has_protected_content != true, + forwarded, + reply_to_message?.asMessage, + reply_markup, + via_bot, + author_signature + ) is GroupChat -> when (sender_chat) { - is ChannelChat -> FromChannelGroupContentMessageImpl( - chat, - sender_chat, - messageId, - date.asDate, - forwarded, - edit_date ?.asDate, - has_protected_content != true, - reply_to_message ?.asMessage, - reply_markup, - content, - via_bot, - author_signature - ) + is ChannelChat -> if (is_automatic_forward == true) { + ConnectedFromChannelGroupContentMessageImpl( + chat, + sender_chat, + messageId, + date.asDate, + forwarded, + edit_date ?.asDate, + has_protected_content != true, + reply_to_message ?.asMessage, + reply_markup, + content, + via_bot, + author_signature + ) + } else { + UnconnectedFromChannelGroupContentMessageImpl( + chat, + sender_chat, + messageId, + date.asDate, + forwarded, + edit_date ?.asDate, + has_protected_content != true, + reply_to_message ?.asMessage, + reply_markup, + content, + via_bot, + author_signature + ) + } is GroupChat -> AnonymousGroupContentMessageImpl( chat, messageId, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/UnconnectedChannelContentMessageImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/UnconnectedChannelContentMessageImpl.kt deleted file mode 100644 index 3ffbb01241..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/UnconnectedChannelContentMessageImpl.kt +++ /dev/null @@ -1,39 +0,0 @@ -package dev.inmo.tgbotapi.types.message - -import com.soywiz.klock.DateTime -import dev.inmo.tgbotapi.types.* -import dev.inmo.tgbotapi.types.buttons.InlineKeyboardMarkup -import dev.inmo.tgbotapi.types.chat.abstracts.ChannelChat -import dev.inmo.tgbotapi.types.message.abstracts.* -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent - -data class UnconnectedChannelContentMessageImpl( - override val messageId: MessageIdentifier, - override val chat: ChannelChat, - override val content: T, - override val date: DateTime, - override val editDate: DateTime?, - override val forwardable: Boolean, - override val forwardInfo: ForwardInfo?, - override val replyTo: Message?, - override val replyMarkup: InlineKeyboardMarkup?, - override val senderBot: CommonBot?, - override val authorSignature: AuthorSignature? -) : UnconnectedChannelContentMessage { - @Deprecated("Use the constructor with forwardable field") - constructor( - messageId: MessageIdentifier, - chat: ChannelChat, - content: T, - date: DateTime, - editDate: DateTime?, - forwardInfo: ForwardInfo?, - replyTo: Message?, - replyMarkup: InlineKeyboardMarkup?, - senderBot: CommonBot?, - authorSignature: AuthorSignature? - ) : this(messageId, chat, content, date, editDate, true, forwardInfo, replyTo, replyMarkup, senderBot, authorSignature) -} - -@Deprecated("Renamed to UnconnectedChannelContentMessage", ReplaceWith("UnconnectedChannelContentMessage", "dev.inmo.tgbotapi.types.message.UnconnectedChannelContentMessageImpl")) -typealias ChannelContentMessageImpl = UnconnectedChannelContentMessage diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ChannelContentMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ChannelContentMessage.kt index 2cc958d347..a7ddbc6e66 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ChannelContentMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ChannelContentMessage.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.types.chat.abstracts.ChannelChat import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent import dev.inmo.tgbotapi.types.message.content.abstracts.PossiblySentViaBotCommonMessage -sealed interface ChannelContentMessage : PossiblySentViaBotCommonMessage, SignedMessage, WithSenderChatMessage { +interface ChannelContentMessage : PossiblySentViaBotCommonMessage, SignedMessage, WithSenderChatMessage { override val chat: ChannelChat override val senderChat: ChannelChat get() = chat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ConnectedChannelContentMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ConnectedChannelContentMessage.kt deleted file mode 100644 index 27fa4dc2e6..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/ConnectedChannelContentMessage.kt +++ /dev/null @@ -1,5 +0,0 @@ -package dev.inmo.tgbotapi.types.message.abstracts - -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent - -interface ConnectedChannelContentMessage : 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 d5a91e20c1..82a370c4fd 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 @@ -15,6 +15,9 @@ interface FromChannelGroupContentMessage : GroupContentMessa get() = channel } +interface ConnectedFromChannelGroupContentMessage : FromChannelGroupContentMessage +interface UnconnectedFromChannelGroupContentMessage : FromChannelGroupContentMessage + interface AnonymousGroupContentMessage : GroupContentMessage, SignedMessage, WithSenderChatMessage { override val senderChat: GroupChat get() = chat diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/UnconnectedChannelContentMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/UnconnectedChannelContentMessage.kt deleted file mode 100644 index c9b8b346cd..0000000000 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/UnconnectedChannelContentMessage.kt +++ /dev/null @@ -1,5 +0,0 @@ -package dev.inmo.tgbotapi.types.message.abstracts - -import dev.inmo.tgbotapi.types.message.content.abstracts.MessageContent - -interface UnconnectedChannelContentMessage : ChannelContentMessage diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt index 1d1d559479..52af1c45fe 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/ClassCasts.kt @@ -915,15 +915,15 @@ inline fun Message.requireAnonymousGroupContentMessageImpl(): AnonymousGroupCont this as AnonymousGroupContentMessageImpl @PreviewFeature -inline fun Message.whenChannelContentMessageImpl(block: (UnconnectedChannelContentMessageImpl) -> T) = asChannelContentMessageImpl() ?.let(block) +inline fun Message.whenChannelContentMessageImpl(block: (UnconnectedFromChannelGroupContentMessageImpl) -> T) = asChannelContentMessageImpl() ?.let(block) @PreviewFeature -inline fun Message.asChannelContentMessageImpl(): UnconnectedChannelContentMessageImpl? = - this as? UnconnectedChannelContentMessageImpl +inline fun Message.asChannelContentMessageImpl(): UnconnectedFromChannelGroupContentMessageImpl? = + this as? UnconnectedFromChannelGroupContentMessageImpl @PreviewFeature -inline fun Message.requireChannelContentMessageImpl(): UnconnectedChannelContentMessageImpl = - this as UnconnectedChannelContentMessageImpl +inline fun Message.requireChannelContentMessageImpl(): UnconnectedFromChannelGroupContentMessageImpl = + this as UnconnectedFromChannelGroupContentMessageImpl @PreviewFeature inline fun Message.whenFromChannelGroupContentMessageImpl(block: (FromChannelGroupContentMessageImpl) -> T) = asFromChannelGroupContentMessageImpl() ?.let(block) @@ -1034,26 +1034,26 @@ inline fun Message.requireChannelContentMessage(): ChannelContentMessage @PreviewFeature -inline fun Message.whenConnectedChannelContentMessage(block: (ConnectedChannelContentMessage) -> T) = asConnectedChannelContentMessage() ?.let(block) +inline fun Message.whenConnectedFromChannelGroupContentMessage(block: (ConnectedFromChannelGroupContentMessage) -> T) = asConnectedFromChannelGroupContentMessage() ?.let(block) @PreviewFeature -inline fun Message.asConnectedChannelContentMessage(): ConnectedChannelContentMessage? = - this as? ConnectedChannelContentMessageImpl +inline fun Message.asConnectedFromChannelGroupContentMessage(): ConnectedFromChannelGroupContentMessage? = + this as? ConnectedFromChannelGroupContentMessageImpl @PreviewFeature -inline fun Message.requireConnectedChannelContentMessage(): ConnectedChannelContentMessage = - this as ConnectedChannelContentMessage +inline fun Message.requireConnectedFromChannelGroupContentMessage(): ConnectedFromChannelGroupContentMessage = + this as ConnectedFromChannelGroupContentMessage @PreviewFeature -inline fun Message.whenUnconnectedChannelContentMessage(block: (UnconnectedChannelContentMessage) -> T) = asUnconnectedChannelContentMessage() ?.let(block) +inline fun Message.whenUnconnectedFromChannelGroupContentMessage(block: (UnconnectedFromChannelGroupContentMessage) -> T) = asUnconnectedFromChannelGroupContentMessage() ?.let(block) @PreviewFeature -inline fun Message.asUnconnectedChannelContentMessage(): UnconnectedChannelContentMessage? = - this as? UnconnectedChannelContentMessage +inline fun Message.asUnconnectedFromChannelGroupContentMessage(): UnconnectedFromChannelGroupContentMessage? = + this as? UnconnectedFromChannelGroupContentMessage @PreviewFeature -inline fun Message.requireUnconnectedChannelContentMessage(): UnconnectedChannelContentMessage = - this as UnconnectedChannelContentMessage +inline fun Message.requireUnconnectedFromChannelGroupContentMessage(): UnconnectedFromChannelGroupContentMessage = + this as UnconnectedFromChannelGroupContentMessage @PreviewFeature inline fun Message.whenChatEventMessage(block: (ChatEventMessage) -> T) = asChatEventMessage() ?.let(block)