From 8b5da90e280ccd0360b702409bd2bd78bc7babba Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 30 Dec 2022 20:28:22 +0600 Subject: [PATCH] add spoilered in telegrammedia --- .../tgbotapi/abstracts/SpoilerableData.kt | 5 ++++ .../abstracts/OptionallyWithSpoilerRequest.kt | 6 ++--- .../inmo/tgbotapi/types/files/VideoFile.kt | 8 ++++-- .../media/MediaGroupMemberTelegramMedia.kt | 2 +- .../types/media/SpoilerableTelegramMedia.kt | 5 ++++ .../types/media/TelegramMediaAnimation.kt | 9 +++++-- .../types/media/TelegramMediaPhoto.kt | 26 ++++++++++++------- .../types/media/TelegramMediaVideo.kt | 8 ++++-- .../types/message/content/Abstracts.kt | 5 ++-- .../types/message/content/AnimationContent.kt | 2 ++ .../types/message/content/PhotoContent.kt | 3 ++- 11 files changed, 56 insertions(+), 23 deletions(-) create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/SpoilerableData.kt create mode 100644 tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/SpoilerableTelegramMedia.kt diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/SpoilerableData.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/SpoilerableData.kt new file mode 100644 index 0000000000..e14d072b48 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/abstracts/SpoilerableData.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.abstracts + +interface SpoilerableData { + val spoilered: Boolean +} diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/OptionallyWithSpoilerRequest.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/OptionallyWithSpoilerRequest.kt index 9ad3583e82..431d86790d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/OptionallyWithSpoilerRequest.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/requests/send/abstracts/OptionallyWithSpoilerRequest.kt @@ -1,5 +1,5 @@ package dev.inmo.tgbotapi.requests.send.abstracts -interface OptionallyWithSpoilerRequest { - val spoilered: Boolean -} +import dev.inmo.tgbotapi.abstracts.SpoilerableData + +interface OptionallyWithSpoilerRequest : SpoilerableData diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VideoFile.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VideoFile.kt index c963d3babf..7aaf0bf72d 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VideoFile.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/files/VideoFile.kt @@ -34,11 +34,13 @@ data class VideoFile( @Suppress("NOTHING_TO_INLINE") inline fun VideoFile.toTelegramMediaVideo( text: String? = null, - parseMode: ParseMode? = null + parseMode: ParseMode? = null, + spoilered: Boolean = false ) = TelegramMediaVideo( fileId, text, parseMode, + spoilered, width, height, duration, @@ -47,10 +49,12 @@ inline fun VideoFile.toTelegramMediaVideo( @Suppress("NOTHING_TO_INLINE") inline fun VideoFile.toTelegramMediaVideo( - textSources: TextSourcesList + textSources: TextSourcesList, + spoilered: Boolean = false ) = TelegramMediaVideo( fileId, textSources, + spoilered, width, height, duration, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/MediaGroupMemberTelegramMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/MediaGroupMemberTelegramMedia.kt index 782f9b0799..64a8287081 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/MediaGroupMemberTelegramMedia.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/MediaGroupMemberTelegramMedia.kt @@ -20,4 +20,4 @@ sealed interface AudioMediaGroupMemberTelegramMedia: MediaGroupMemberTelegramMed sealed interface DocumentMediaGroupMemberTelegramMedia: MediaGroupMemberTelegramMedia @Serializable(MediaGroupMemberTelegramMediaSerializer::class) -sealed interface VisualMediaGroupMemberTelegramMedia : MediaGroupMemberTelegramMedia +sealed interface VisualMediaGroupMemberTelegramMedia : MediaGroupMemberTelegramMedia, SpoilerableTelegramMedia diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/SpoilerableTelegramMedia.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/SpoilerableTelegramMedia.kt new file mode 100644 index 0000000000..d54b6e4c77 --- /dev/null +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/SpoilerableTelegramMedia.kt @@ -0,0 +1,5 @@ +package dev.inmo.tgbotapi.types.media + +import dev.inmo.tgbotapi.abstracts.SpoilerableData + +sealed interface SpoilerableTelegramMedia : TelegramMedia, SpoilerableData diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaAnimation.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaAnimation.kt index 557f8f7107..7f73206e76 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaAnimation.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaAnimation.kt @@ -18,15 +18,17 @@ fun TelegramMediaAnimation( file: InputFile, text: String? = null, parseMode: ParseMode? = null, + spoilered: Boolean = false, width: Int? = null, height: Int? = null, duration: Long? = null, thumb: InputFile? = null -) = TelegramMediaAnimation(file, text, parseMode, null, width, height, duration, thumb) +) = TelegramMediaAnimation(file, text, parseMode, null, spoilered, width, height, duration, thumb) fun TelegramMediaAnimation( file: InputFile, entities: TextSourcesList, + spoilered: Boolean = false, width: Int? = null, height: Int? = null, duration: Long? = null, @@ -36,6 +38,7 @@ fun TelegramMediaAnimation( entities.makeString(), null, entities.toRawMessageEntities(), + spoilered, width, height, duration, @@ -51,11 +54,13 @@ data class TelegramMediaAnimation internal constructor( override val parseMode: ParseMode? = null, @SerialName(captionEntitiesField) private val rawEntities: List? = null, + @SerialName(hasSpoilerField) + override val spoilered: Boolean = false, override val width: Int? = null, override val height: Int? = null, override val duration: Long? = null, override val thumb: InputFile? = null -) : TelegramMedia, SizedTelegramMedia, DuratedTelegramMedia, ThumbedTelegramMedia, TextedOutput { +) : TelegramMedia, SizedTelegramMedia, DuratedTelegramMedia, ThumbedTelegramMedia, TextedOutput, SpoilerableTelegramMedia { override val type: String = "animation" override val textSources: TextSourcesList? by lazy { rawEntities ?.asTextSources(text ?: return@lazy null) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaPhoto.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaPhoto.kt index b66a07c987..5678e2f35f 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaPhoto.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaPhoto.kt @@ -18,13 +18,15 @@ internal const val photoTelegramMediaType = "photo" fun TelegramMediaPhoto( file: InputFile, text: String? = null, - parseMode: ParseMode? = null -) = TelegramMediaPhoto(file, text, parseMode, null) + parseMode: ParseMode? = null, + spoilered: Boolean = false +) = TelegramMediaPhoto(file, text, parseMode, null, spoilered) fun TelegramMediaPhoto( file: InputFile, - entities: TextSourcesList -) = TelegramMediaPhoto(file, entities.makeString(), null, entities.toRawMessageEntities()) + entities: TextSourcesList, + spoilered: Boolean = false +) = TelegramMediaPhoto(file, entities.makeString(), null, entities.toRawMessageEntities(), spoilered) @Serializable data class TelegramMediaPhoto internal constructor( @@ -34,7 +36,9 @@ data class TelegramMediaPhoto internal constructor( @SerialName(parseModeField) override val parseMode: ParseMode? = null, @SerialName(captionEntitiesField) - private val rawEntities: List? = null + private val rawEntities: List? = null, + @SerialName(hasSpoilerField) + override val spoilered: Boolean = false, ) : TelegramMedia, VisualMediaGroupMemberTelegramMedia { override val type: String = photoTelegramMediaType override val textSources: TextSourcesList? by lazy { @@ -50,16 +54,20 @@ data class TelegramMediaPhoto internal constructor( fun PhotoSize.toTelegramMediaPhoto( text: String? = null, - parseMode: ParseMode? = null + parseMode: ParseMode? = null, + spoilered: Boolean = false ): TelegramMediaPhoto = TelegramMediaPhoto( fileId, text, - parseMode + parseMode, + spoilered ) fun PhotoSize.toTelegramMediaPhoto( - textSources: TextSourcesList = emptyList() + textSources: TextSourcesList = emptyList(), + spoilered: Boolean = false ): TelegramMediaPhoto = TelegramMediaPhoto( fileId, - textSources + textSources, + spoilered ) diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaVideo.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaVideo.kt index c5cb541938..3999b118e1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaVideo.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/media/TelegramMediaVideo.kt @@ -18,20 +18,22 @@ fun TelegramMediaVideo( file: InputFile, text: String? = null, parseMode: ParseMode? = null, + spoilered: Boolean = false, width: Int? = null, height: Int? = null, duration: Long? = null, thumb: InputFile? = null -) = TelegramMediaVideo(file, text, parseMode, null, width, height, duration, thumb) +) = TelegramMediaVideo(file, text, parseMode, null, spoilered, width, height, duration, thumb) fun TelegramMediaVideo( file: InputFile, entities: TextSourcesList, + spoilered: Boolean = false, width: Int? = null, height: Int? = null, duration: Long? = null, thumb: InputFile? = null -) = TelegramMediaVideo(file, entities.makeString(), null, entities.toRawMessageEntities(), width, height, duration, thumb) +) = TelegramMediaVideo(file, entities.makeString(), null, entities.toRawMessageEntities(), spoilered, width, height, duration, thumb) @Serializable data class TelegramMediaVideo internal constructor ( @@ -42,6 +44,8 @@ data class TelegramMediaVideo internal constructor ( override val parseMode: ParseMode? = null, @SerialName(captionEntitiesField) private val rawEntities: List? = null, + @SerialName(hasSpoilerField) + override val spoilered: Boolean = false, override val width: Int? = null, override val height: Int? = null, override val duration: Long? = null, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/Abstracts.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/Abstracts.kt index d6c60b1748..89b9ad92d0 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/Abstracts.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/Abstracts.kt @@ -1,5 +1,6 @@ package dev.inmo.tgbotapi.types.message.content +import dev.inmo.tgbotapi.abstracts.SpoilerableData import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.types.ChatIdentifier @@ -119,9 +120,7 @@ sealed interface MediaContent: MessageContent { fun asTelegramMedia(): TelegramMedia } -sealed interface SpoilerableMediaContent : MediaContent { - val spoilered: Boolean -} +sealed interface SpoilerableMediaContent : MediaContent, SpoilerableData @ClassCastsIncluded sealed interface ResendableContent { diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/AnimationContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/AnimationContent.kt index 63b9d77466..cd7df6d9f1 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/AnimationContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/AnimationContent.kt @@ -34,6 +34,7 @@ data class AnimationContent( media.fileId, media.thumb ?.fileId, textSources, + spoilered, media.duration, media.width, media.height, @@ -48,6 +49,7 @@ data class AnimationContent( override fun asTelegramMedia(): TelegramMediaAnimation = TelegramMediaAnimation( media.fileId, textSources, + spoilered, media.width, media.height, media.duration, diff --git a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/PhotoContent.kt b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/PhotoContent.kt index 497b5209b3..8b3e98c1ee 100644 --- a/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/PhotoContent.kt +++ b/tgbotapi.core/src/commonMain/kotlin/dev/inmo/tgbotapi/types/message/content/PhotoContent.kt @@ -34,6 +34,7 @@ data class PhotoContent( chatId, media.fileId, textSources, + spoilered, messageThreadId, disableNotification, protectContent, @@ -44,5 +45,5 @@ data class PhotoContent( override fun toMediaGroupMemberTelegramMedia(): TelegramMediaPhoto = asTelegramMedia() - override fun asTelegramMedia(): TelegramMediaPhoto = media.toTelegramMediaPhoto(textSources) + override fun asTelegramMedia(): TelegramMediaPhoto = media.toTelegramMediaPhoto(textSources, spoilered) }