From cfb988ec7fbebb69edb824cc7c6371dc919b5a0b Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 30 Apr 2019 15:56:28 +0800 Subject: [PATCH] forwarded messages changes --- CHANGELOG.md | 6 +++++ .../types/message/ForwardedMessage.kt | 23 ++++++++--------- .../types/message/RawMessage.kt | 25 ++++++++----------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b57f0f66e..52759d01f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,12 @@ some default library * Small refactoring of work with response in `KtorRequestsExecutor` * Kotlin version `1.3.30` -> `1.3.31` * Kotlin coroutines `1.2.0` -> `1.2.1` +* `CommonForwardedMessage` was renamed to `UserForwardedMessage` +* All forwarded messages are now just childs of `ForwardedMessage`: + * `AnonymousForwardedMessage` - for messages without forwarded info + * `UserForwardedMessage` - for messages from users and groups (contains not message id) + * `ForwardedFromChannelMessage` - for messages from channels +* Changed logic of forwarded messages preparing ## 0.13.0 Telegram Polls diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/ForwardedMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/ForwardedMessage.kt index 8c991da6b7..dc970597bc 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/ForwardedMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/ForwardedMessage.kt @@ -12,21 +12,20 @@ data class AnonymousForwardedMessage( val senderName: String ) : ForwardedMessage() -sealed class PublicForwardedMessage : ForwardedMessage() { - abstract val messageId: MessageIdentifier - abstract val from: User? -} - -data class CommonForwardedMessage( - override val messageId: MessageIdentifier, +data class UserForwardedMessage( override val dateOfOriginal: TelegramDate, - override val from: User -) : PublicForwardedMessage() + val from: User +) : ForwardedMessage() + +@Deprecated( + "Renamed according to correct meaning", + ReplaceWith("UserForwardedMessage", "com.github.insanusmokrassar.TelegramBotAPI.types.message.UserForwardedMessage") +) +typealias CommonForwardedMessage = UserForwardedMessage data class ForwardedFromChannelMessage( - override val messageId: MessageIdentifier, override val dateOfOriginal: TelegramDate, - override val from: User?, + val messageId: MessageIdentifier, val channelChat: Chat, val signature: String? = null -) : PublicForwardedMessage() +) : ForwardedMessage() diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt index 2bfaea70b5..b30b4dc58b 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/message/RawMessage.kt @@ -134,25 +134,22 @@ data class RawMessage( @Transient private val forwarded: ForwardedMessage? by lazy { forward_date ?: return@lazy null // According to the documentation, now any forwarded message contains this field - forward_sender_name ?.let { - AnonymousForwardedMessage( + when { + forward_sender_name != null -> AnonymousForwardedMessage( forward_date, forward_sender_name ) - } ?: forward_from_message_id ?.let { - forward_from_chat ?.let { - ForwardedFromChannelMessage( - forward_from_message_id, - forward_date, - forward_from, - forward_from_chat.extractChat(), - forward_signature - ) - } ?: CommonForwardedMessage( - forward_from_message_id, + forward_from_chat != null -> ForwardedFromChannelMessage( forward_date, - forward_from ?: throw IllegalStateException("For common forwarded messages author of original message declared as set up required") + forward_from_message_id ?: throw IllegalStateException("Channel forwarded message must contain message id, but was not"), + forward_from_chat.extractChat(), + forward_signature ) + forward_from != null -> UserForwardedMessage( + forward_date, + forward_from + ) + else -> null } }