1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2025-09-16 13:49:26 +00:00
This commit is contained in:
2023-05-18 12:59:35 +06:00
parent cb4c48d025
commit ed2c447730
11 changed files with 667 additions and 77 deletions

View File

@@ -1,6 +1,7 @@
package dev.inmo.tgbotapi.types.message.content
import dev.inmo.tgbotapi.abstracts.SpoilerableData
import dev.inmo.tgbotapi.abstracts.TextedInput
import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded
import dev.inmo.tgbotapi.requests.abstracts.Request
import dev.inmo.tgbotapi.types.ChatIdentifier
@@ -51,6 +52,18 @@ sealed interface MessageContent: ResendableContent {
additionalBuilder()
}
polymorphic(TextedContent::class) {
subclass(TextContent::class)
subclass(VoiceContent::class)
subclass(MediaGroupContent::class)
subclass(AudioContent::class)
subclass(DocumentContent::class)
subclass(VideoContent::class)
subclass(PhotoContent::class)
subclass(AnimationContent::class)
}
polymorphic(MediaCollectionContent::class) {
subclass(PhotoContent::class)
@@ -115,6 +128,11 @@ sealed interface MediaCollectionContent<T: TelegramMediaFile>: MessageContent, M
val mediaCollection: List<T>
}
/**
* All the subtypes of this content will have [text] and [textSources] fields
*/
sealed interface TextedContent : MessageContent, TextedInput
sealed interface MediaContent: MessageContent {
val media: TelegramMediaFile
fun asTelegramMedia(): TelegramMedia

View File

@@ -22,7 +22,7 @@ sealed interface DocumentMediaGroupPartContent : MediaGroupPartContent {
override fun toMediaGroupMemberTelegramMedia(): DocumentMediaGroupMemberTelegramMedia
}
sealed interface TextedMediaContent : MediaContent, TextedInput
sealed interface TextedMediaContent : TextedContent, MediaContent
sealed interface MediaGroupCollectionContent<T : MediaGroupPartContent> : TextedMediaContent {
@Serializable

View File

@@ -15,7 +15,7 @@ import kotlinx.serialization.Serializable
data class TextContent(
override val text: String,
override val textSources: TextSourcesList = emptyList(),
) : MessageContent, TextedInput {
) : TextedContent {
override fun createResend(
chatId: ChatIdentifier,
messageThreadId: MessageThreadId?,

View File

@@ -2,6 +2,8 @@ package dev.inmo.tgbotapi.types.message.content
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
typealias TextedMessage = CommonMessage<TextedContent>
typealias InvoiceMessage = CommonMessage<InvoiceContent>
typealias VenueMessage = CommonMessage<VenueContent>
typealias GameMessage = CommonMessage<GameContent>