diff --git a/CHANGELOG.md b/CHANGELOG.md index a4df7efbad..46bb5a6fab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * `Core`: * New type `TextedMediaContent` which will unite `TextedInput` and `MediaContent` + * New type `TextedMediaGroupMediaInput` which will unite `TextedMediaContent` and `MediaGroupContent` * `MediaGroupContent` and all subsequent inheritors have been replaced to the package `dev.inmo.tgbotapi.types.message.content.media` * Add `reply` functions with the texted content with including of text diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/AudioMediaGroupContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/AudioMediaGroupContent.kt index 15af16d802..f04c1a3905 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/AudioMediaGroupContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/AudioMediaGroupContent.kt @@ -4,7 +4,7 @@ import dev.inmo.tgbotapi.types.InputMedia.AudioMediaGroupMemberInputMedia import dev.inmo.tgbotapi.types.files.AudioFile import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile -interface AudioMediaGroupContent : MediaGroupContent { +interface AudioMediaGroupContent : TextedMediaGroupMediaInput { override val media: AudioFile override fun toMediaGroupMemberInputMedia(): AudioMediaGroupMemberInputMedia diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/DocumentMediaGroupContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/DocumentMediaGroupContent.kt index ffd083806a..7c95c0239f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/DocumentMediaGroupContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/DocumentMediaGroupContent.kt @@ -5,7 +5,7 @@ import dev.inmo.tgbotapi.types.files.DocumentFile import dev.inmo.tgbotapi.types.files.abstracts.TelegramMediaFile import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent -interface DocumentMediaGroupContent : MediaGroupContent { +interface DocumentMediaGroupContent : TextedMediaGroupMediaInput { override val media: DocumentFile override fun toMediaGroupMemberInputMedia(): DocumentMediaGroupMemberInputMedia diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/TextedMediaGroupMediaInput.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/TextedMediaGroupMediaInput.kt new file mode 100644 index 0000000000..8f6c370a06 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/TextedMediaGroupMediaInput.kt @@ -0,0 +1,3 @@ +package dev.inmo.tgbotapi.types.message.content.media + +sealed interface TextedMediaGroupMediaInput : TextedMediaContent, MediaGroupContent diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VisualMediaGroupContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VisualMediaGroupContent.kt index 5402b716a2..0e9c87879e 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VisualMediaGroupContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/media/VisualMediaGroupContent.kt @@ -2,6 +2,6 @@ package dev.inmo.tgbotapi.types.message.content.media import dev.inmo.tgbotapi.types.InputMedia.VisualMediaGroupMemberInputMedia -interface VisualMediaGroupContent : MediaGroupContent { +interface VisualMediaGroupContent : TextedMediaGroupMediaInput { override fun toMediaGroupMemberInputMedia(): VisualMediaGroupMemberInputMedia } diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/FlowsUpdatesFilter.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/FlowsUpdatesFilter.kt index 8964dd1ad3..acd9324c3e 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/FlowsUpdatesFilter.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/shortcuts/FlowsUpdatesFilter.kt @@ -8,6 +8,8 @@ import dev.inmo.tgbotapi.types.message.abstracts.ContentMessage import dev.inmo.tgbotapi.types.message.content.* import dev.inmo.tgbotapi.types.message.content.abstracts.* import dev.inmo.tgbotapi.types.message.content.media.* +import dev.inmo.tgbotapi.types.message.content.media.MediaGroupContent +import dev.inmo.tgbotapi.types.message.content.media.VisualMediaGroupContent import dev.inmo.tgbotapi.types.message.payments.InvoiceContent import dev.inmo.tgbotapi.types.update.MediaGroupUpdates.SentMediaGroupUpdate import dev.inmo.tgbotapi.types.update.abstracts.BaseSentMessageUpdate @@ -203,6 +205,17 @@ fun FlowsUpdatesFilter.videoMessagesWithMediaGroups( mediaGroupVideosMessages(scopeToIncludeChannels).flatMap() ) +fun Flow.textedMediaContentMessages() = filterContentMessages() +fun FlowsUpdatesFilter.textedMediaContentMessages( + scopeToIncludeChannels: CoroutineScope? = null +) = filterContentMessages(scopeToIncludeChannels) +fun FlowsUpdatesFilter.textedMediaContentMessagesWithMediaGroups( + scopeToIncludeChannels: CoroutineScope? = null +) = merge( + filterContentMessages(scopeToIncludeChannels), + mediaGroupTextedMediaGroupMediaInput(scopeToIncludeChannels).flatMap() +) + fun Flow.videoNoteMessages() = filterContentMessages() fun FlowsUpdatesFilter.videoNoteMessages( scopeToIncludeChannels: CoroutineScope? = null @@ -243,3 +256,8 @@ fun Flow.mediaGroupDocumentMessages() = filterMediaGroupMe fun FlowsUpdatesFilter.mediaGroupDocumentMessages( scopeToIncludeChannels: CoroutineScope? = null ) = filterMediaGroupMessages(scopeToIncludeChannels) + +fun Flow.mediaGroupTextedMediaGroupMediaInput() = filterMediaGroupMessages() +fun FlowsUpdatesFilter.mediaGroupTextedMediaGroupMediaInput( + scopeToIncludeChannels: CoroutineScope? = null +) = filterMediaGroupMessages(scopeToIncludeChannels)