From ba368e9fa432b4ac869c5ae8cb6cc227c40f9f09 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 16 Apr 2019 17:26:02 +0800 Subject: [PATCH] AnonymousForwardedMessage --- CHANGELOG.md | 2 ++ .../TelegramBotAPI/types/Common.kt | 1 + .../types/message/ForwardedMessage.kt | 14 +++++++++++--- .../TelegramBotAPI/types/message/RawMessage.kt | 10 ++++++++-- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index baf5c4523d..1a14abb39f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ by their parents `com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts` package * Common Groups now may have pinned message * `is_member` field added into `RestrictedChatMember` +* **BREAK CHANGES** Now `ForwardedMessages` can be `AnonymousForwardedMessage` and `PublicForwardedMessage`. Old +implementations now extend `PublicForwardedMessage` ## 0.12.0 Webhooks diff --git a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt index 0c78643128..aaa6bddd33 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/Common.kt @@ -6,6 +6,7 @@ typealias InlineQueryIdentifier = String typealias UpdateIdentifier = Long typealias MediaGroupIdentifier = String typealias ForwardSignature = String +typealias ForwardSenderName = String typealias AuthorSignature = ForwardSignature typealias CallbackQueryIdentifier = String typealias PaymentQueryIdentifier = String 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 4af0055df8..8c991da6b7 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 @@ -4,8 +4,16 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.* import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.Chat sealed class ForwardedMessage { - abstract val messageId: MessageIdentifier abstract val dateOfOriginal: TelegramDate +} + +data class AnonymousForwardedMessage( + override val dateOfOriginal: TelegramDate, + val senderName: String +) : ForwardedMessage() + +sealed class PublicForwardedMessage : ForwardedMessage() { + abstract val messageId: MessageIdentifier abstract val from: User? } @@ -13,7 +21,7 @@ data class CommonForwardedMessage( override val messageId: MessageIdentifier, override val dateOfOriginal: TelegramDate, override val from: User -) : ForwardedMessage() +) : PublicForwardedMessage() data class ForwardedFromChannelMessage( override val messageId: MessageIdentifier, @@ -21,4 +29,4 @@ data class ForwardedFromChannelMessage( override val from: User?, val channelChat: Chat, val signature: String? = null -) : ForwardedMessage() +) : PublicForwardedMessage() 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 da459a333b..8fc84d4e5d 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 @@ -37,6 +37,7 @@ data class RawMessage( private val forward_from_chat: RawChat? = null, private val forward_from_message_id: MessageIdentifier? = null, private val forward_signature: ForwardSignature? = null, + private val forward_sender_name: ForwardSenderName? = null, private val forward_date: TelegramDate? = null, private val reply_to_message: RawMessage? = null, private val edit_date: TelegramDate? = null, @@ -132,8 +133,9 @@ 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_from_message_id ?.let { - forward_date ?: throw IllegalStateException("For forwarded messages date of original message declared as set up required") + forward_from ?: throw IllegalStateException("For common forwarded messages author of original message declared as set up required") forward_from_chat ?.let { ForwardedFromChannelMessage( forward_from_message_id, @@ -146,7 +148,11 @@ data class RawMessage( forward_from_message_id, forward_date, forward_from - ?: throw IllegalStateException("For common forwarded messages author of original message declared as set up required") + ) + } ?: forward_sender_name ?.let { + AnonymousForwardedMessage( + forward_date, + forward_sender_name ) } }