AnonymousForwardedMessage

This commit is contained in:
InsanusMokrassar 2019-04-16 17:26:02 +08:00
parent 2b831a803a
commit ba368e9fa4
4 changed files with 22 additions and 5 deletions

View File

@ -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

View File

@ -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

View File

@ -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()

View File

@ -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
)
}
}