mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2025-09-16 13:49:26 +00:00
fixes of build
This commit is contained in:
@@ -63,13 +63,13 @@ sealed interface ReplyInfo {
|
||||
) : Content
|
||||
|
||||
@Serializable
|
||||
data class Media<T>(
|
||||
data class Media(
|
||||
override val origin: MessageOrigin,
|
||||
override val chat: SuperPublicChat?,
|
||||
override val messageMeta: Message.MetaInfo?,
|
||||
override val spoilered: Boolean,
|
||||
override val content: T
|
||||
) : Content, SpoilerableData where T: ContentVariant, T : TelegramMediaFile
|
||||
override val content: MediaContentVariant
|
||||
) : Content, SpoilerableData
|
||||
}
|
||||
|
||||
@Serializable
|
||||
@@ -133,7 +133,7 @@ sealed interface ReplyInfo {
|
||||
|
||||
return content ?.let {
|
||||
when (it) {
|
||||
is TelegramMediaFile -> {
|
||||
is MediaContentVariant -> {
|
||||
Content.Media(
|
||||
origin,
|
||||
chat,
|
||||
|
@@ -24,4 +24,4 @@ data class AnimationFile(
|
||||
@SerialName(fileSizeField)
|
||||
override val fileSize: Long? = null
|
||||
) : TelegramMediaFile, MimedMediaFile, ThumbedMediaFile, PlayableMediaFile, CustomNamedMediaFile, SizedMediaFile,
|
||||
ReplyInfo.External.ContentVariant
|
||||
MediaContentVariant
|
||||
|
@@ -28,6 +28,6 @@ data class AudioFile(
|
||||
@SerialName(thumbnailField)
|
||||
override val thumbnail: PhotoSize? = null
|
||||
) : TelegramMediaFile, CustomNamedMediaFile, MimedMediaFile, ThumbedMediaFile, PlayableMediaFile, TitledMediaFile,
|
||||
Performerable, ReplyInfo.External.ContentVariant
|
||||
Performerable, MediaContentVariant
|
||||
|
||||
fun AudioFile.asVoiceFile() = VoiceFile(fileId, fileUniqueId, duration, mimeType, fileSize)
|
||||
|
@@ -20,7 +20,7 @@ data class DocumentFile(
|
||||
override val mimeType: MimeType? = null,
|
||||
@SerialName(fileNameField)
|
||||
override val fileName: String? = null
|
||||
) : TelegramMediaFile, MimedMediaFile, ThumbedMediaFile, CustomNamedMediaFile, ReplyInfo.External.ContentVariant
|
||||
) : TelegramMediaFile, MimedMediaFile, ThumbedMediaFile, CustomNamedMediaFile, MediaContentVariant
|
||||
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
inline fun TelegramMediaFile.asDocumentFile() = if (this is DocumentFile) {
|
||||
|
@@ -0,0 +1,5 @@
|
||||
package dev.inmo.tgbotapi.types.files
|
||||
|
||||
import dev.inmo.tgbotapi.types.ReplyInfo
|
||||
|
||||
interface MediaContentVariant : ReplyInfo.External.ContentVariant, TelegramMediaFile
|
@@ -12,7 +12,22 @@ import kotlin.jvm.JvmInline
|
||||
@JvmInline
|
||||
value class Photo(
|
||||
val photos: List<PhotoSize>
|
||||
) : List<PhotoSize> by photos, ReplyInfo.External.ContentVariant
|
||||
) : List<PhotoSize> by photos, MediaContentVariant {
|
||||
val biggest: PhotoSize
|
||||
get() = biggest()!!
|
||||
override val fileId: FileId
|
||||
get() = biggest.fileId
|
||||
override val fileUniqueId: FileUniqueId
|
||||
get() = biggest.fileUniqueId
|
||||
override val fileSize: Long?
|
||||
get() = biggest.fileSize
|
||||
|
||||
init {
|
||||
require(photos.isNotEmpty()) {
|
||||
"Photos collection must not be empty"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Photo.biggest(): PhotoSize? = maxByOrNull {
|
||||
it.resolution
|
||||
|
@@ -34,7 +34,7 @@ data class StickerSurrogate(
|
||||
|
||||
// TODO:: Serializer
|
||||
@Serializable(StickerSerializer::class)
|
||||
sealed interface Sticker : TelegramMediaFile, SizedMediaFile, ThumbedMediaFile, ReplyInfo.External.ContentVariant {
|
||||
sealed interface Sticker : TelegramMediaFile, SizedMediaFile, ThumbedMediaFile, MediaContentVariant {
|
||||
val emoji: String?
|
||||
val stickerSetName: StickerSetName?
|
||||
val stickerFormat: StickerFormat
|
||||
|
@@ -30,7 +30,7 @@ data class VideoFile(
|
||||
@SerialName(fileSizeField)
|
||||
override val fileSize: Long? = null
|
||||
) : TelegramMediaFile, CustomNamedMediaFile, MimedMediaFile, ThumbedMediaFile, PlayableMediaFile, SizedMediaFile,
|
||||
ReplyInfo.External.ContentVariant
|
||||
MediaContentVariant
|
||||
|
||||
@Suppress("NOTHING_TO_INLINE")
|
||||
inline fun VideoFile.toTelegramMediaVideo(
|
||||
|
@@ -18,7 +18,7 @@ data class VideoNoteFile(
|
||||
override val thumbnail: PhotoSize? = null,
|
||||
@SerialName(fileSizeField)
|
||||
override val fileSize: Long? = null
|
||||
) : TelegramMediaFile, ThumbedMediaFile, PlayableMediaFile, SizedMediaFile, ReplyInfo.External.ContentVariant {
|
||||
) : TelegramMediaFile, ThumbedMediaFile, PlayableMediaFile, SizedMediaFile, MediaContentVariant {
|
||||
override val height: Int
|
||||
get() = width
|
||||
}
|
||||
|
@@ -19,7 +19,7 @@ data class VoiceFile(
|
||||
override val mimeType: MimeType? = null,
|
||||
@SerialName(fileSizeField)
|
||||
override val fileSize: Long? = null
|
||||
) : TelegramMediaFile, MimedMediaFile, PlayableMediaFile, ReplyInfo.External.ContentVariant
|
||||
) : TelegramMediaFile, MimedMediaFile, PlayableMediaFile, MediaContentVariant
|
||||
|
||||
fun VoiceFile.asAudioFile(
|
||||
performer: String? = null,
|
||||
|
@@ -36,6 +36,6 @@ data class ChannelContentMessageImpl<T: MessageContent>(
|
||||
authorSignature: AuthorSignature?,
|
||||
mediaGroupId: MediaGroupIdentifier?,
|
||||
) : this(
|
||||
messageId, chat, content, date, editDate, hasProtectedContent, forwardInfo.messageOrigin(), replyTo, replyMarkup, senderBot, authorSignature, mediaGroupId
|
||||
messageId, chat, content, date, editDate, hasProtectedContent, forwardInfo.messageOrigin(), replyTo ?.let { ReplyInfo.Internal(it) }, replyMarkup, senderBot, authorSignature, mediaGroupId
|
||||
)
|
||||
}
|
||||
|
@@ -83,6 +83,7 @@ fun MessageOrigin.forwardInfo() = when(this) {
|
||||
date,
|
||||
user
|
||||
)
|
||||
is MessageOrigin.Unknown -> null
|
||||
}
|
||||
|
||||
fun ForwardInfo.messageOrigin() = when (this) {
|
||||
|
@@ -40,7 +40,7 @@ data class ConnectedFromChannelGroupContentMessageImpl<T : MessageContent>(
|
||||
authorSignature: AuthorSignature?,
|
||||
mediaGroupId: MediaGroupIdentifier?,
|
||||
) : this(
|
||||
chat, channel, messageId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo, replyMarkup, content, senderBot, authorSignature, mediaGroupId
|
||||
chat, channel, messageId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo ?.let { ReplyInfo.Internal(it) }, replyMarkup, content, senderBot, authorSignature, mediaGroupId
|
||||
)
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ data class UnconnectedFromChannelGroupContentMessageImpl<T: MessageContent>(
|
||||
authorSignature: AuthorSignature?,
|
||||
mediaGroupId: MediaGroupIdentifier?,
|
||||
) : this(
|
||||
chat, channel, messageId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo, replyMarkup, content, senderBot, authorSignature, mediaGroupId
|
||||
chat, channel, messageId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo ?.let { ReplyInfo.Internal(it) }, replyMarkup, content, senderBot, authorSignature, mediaGroupId
|
||||
)
|
||||
}
|
||||
|
||||
@@ -106,7 +106,7 @@ data class AnonymousGroupContentMessageImpl<T : MessageContent>(
|
||||
authorSignature: AuthorSignature?,
|
||||
mediaGroupId: MediaGroupIdentifier?,
|
||||
) : this(
|
||||
chat, messageId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo, replyMarkup, content, senderBot, authorSignature, mediaGroupId
|
||||
chat, messageId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo ?.let { ReplyInfo.Internal(it) }, replyMarkup, content, senderBot, authorSignature, mediaGroupId
|
||||
)
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ data class CommonGroupContentMessageImpl<T : MessageContent>(
|
||||
senderBot: CommonBot?,
|
||||
mediaGroupId: MediaGroupIdentifier?,
|
||||
) : this(
|
||||
chat, messageId, from, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo, replyMarkup, content, senderBot, mediaGroupId
|
||||
chat, messageId, from, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo ?.let { ReplyInfo.Internal(it) }, replyMarkup, content, senderBot, mediaGroupId
|
||||
)
|
||||
}
|
||||
|
||||
@@ -174,7 +174,7 @@ data class FromChannelForumContentMessageImpl<T: MessageContent>(
|
||||
authorSignature: AuthorSignature?,
|
||||
mediaGroupId: MediaGroupIdentifier?,
|
||||
) : this(
|
||||
chat, channel, messageId, threadId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo, replyMarkup, content, senderBot, authorSignature, mediaGroupId
|
||||
chat, channel, messageId, threadId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo ?.let { ReplyInfo.Internal(it) }, replyMarkup, content, senderBot, authorSignature, mediaGroupId
|
||||
)
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ data class AnonymousForumContentMessageImpl<T : MessageContent>(
|
||||
authorSignature: AuthorSignature?,
|
||||
mediaGroupId: MediaGroupIdentifier?,
|
||||
) : this(
|
||||
chat, messageId, threadId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo, replyMarkup, content, senderBot, authorSignature, mediaGroupId
|
||||
chat, messageId, threadId, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo ?.let { ReplyInfo.Internal(it) }, replyMarkup, content, senderBot, authorSignature, mediaGroupId
|
||||
)
|
||||
}
|
||||
|
||||
@@ -242,6 +242,6 @@ data class CommonForumContentMessageImpl<T : MessageContent>(
|
||||
senderBot: CommonBot?,
|
||||
mediaGroupId: MediaGroupIdentifier?,
|
||||
) : this(
|
||||
chat, messageId, threadId, from, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo, replyMarkup, content, senderBot, mediaGroupId
|
||||
chat, messageId, threadId, from, date, forwardInfo.messageOrigin(), editDate, hasProtectedContent, replyTo ?.let { ReplyInfo.Internal(it) }, replyMarkup, content, senderBot, mediaGroupId
|
||||
)
|
||||
}
|
||||
|
@@ -21,7 +21,7 @@ sealed interface MessageOrigin {
|
||||
@Serializable
|
||||
data class User(
|
||||
@SerialName(senderUserField)
|
||||
val user: PreviewUser,
|
||||
val user: dev.inmo.tgbotapi.types.chat.User,
|
||||
@SerialName(dateField)
|
||||
override val date: TelegramDate
|
||||
) : MessageOrigin {
|
||||
|
@@ -38,6 +38,6 @@ data class PrivateContentMessageImpl<T: MessageContent>(
|
||||
senderBot: CommonBot?,
|
||||
mediaGroupId: MediaGroupIdentifier?,
|
||||
) : this(
|
||||
messageId, from, chat, content, date, editDate, hasProtectedContent, forwardInfo.messageOrigin(), replyTo, replyMarkup, senderBot, mediaGroupId
|
||||
messageId, from, chat, content, date, editDate, hasProtectedContent, forwardInfo.messageOrigin(), replyTo ?.let { ReplyInfo.Internal(it) }, replyMarkup, senderBot, mediaGroupId
|
||||
)
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package dev.inmo.tgbotapi
|
||||
|
||||
import dev.inmo.tgbotapi.requests.abstracts.toInputFile
|
||||
import dev.inmo.tgbotapi.types.files.Photo
|
||||
import dev.inmo.tgbotapi.types.media.MediaGroupMemberTelegramMediaSerializer
|
||||
import dev.inmo.tgbotapi.types.files.PhotoSize
|
||||
import dev.inmo.tgbotapi.types.message.content.PhotoContent
|
||||
@@ -20,8 +21,10 @@ class SimpleInputFilesTest {
|
||||
@Test
|
||||
fun test_that_creating_of_photo_and_converting_to_input_media_working_correctly() {
|
||||
val photoContent = PhotoContent(
|
||||
listOf(
|
||||
PhotoSize("example_file_id".toInputFile(), "example_unique_file_id", 100, 100, 100)
|
||||
Photo(
|
||||
listOf(
|
||||
PhotoSize("example_file_id".toInputFile(), "example_unique_file_id", 100, 100, 100)
|
||||
)
|
||||
)
|
||||
)
|
||||
val inputMedia = photoContent.toMediaGroupMemberTelegramMedia()
|
||||
|
Reference in New Issue
Block a user