diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt index 29e4b67754..56c7b39add 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/Common.kt @@ -201,6 +201,10 @@ const val tgWebAppStartParamField = "tgWebAppStartParam" const val chatIdField = "chat_id" const val senderChatIdField = "sender_chat_id" +const val senderChatField = "sender_chat" +const val authorSignatureField = "author_signature" +const val senderUserField = "sender_user" +const val senderUserNameField = "sender_user_name" const val messageIdField = "message_id" const val giveawayMessageIdField = "giveaway_message_id" const val messageIdsField = "message_ids" diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelContentMessageImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelContentMessageImpl.kt index eaab4dc3ad..bfe6234525 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelContentMessageImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ChannelContentMessageImpl.kt @@ -15,10 +15,27 @@ data class ChannelContentMessageImpl( override val date: DateTime, override val editDate: DateTime?, override val hasProtectedContent: Boolean, - override val forwardInfo: ForwardInfo?, + override val forwardOrigin: MessageOrigin?, override val replyTo: AccessibleMessage?, override val replyMarkup: InlineKeyboardMarkup?, override val senderBot: CommonBot?, override val authorSignature: AuthorSignature?, override val mediaGroupId: MediaGroupIdentifier?, -) : ChannelContentMessage +) : ChannelContentMessage { + constructor( + messageId: MessageId, + chat: PreviewChannelChat, + content: T, + date: DateTime, + editDate: DateTime?, + hasProtectedContent: Boolean, + forwardInfo: ForwardInfo, + replyTo: AccessibleMessage?, + replyMarkup: InlineKeyboardMarkup?, + senderBot: CommonBot?, + authorSignature: AuthorSignature?, + mediaGroupId: MediaGroupIdentifier?, + ) : this( + messageId, chat, content, date, editDate, hasProtectedContent, forwardInfo.messageOrigin(), replyTo, replyMarkup, senderBot, authorSignature, mediaGroupId + ) +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ForwardInfo.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ForwardInfo.kt index 58eb633bd6..be74e8c3db 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ForwardInfo.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/ForwardInfo.kt @@ -57,3 +57,55 @@ sealed interface ForwardInfo { } } } + +fun MessageOrigin.forwardInfo() = when(this) { + is MessageOrigin.HiddenUser -> ForwardInfo.ByAnonymous( + date, + name + ) + is MessageOrigin.Public.Channel -> ForwardInfo.PublicChat.FromChannel( + date, + messageId, + chat, + authorSignature + ) + is MessageOrigin.Public.Sender -> when (chat) { + is ChannelChat -> ForwardInfo.PublicChat.SentByChannel( + date, + chat + ) + is SupergroupChat -> ForwardInfo.PublicChat.FromSupergroup( + date, + chat + ) + } + is MessageOrigin.User -> ForwardInfo.ByUser( + date, + user + ) +} + +fun ForwardInfo.messageOrigin() = when (this) { + is ForwardInfo.ByAnonymous -> MessageOrigin.HiddenUser( + senderName, + dateOfOriginal + ) + is ForwardInfo.ByUser -> MessageOrigin.User( + user, + dateOfOriginal + ) + is ForwardInfo.PublicChat.FromChannel -> MessageOrigin.Public.Channel( + channelChat, + messageId, + dateOfOriginal, + signature + ) + is ForwardInfo.PublicChat.FromSupergroup -> MessageOrigin.Public.Sender( + group, + dateOfOriginal + ) + is ForwardInfo.PublicChat.SentByChannel -> MessageOrigin.Public.Sender( + channelChat, + dateOfOriginal + ) +} 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 78d90720e1..bfa54b8c1f 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 @@ -14,7 +14,7 @@ data class ConnectedFromChannelGroupContentMessageImpl( override val channel: PreviewChannelChat, override val messageId: MessageId, override val date: DateTime, - override val forwardInfo: ForwardInfo?, + override val forwardOrigin: MessageOrigin?, override val editDate: DateTime?, override val hasProtectedContent: Boolean, override val replyTo: AccessibleMessage?, @@ -23,14 +23,33 @@ data class ConnectedFromChannelGroupContentMessageImpl( override val senderBot: CommonBot?, override val authorSignature: AuthorSignature?, override val mediaGroupId: MediaGroupIdentifier?, -) : ConnectedFromChannelGroupContentMessage +) : ConnectedFromChannelGroupContentMessage { + + constructor( + chat: PreviewGroupChat, + channel: PreviewChannelChat, + messageId: MessageId, + date: DateTime, + forwardInfo: ForwardInfo, + editDate: DateTime?, + hasProtectedContent: Boolean, + replyTo: AccessibleMessage?, + replyMarkup: InlineKeyboardMarkup?, + content: T, + senderBot: CommonBot?, + authorSignature: AuthorSignature?, + mediaGroupId: MediaGroupIdentifier?, + ) : this( + chat, channel, messageId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo, replyMarkup, content, senderBot, authorSignature, mediaGroupId + ) +} data class UnconnectedFromChannelGroupContentMessageImpl( override val chat: PreviewGroupChat, override val channel: PreviewChannelChat, override val messageId: MessageId, override val date: DateTime, - override val forwardInfo: ForwardInfo?, + override val forwardOrigin: MessageOrigin?, override val editDate: DateTime?, override val hasProtectedContent: Boolean, override val replyTo: AccessibleMessage?, @@ -39,13 +58,31 @@ data class UnconnectedFromChannelGroupContentMessageImpl( override val senderBot: CommonBot?, override val authorSignature: AuthorSignature?, override val mediaGroupId: MediaGroupIdentifier?, -) : UnconnectedFromChannelGroupContentMessage +) : UnconnectedFromChannelGroupContentMessage { + constructor( + chat: PreviewGroupChat, + channel: PreviewChannelChat, + messageId: MessageId, + date: DateTime, + forwardInfo: ForwardInfo, + editDate: DateTime?, + hasProtectedContent: Boolean, + replyTo: AccessibleMessage?, + replyMarkup: InlineKeyboardMarkup?, + content: T, + senderBot: CommonBot?, + authorSignature: AuthorSignature?, + mediaGroupId: MediaGroupIdentifier?, + ) : this( + chat, channel, messageId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo, replyMarkup, content, senderBot, authorSignature, mediaGroupId + ) +} data class AnonymousGroupContentMessageImpl( override val chat: PreviewGroupChat, override val messageId: MessageId, override val date: DateTime, - override val forwardInfo: ForwardInfo?, + override val forwardOrigin: MessageOrigin?, override val editDate: DateTime?, override val hasProtectedContent: Boolean, override val replyTo: AccessibleMessage?, @@ -54,14 +91,31 @@ data class AnonymousGroupContentMessageImpl( override val senderBot: CommonBot?, override val authorSignature: AuthorSignature?, override val mediaGroupId: MediaGroupIdentifier?, -) : AnonymousGroupContentMessage +) : AnonymousGroupContentMessage { + constructor( + chat: PreviewGroupChat, + messageId: MessageId, + date: DateTime, + forwardInfo: ForwardInfo, + editDate: DateTime?, + hasProtectedContent: Boolean, + replyTo: AccessibleMessage?, + replyMarkup: InlineKeyboardMarkup?, + content: T, + senderBot: CommonBot?, + authorSignature: AuthorSignature?, + mediaGroupId: MediaGroupIdentifier?, + ) : this( + chat, messageId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo, replyMarkup, content, senderBot, authorSignature, mediaGroupId + ) +} data class CommonGroupContentMessageImpl( override val chat: PreviewGroupChat, override val messageId: MessageId, override val from: User, override val date: DateTime, - override val forwardInfo: ForwardInfo?, + override val forwardOrigin: MessageOrigin?, override val editDate: DateTime?, override val hasProtectedContent: Boolean, override val replyTo: AccessibleMessage?, @@ -69,7 +123,24 @@ data class CommonGroupContentMessageImpl( override val content: T, override val senderBot: CommonBot?, override val mediaGroupId: MediaGroupIdentifier?, -) : CommonGroupContentMessage +) : CommonGroupContentMessage { + constructor( + chat: PreviewGroupChat, + messageId: MessageId, + from: User, + date: DateTime, + forwardInfo: ForwardInfo, + editDate: DateTime?, + hasProtectedContent: Boolean, + replyTo: AccessibleMessage?, + replyMarkup: InlineKeyboardMarkup?, + content: T, + senderBot: CommonBot?, + mediaGroupId: MediaGroupIdentifier?, + ) : this( + chat, messageId, from, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo, replyMarkup, content, senderBot, mediaGroupId + ) +} data class FromChannelForumContentMessageImpl( override val chat: PreviewForumChat, @@ -77,7 +148,7 @@ data class FromChannelForumContentMessageImpl( override val messageId: MessageId, override val threadId: MessageThreadId, override val date: DateTime, - override val forwardInfo: ForwardInfo?, + override val forwardOrigin: MessageOrigin?, override val editDate: DateTime?, override val hasProtectedContent: Boolean, override val replyTo: AccessibleMessage?, @@ -86,14 +157,33 @@ data class FromChannelForumContentMessageImpl( override val senderBot: CommonBot?, override val authorSignature: AuthorSignature?, override val mediaGroupId: MediaGroupIdentifier?, -) : FromChannelForumContentMessage +) : FromChannelForumContentMessage { + constructor( + chat: PreviewForumChat, + channel: PreviewChannelChat, + messageId: MessageId, + threadId: MessageThreadId, + date: DateTime, + forwardInfo: ForwardInfo, + editDate: DateTime?, + hasProtectedContent: Boolean, + replyTo: AccessibleMessage?, + replyMarkup: InlineKeyboardMarkup?, + content: T, + senderBot: CommonBot?, + authorSignature: AuthorSignature?, + mediaGroupId: MediaGroupIdentifier?, + ) : this( + chat, channel, messageId, threadId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo, replyMarkup, content, senderBot, authorSignature, mediaGroupId + ) +} data class AnonymousForumContentMessageImpl( override val chat: PreviewForumChat, override val messageId: MessageId, override val threadId: MessageThreadId, override val date: DateTime, - override val forwardInfo: ForwardInfo?, + override val forwardOrigin: MessageOrigin?, override val editDate: DateTime?, override val hasProtectedContent: Boolean, override val replyTo: AccessibleMessage?, @@ -102,7 +192,25 @@ data class AnonymousForumContentMessageImpl( override val senderBot: CommonBot?, override val authorSignature: AuthorSignature?, override val mediaGroupId: MediaGroupIdentifier?, -) : AnonymousForumContentMessage +) : AnonymousForumContentMessage { + constructor( + chat: PreviewForumChat, + messageId: MessageId, + threadId: MessageThreadId, + date: DateTime, + forwardInfo: ForwardInfo, + editDate: DateTime?, + hasProtectedContent: Boolean, + replyTo: AccessibleMessage?, + replyMarkup: InlineKeyboardMarkup?, + content: T, + senderBot: CommonBot?, + authorSignature: AuthorSignature?, + mediaGroupId: MediaGroupIdentifier?, + ) : this( + chat, messageId, threadId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo, replyMarkup, content, senderBot, authorSignature, mediaGroupId + ) +} data class CommonForumContentMessageImpl( override val chat: PreviewForumChat, @@ -110,7 +218,7 @@ data class CommonForumContentMessageImpl( override val threadId: MessageThreadId, override val from: User, override val date: DateTime, - override val forwardInfo: ForwardInfo?, + override val forwardOrigin: MessageOrigin?, override val editDate: DateTime?, override val hasProtectedContent: Boolean, override val replyTo: AccessibleMessage?, @@ -118,4 +226,22 @@ data class CommonForumContentMessageImpl( override val content: T, override val senderBot: CommonBot?, override val mediaGroupId: MediaGroupIdentifier?, -) : CommonForumContentMessage +) : CommonForumContentMessage { + constructor( + chat: PreviewForumChat, + messageId: MessageId, + threadId: MessageThreadId, + from: User, + date: DateTime, + forwardInfo: ForwardInfo, + editDate: DateTime?, + hasProtectedContent: Boolean, + replyTo: AccessibleMessage?, + replyMarkup: InlineKeyboardMarkup?, + content: T, + senderBot: CommonBot?, + mediaGroupId: MediaGroupIdentifier?, + ) : this( + chat, messageId, threadId, from, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo, replyMarkup, content, senderBot, mediaGroupId + ) +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/MessageOrigin.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/MessageOrigin.kt new file mode 100644 index 0000000000..57e162a3b6 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/MessageOrigin.kt @@ -0,0 +1,89 @@ +package dev.inmo.tgbotapi.types.message + +import dev.inmo.tgbotapi.types.* +import dev.inmo.tgbotapi.types.chat.* +import kotlinx.serialization.Required +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +sealed interface MessageOrigin { + val type: String + val date: TelegramDate + + @Serializable + data class User( + @SerialName(senderUserField) + val user: dev.inmo.tgbotapi.types.chat.User, + @SerialName(dateField) + override val date: TelegramDate + ) : MessageOrigin { + @SerialName(typeField) + @Required + override val type: String = Companion.type + + companion object { + val type: String = "user" + } + } + + @Serializable + data class HiddenUser( + @SerialName(senderUserNameField) + val name: String, + @SerialName(dateField) + override val date: TelegramDate + ) : MessageOrigin { + @SerialName(typeField) + @Required + override val type: String = Companion.type + + companion object { + val type: String = "hidden_user" + } + } + + @Serializable + sealed interface Public : MessageOrigin { + val chat: PublicChat + val authorSignature: AuthorSignature? + + @Serializable + data class Sender( + @SerialName(senderChatField) + override val chat: SuperPublicChat, + @SerialName(dateField) + override val date: TelegramDate, + @SerialName(authorSignatureField) + override val authorSignature: AuthorSignature? = null + ) : Public { + @SerialName(typeField) + @Required + override val type: String = Companion.type + + companion object { + val type: String = "chat" + } + } + + @Serializable + data class Channel( + @SerialName(chatField) + override val chat: ChannelChat, + @SerialName(messageIdField) + val messageId: MessageId, + @SerialName(dateField) + override val date: TelegramDate, + @SerialName(authorSignatureField) + override val authorSignature: AuthorSignature? = null + ) : Public { + @SerialName(typeField) + @Required + override val type: String = Companion.type + + companion object { + val type: String = "channel" + } + } + } +} \ No newline at end of file diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateContentMessageImpl.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateContentMessageImpl.kt index 74f5ea3797..21438aea84 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateContentMessageImpl.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/PrivateContentMessageImpl.kt @@ -18,9 +18,26 @@ data class PrivateContentMessageImpl( override val date: DateTime, override val editDate: DateTime?, override val hasProtectedContent: Boolean, - override val forwardInfo: ForwardInfo?, + override val forwardOrigin: MessageOrigin?, override val replyTo: AccessibleMessage?, override val replyMarkup: InlineKeyboardMarkup?, override val senderBot: CommonBot?, override val mediaGroupId: MediaGroupIdentifier?, -) : PrivateContentMessage +) : PrivateContentMessage { + constructor( + messageId: MessageId, + from: User, + chat: PreviewPrivateChat, + content: T, + date: DateTime, + editDate: DateTime?, + hasProtectedContent: Boolean, + forwardInfo: ForwardInfo, + replyTo: AccessibleMessage?, + replyMarkup: InlineKeyboardMarkup?, + senderBot: CommonBot?, + mediaGroupId: MediaGroupIdentifier?, + ) : this( + messageId, from, chat, content, date, editDate, hasProtectedContent, forwardInfo.messageOrigin(), replyTo, replyMarkup, senderBot, mediaGroupId + ) +} 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 325aed76af..f876f18ed6 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 @@ -52,12 +52,8 @@ internal data class RawMessage( private val messageThreadId: MessageThreadId? = null, private val from: User? = null, private val sender_chat: PreviewPublicChat? = null, - private val forward_from: User? = null, - private val forward_from_chat: Chat? = null, - private val forward_from_message_id: MessageId? = null, - private val forward_signature: ForwardSignature? = null, - private val forward_sender_name: ForwardSenderName? = null, - private val forward_date: TelegramDate? = null, + private val forward_origin: MessageOrigin? = null, + private val is_topic_message: Boolean? = null, private val is_automatic_forward: Boolean? = null, private val reply_to_message: RawMessage? = null, private val via_bot: CommonBot? = null, @@ -201,44 +197,6 @@ internal data class RawMessage( } } - private val forwarded: ForwardInfo? by lazy { - forward_date - ?: return@lazy null // According to the documentation, now any forwarded message contains this field - when { - forward_sender_name != null -> ForwardInfo.ByAnonymous( - forward_date, - forward_sender_name - ) - - forward_from_chat is ChannelChat -> if (forward_from_message_id == null) { - ForwardInfo.PublicChat.SentByChannel( - forward_date, - forward_from_chat, - forward_signature - ) - } else { - ForwardInfo.PublicChat.FromChannel( - forward_date, - forward_from_message_id, - forward_from_chat, - forward_signature - ) - } - - forward_from_chat is SupergroupChat -> ForwardInfo.PublicChat.FromSupergroup( - forward_date, - forward_from_chat - ) - - forward_from != null -> ForwardInfo.ByUser( - forward_date, - forward_from - ) - - else -> null - } - } - private val chatEvent: ChatEvent? by lazy { when { new_chat_members != null -> NewChatMembers(new_chat_members.toList()) @@ -334,7 +292,7 @@ internal data class RawMessage( date.asDate, edit_date?.asDate, has_protected_content == true, - forwarded, + forward_origin, reply_to_message?.asMessage, reply_markup, via_bot, @@ -356,7 +314,7 @@ internal data class RawMessage( messageId, messageThreadId, date.asDate, - forwarded, + forward_origin, edit_date ?.asDate, has_protected_content == true, reply_to_message ?.asMessage, @@ -371,7 +329,7 @@ internal data class RawMessage( messageId, messageThreadId, date.asDate, - forwarded, + forward_origin, edit_date ?.asDate, has_protected_content == true, reply_to_message ?.asMessage, @@ -387,7 +345,7 @@ internal data class RawMessage( messageThreadId, from ?: error("It is expected that in messages from non anonymous users and channels user must be specified"), date.asDate, - forwarded, + forward_origin, edit_date ?.asDate, has_protected_content == true, reply_to_message ?.asMessage, @@ -405,7 +363,7 @@ internal data class RawMessage( sender_chat, messageId, date.asDate, - forwarded, + forward_origin, edit_date ?.asDate, has_protected_content == true, reply_to_message ?.asMessage, @@ -421,7 +379,7 @@ internal data class RawMessage( sender_chat, messageId, date.asDate, - forwarded, + forward_origin, edit_date ?.asDate, has_protected_content == true, reply_to_message ?.asMessage, @@ -436,7 +394,7 @@ internal data class RawMessage( chat, messageId, date.asDate, - forwarded, + forward_origin, edit_date ?.asDate, has_protected_content == true, reply_to_message ?.asMessage, @@ -451,7 +409,7 @@ internal data class RawMessage( messageId, from ?: error("It is expected that in messages from non anonymous users and channels user must be specified"), date.asDate, - forwarded, + forward_origin, edit_date ?.asDate, has_protected_content == true, reply_to_message ?.asMessage, @@ -469,7 +427,7 @@ internal data class RawMessage( sender_chat, messageId, date.asDate, - forwarded, + forward_origin, edit_date ?.asDate, has_protected_content == true, reply_to_message ?.asMessage, @@ -485,7 +443,7 @@ internal data class RawMessage( sender_chat, messageId, date.asDate, - forwarded, + forward_origin, edit_date ?.asDate, has_protected_content == true, reply_to_message ?.asMessage, @@ -500,7 +458,7 @@ internal data class RawMessage( chat, messageId, date.asDate, - forwarded, + forward_origin, edit_date ?.asDate, has_protected_content == true, reply_to_message ?.asMessage, @@ -515,7 +473,7 @@ internal data class RawMessage( messageId, from ?: error("It is expected that in messages from non anonymous users and channels user must be specified"), date.asDate, - forwarded, + forward_origin, edit_date ?.asDate, has_protected_content == true, reply_to_message ?.asMessage, @@ -534,7 +492,7 @@ internal data class RawMessage( date.asDate, edit_date?.asDate, has_protected_content == true, - forwarded, + forward_origin, reply_to_message?.asMessage, reply_markup, via_bot, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblyForwardedMessage.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblyForwardedMessage.kt index 41b8938f74..6c6e13b608 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblyForwardedMessage.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/abstracts/PossiblyForwardedMessage.kt @@ -1,7 +1,11 @@ package dev.inmo.tgbotapi.types.message.abstracts import dev.inmo.tgbotapi.types.message.ForwardInfo +import dev.inmo.tgbotapi.types.message.MessageOrigin +import dev.inmo.tgbotapi.types.message.forwardInfo interface PossiblyForwardedMessage : AccessibleMessage { + val forwardOrigin: MessageOrigin? val forwardInfo: ForwardInfo? + get() = forwardOrigin ?.forwardInfo() } \ No newline at end of file diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/extensions/MediaGroupContentMessageCreator.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/extensions/MediaGroupContentMessageCreator.kt index dcf3b4d3eb..5ed0e6f3af 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/extensions/MediaGroupContentMessageCreator.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/utils/extensions/MediaGroupContentMessageCreator.kt @@ -1,6 +1,5 @@ package dev.inmo.tgbotapi.utils.extensions -import dev.inmo.tgbotapi.types.MediaGroupIdentifier import dev.inmo.tgbotapi.types.message.AnonymousForumContentMessageImpl import dev.inmo.tgbotapi.types.message.AnonymousGroupContentMessageImpl import dev.inmo.tgbotapi.types.message.ChannelContentMessageImpl @@ -15,7 +14,6 @@ import dev.inmo.tgbotapi.types.message.abstracts.AnonymousGroupContentMessage import dev.inmo.tgbotapi.types.message.abstracts.ChannelContentMessage import dev.inmo.tgbotapi.types.message.abstracts.CommonForumContentMessage import dev.inmo.tgbotapi.types.message.abstracts.CommonGroupContentMessage -import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage import dev.inmo.tgbotapi.types.message.abstracts.ConnectedFromChannelGroupContentMessage import dev.inmo.tgbotapi.types.message.abstracts.FromChannelForumContentMessage import dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBotCommonMessage @@ -41,7 +39,7 @@ fun List>.asMedia sourceMessage.date, sourceMessage.editDate, sourceMessage.hasProtectedContent, - sourceMessage.forwardInfo, + sourceMessage.forwardOrigin, sourceMessage.replyTo, sourceMessage.replyMarkup, sourceMessage.senderBot, @@ -56,7 +54,7 @@ fun List>.asMedia sourceMessage.date, sourceMessage.editDate, sourceMessage.hasProtectedContent, - sourceMessage.forwardInfo, + sourceMessage.forwardOrigin, sourceMessage.replyTo, sourceMessage.replyMarkup, sourceMessage.senderBot, @@ -66,7 +64,7 @@ fun List>.asMedia sourceMessage.chat, sourceMessage.messageId, sourceMessage.date, - sourceMessage.forwardInfo, + sourceMessage.forwardOrigin, sourceMessage.editDate, sourceMessage.hasProtectedContent, sourceMessage.replyTo, @@ -81,7 +79,7 @@ fun List>.asMedia sourceMessage.messageId, sourceMessage.user, sourceMessage.date, - sourceMessage.forwardInfo, + sourceMessage.forwardOrigin, sourceMessage.editDate, sourceMessage.hasProtectedContent, sourceMessage.replyTo, @@ -95,7 +93,7 @@ fun List>.asMedia sourceMessage.channel, sourceMessage.messageId, sourceMessage.date, - sourceMessage.forwardInfo, + sourceMessage.forwardOrigin, sourceMessage.editDate, sourceMessage.hasProtectedContent, sourceMessage.replyTo, @@ -110,7 +108,7 @@ fun List>.asMedia sourceMessage.channel, sourceMessage.messageId, sourceMessage.date, - sourceMessage.forwardInfo, + sourceMessage.forwardOrigin, sourceMessage.editDate, sourceMessage.hasProtectedContent, sourceMessage.replyTo, @@ -125,7 +123,7 @@ fun List>.asMedia sourceMessage.messageId, sourceMessage.threadId, sourceMessage.date, - sourceMessage.forwardInfo, + sourceMessage.forwardOrigin, sourceMessage.editDate, sourceMessage.hasProtectedContent, sourceMessage.replyTo, @@ -141,7 +139,7 @@ fun List>.asMedia sourceMessage.threadId, sourceMessage.user, sourceMessage.date, - sourceMessage.forwardInfo, + sourceMessage.forwardOrigin, sourceMessage.editDate, sourceMessage.hasProtectedContent, sourceMessage.replyTo, @@ -156,7 +154,7 @@ fun List>.asMedia sourceMessage.messageId, sourceMessage.threadId, sourceMessage.date, - sourceMessage.forwardInfo, + sourceMessage.forwardOrigin, sourceMessage.editDate, sourceMessage.hasProtectedContent, sourceMessage.replyTo,