forwarded messages changes

This commit is contained in:
InsanusMokrassar 2019-04-30 15:56:28 +08:00
parent 562bc0357d
commit cfb988ec7f
3 changed files with 28 additions and 26 deletions

View File

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

View File

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

View File

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