1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-11-26 03:58:44 +00:00

add spoilered in telegrammedia

This commit is contained in:
InsanusMokrassar 2022-12-30 20:28:22 +06:00
parent febd6ce63c
commit 8b5da90e28
11 changed files with 56 additions and 23 deletions

View File

@ -0,0 +1,5 @@
package dev.inmo.tgbotapi.abstracts
interface SpoilerableData {
val spoilered: Boolean
}

View File

@ -1,5 +1,5 @@
package dev.inmo.tgbotapi.requests.send.abstracts package dev.inmo.tgbotapi.requests.send.abstracts
interface OptionallyWithSpoilerRequest { import dev.inmo.tgbotapi.abstracts.SpoilerableData
val spoilered: Boolean
} interface OptionallyWithSpoilerRequest : SpoilerableData

View File

@ -34,11 +34,13 @@ data class VideoFile(
@Suppress("NOTHING_TO_INLINE") @Suppress("NOTHING_TO_INLINE")
inline fun VideoFile.toTelegramMediaVideo( inline fun VideoFile.toTelegramMediaVideo(
text: String? = null, text: String? = null,
parseMode: ParseMode? = null parseMode: ParseMode? = null,
spoilered: Boolean = false
) = TelegramMediaVideo( ) = TelegramMediaVideo(
fileId, fileId,
text, text,
parseMode, parseMode,
spoilered,
width, width,
height, height,
duration, duration,
@ -47,10 +49,12 @@ inline fun VideoFile.toTelegramMediaVideo(
@Suppress("NOTHING_TO_INLINE") @Suppress("NOTHING_TO_INLINE")
inline fun VideoFile.toTelegramMediaVideo( inline fun VideoFile.toTelegramMediaVideo(
textSources: TextSourcesList textSources: TextSourcesList,
spoilered: Boolean = false
) = TelegramMediaVideo( ) = TelegramMediaVideo(
fileId, fileId,
textSources, textSources,
spoilered,
width, width,
height, height,
duration, duration,

View File

@ -20,4 +20,4 @@ sealed interface AudioMediaGroupMemberTelegramMedia: MediaGroupMemberTelegramMed
sealed interface DocumentMediaGroupMemberTelegramMedia: MediaGroupMemberTelegramMedia sealed interface DocumentMediaGroupMemberTelegramMedia: MediaGroupMemberTelegramMedia
@Serializable(MediaGroupMemberTelegramMediaSerializer::class) @Serializable(MediaGroupMemberTelegramMediaSerializer::class)
sealed interface VisualMediaGroupMemberTelegramMedia : MediaGroupMemberTelegramMedia sealed interface VisualMediaGroupMemberTelegramMedia : MediaGroupMemberTelegramMedia, SpoilerableTelegramMedia

View File

@ -0,0 +1,5 @@
package dev.inmo.tgbotapi.types.media
import dev.inmo.tgbotapi.abstracts.SpoilerableData
sealed interface SpoilerableTelegramMedia : TelegramMedia, SpoilerableData

View File

@ -18,15 +18,17 @@ fun TelegramMediaAnimation(
file: InputFile, file: InputFile,
text: String? = null, text: String? = null,
parseMode: ParseMode? = null, parseMode: ParseMode? = null,
spoilered: Boolean = false,
width: Int? = null, width: Int? = null,
height: Int? = null, height: Int? = null,
duration: Long? = null, duration: Long? = null,
thumb: InputFile? = 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( fun TelegramMediaAnimation(
file: InputFile, file: InputFile,
entities: TextSourcesList, entities: TextSourcesList,
spoilered: Boolean = false,
width: Int? = null, width: Int? = null,
height: Int? = null, height: Int? = null,
duration: Long? = null, duration: Long? = null,
@ -36,6 +38,7 @@ fun TelegramMediaAnimation(
entities.makeString(), entities.makeString(),
null, null,
entities.toRawMessageEntities(), entities.toRawMessageEntities(),
spoilered,
width, width,
height, height,
duration, duration,
@ -51,11 +54,13 @@ data class TelegramMediaAnimation internal constructor(
override val parseMode: ParseMode? = null, override val parseMode: ParseMode? = null,
@SerialName(captionEntitiesField) @SerialName(captionEntitiesField)
private val rawEntities: List<RawMessageEntity>? = null, private val rawEntities: List<RawMessageEntity>? = null,
@SerialName(hasSpoilerField)
override val spoilered: Boolean = false,
override val width: Int? = null, override val width: Int? = null,
override val height: Int? = null, override val height: Int? = null,
override val duration: Long? = null, override val duration: Long? = null,
override val thumb: InputFile? = null override val thumb: InputFile? = null
) : TelegramMedia, SizedTelegramMedia, DuratedTelegramMedia, ThumbedTelegramMedia, TextedOutput { ) : TelegramMedia, SizedTelegramMedia, DuratedTelegramMedia, ThumbedTelegramMedia, TextedOutput, SpoilerableTelegramMedia {
override val type: String = "animation" override val type: String = "animation"
override val textSources: TextSourcesList? by lazy { override val textSources: TextSourcesList? by lazy {
rawEntities ?.asTextSources(text ?: return@lazy null) rawEntities ?.asTextSources(text ?: return@lazy null)

View File

@ -18,13 +18,15 @@ internal const val photoTelegramMediaType = "photo"
fun TelegramMediaPhoto( fun TelegramMediaPhoto(
file: InputFile, file: InputFile,
text: String? = null, text: String? = null,
parseMode: ParseMode? = null parseMode: ParseMode? = null,
) = TelegramMediaPhoto(file, text, parseMode, null) spoilered: Boolean = false
) = TelegramMediaPhoto(file, text, parseMode, null, spoilered)
fun TelegramMediaPhoto( fun TelegramMediaPhoto(
file: InputFile, file: InputFile,
entities: TextSourcesList entities: TextSourcesList,
) = TelegramMediaPhoto(file, entities.makeString(), null, entities.toRawMessageEntities()) spoilered: Boolean = false
) = TelegramMediaPhoto(file, entities.makeString(), null, entities.toRawMessageEntities(), spoilered)
@Serializable @Serializable
data class TelegramMediaPhoto internal constructor( data class TelegramMediaPhoto internal constructor(
@ -34,7 +36,9 @@ data class TelegramMediaPhoto internal constructor(
@SerialName(parseModeField) @SerialName(parseModeField)
override val parseMode: ParseMode? = null, override val parseMode: ParseMode? = null,
@SerialName(captionEntitiesField) @SerialName(captionEntitiesField)
private val rawEntities: List<RawMessageEntity>? = null private val rawEntities: List<RawMessageEntity>? = null,
@SerialName(hasSpoilerField)
override val spoilered: Boolean = false,
) : TelegramMedia, VisualMediaGroupMemberTelegramMedia { ) : TelegramMedia, VisualMediaGroupMemberTelegramMedia {
override val type: String = photoTelegramMediaType override val type: String = photoTelegramMediaType
override val textSources: TextSourcesList? by lazy { override val textSources: TextSourcesList? by lazy {
@ -50,16 +54,20 @@ data class TelegramMediaPhoto internal constructor(
fun PhotoSize.toTelegramMediaPhoto( fun PhotoSize.toTelegramMediaPhoto(
text: String? = null, text: String? = null,
parseMode: ParseMode? = null parseMode: ParseMode? = null,
spoilered: Boolean = false
): TelegramMediaPhoto = TelegramMediaPhoto( ): TelegramMediaPhoto = TelegramMediaPhoto(
fileId, fileId,
text, text,
parseMode parseMode,
spoilered
) )
fun PhotoSize.toTelegramMediaPhoto( fun PhotoSize.toTelegramMediaPhoto(
textSources: TextSourcesList = emptyList() textSources: TextSourcesList = emptyList(),
spoilered: Boolean = false
): TelegramMediaPhoto = TelegramMediaPhoto( ): TelegramMediaPhoto = TelegramMediaPhoto(
fileId, fileId,
textSources textSources,
spoilered
) )

View File

@ -18,20 +18,22 @@ fun TelegramMediaVideo(
file: InputFile, file: InputFile,
text: String? = null, text: String? = null,
parseMode: ParseMode? = null, parseMode: ParseMode? = null,
spoilered: Boolean = false,
width: Int? = null, width: Int? = null,
height: Int? = null, height: Int? = null,
duration: Long? = null, duration: Long? = null,
thumb: InputFile? = 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( fun TelegramMediaVideo(
file: InputFile, file: InputFile,
entities: TextSourcesList, entities: TextSourcesList,
spoilered: Boolean = false,
width: Int? = null, width: Int? = null,
height: Int? = null, height: Int? = null,
duration: Long? = null, duration: Long? = null,
thumb: InputFile? = 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 @Serializable
data class TelegramMediaVideo internal constructor ( data class TelegramMediaVideo internal constructor (
@ -42,6 +44,8 @@ data class TelegramMediaVideo internal constructor (
override val parseMode: ParseMode? = null, override val parseMode: ParseMode? = null,
@SerialName(captionEntitiesField) @SerialName(captionEntitiesField)
private val rawEntities: List<RawMessageEntity>? = null, private val rawEntities: List<RawMessageEntity>? = null,
@SerialName(hasSpoilerField)
override val spoilered: Boolean = false,
override val width: Int? = null, override val width: Int? = null,
override val height: Int? = null, override val height: Int? = null,
override val duration: Long? = null, override val duration: Long? = null,

View File

@ -1,5 +1,6 @@
package dev.inmo.tgbotapi.types.message.content package dev.inmo.tgbotapi.types.message.content
import dev.inmo.tgbotapi.abstracts.SpoilerableData
import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded
import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.abstracts.Request
import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.ChatIdentifier
@ -119,9 +120,7 @@ sealed interface MediaContent: MessageContent {
fun asTelegramMedia(): TelegramMedia fun asTelegramMedia(): TelegramMedia
} }
sealed interface SpoilerableMediaContent : MediaContent { sealed interface SpoilerableMediaContent : MediaContent, SpoilerableData
val spoilered: Boolean
}
@ClassCastsIncluded @ClassCastsIncluded
sealed interface ResendableContent { sealed interface ResendableContent {

View File

@ -34,6 +34,7 @@ data class AnimationContent(
media.fileId, media.fileId,
media.thumb ?.fileId, media.thumb ?.fileId,
textSources, textSources,
spoilered,
media.duration, media.duration,
media.width, media.width,
media.height, media.height,
@ -48,6 +49,7 @@ data class AnimationContent(
override fun asTelegramMedia(): TelegramMediaAnimation = TelegramMediaAnimation( override fun asTelegramMedia(): TelegramMediaAnimation = TelegramMediaAnimation(
media.fileId, media.fileId,
textSources, textSources,
spoilered,
media.width, media.width,
media.height, media.height,
media.duration, media.duration,

View File

@ -34,6 +34,7 @@ data class PhotoContent(
chatId, chatId,
media.fileId, media.fileId,
textSources, textSources,
spoilered,
messageThreadId, messageThreadId,
disableNotification, disableNotification,
protectContent, protectContent,
@ -44,5 +45,5 @@ data class PhotoContent(
override fun toMediaGroupMemberTelegramMedia(): TelegramMediaPhoto = asTelegramMedia() override fun toMediaGroupMemberTelegramMedia(): TelegramMediaPhoto = asTelegramMedia()
override fun asTelegramMedia(): TelegramMediaPhoto = media.toTelegramMediaPhoto(textSources) override fun asTelegramMedia(): TelegramMediaPhoto = media.toTelegramMediaPhoto(textSources, spoilered)
} }