mirror of
				https://github.com/InsanusMokrassar/TelegramBotAPI.git
				synced 2025-10-30 19:50:12 +00:00 
			
		
		
		
	add support of external_reply in RawMessage
This commit is contained in:
		| @@ -16,4 +16,4 @@ data class Contact( | |||||||
|     val userId: UserId? = null, |     val userId: UserId? = null, | ||||||
|     @SerialName(vcardField) |     @SerialName(vcardField) | ||||||
|     override val vcard: String? = null |     override val vcard: String? = null | ||||||
| ) : CommonContactData, ExternalReplyInfo.ContentVariant | ) : CommonContactData, ReplyInfo.External.ContentVariant | ||||||
|   | |||||||
| @@ -1,166 +0,0 @@ | |||||||
| package dev.inmo.tgbotapi.types |  | ||||||
|  |  | ||||||
| import dev.inmo.tgbotapi.abstracts.SpoilerableData |  | ||||||
| import dev.inmo.tgbotapi.types.chat.SuperPublicChat |  | ||||||
| import dev.inmo.tgbotapi.types.dice.Dice |  | ||||||
| import dev.inmo.tgbotapi.types.files.* |  | ||||||
| import dev.inmo.tgbotapi.types.games.Game |  | ||||||
| import dev.inmo.tgbotapi.types.games.RawGame |  | ||||||
| import dev.inmo.tgbotapi.types.giveaway.GiveawayPublicResults |  | ||||||
| import dev.inmo.tgbotapi.types.giveaway.ScheduledGiveaway |  | ||||||
| import dev.inmo.tgbotapi.types.location.Location |  | ||||||
| import dev.inmo.tgbotapi.types.message.MessageOrigin |  | ||||||
| import dev.inmo.tgbotapi.types.message.abstracts.Message |  | ||||||
| import dev.inmo.tgbotapi.types.payments.Invoice |  | ||||||
| import dev.inmo.tgbotapi.types.polls.Poll |  | ||||||
| import dev.inmo.tgbotapi.types.stories.Story |  | ||||||
| import dev.inmo.tgbotapi.types.venue.Venue |  | ||||||
| import dev.inmo.tgbotapi.utils.RiskFeature |  | ||||||
| import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded |  | ||||||
| import kotlinx.serialization.KSerializer |  | ||||||
| import kotlinx.serialization.SerialName |  | ||||||
| import kotlinx.serialization.Serializable |  | ||||||
| import kotlinx.serialization.descriptors.SerialDescriptor |  | ||||||
| import kotlinx.serialization.encoding.Decoder |  | ||||||
| import kotlinx.serialization.encoding.Encoder |  | ||||||
|  |  | ||||||
| @Serializable(ExternalReplyInfo.Companion::class) |  | ||||||
| @ClassCastsIncluded |  | ||||||
| sealed interface ExternalReplyInfo { |  | ||||||
|     val origin: MessageOrigin |  | ||||||
|     val chat: SuperPublicChat? |  | ||||||
|     val messageMeta: Message.MetaInfo? |  | ||||||
|  |  | ||||||
|     interface ContentVariant |  | ||||||
|  |  | ||||||
|     @Serializable |  | ||||||
|     data class Text( |  | ||||||
|         override val origin: MessageOrigin, |  | ||||||
|         override val chat: SuperPublicChat?, |  | ||||||
|         override val messageMeta: Message.MetaInfo?, |  | ||||||
|         val linkPreviewOptions: LinkPreviewOptions? |  | ||||||
|     ) : ExternalReplyInfo |  | ||||||
|  |  | ||||||
|     @Serializable(ExternalReplyInfo.Companion::class) |  | ||||||
|     sealed interface Content : ExternalReplyInfo { |  | ||||||
|         val content: ContentVariant |  | ||||||
|  |  | ||||||
|  |  | ||||||
|         @Serializable |  | ||||||
|         data class Simple( |  | ||||||
|             override val origin: MessageOrigin, |  | ||||||
|             override val chat: SuperPublicChat?, |  | ||||||
|             override val messageMeta: Message.MetaInfo?, |  | ||||||
|             override val content: ContentVariant |  | ||||||
|         ) : Content |  | ||||||
|  |  | ||||||
|         @Serializable |  | ||||||
|         data class Media<T>( |  | ||||||
|             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 |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Serializable |  | ||||||
|     private data class Surrogate( |  | ||||||
|         val origin: MessageOrigin, |  | ||||||
|         val chat: SuperPublicChat? = null, |  | ||||||
|         val message_id: MessageId? = null, |  | ||||||
|         val link_preview_options: LinkPreviewOptions? = null, |  | ||||||
|         val has_media_spoiler: Boolean? = null, |  | ||||||
|         private val story: Story? = null, |  | ||||||
|         private val audio: AudioFile? = null, |  | ||||||
|         private val document: DocumentFile? = null, |  | ||||||
|         private val animation: AnimationFile? = null, |  | ||||||
|         private val game: RawGame? = null, |  | ||||||
|         @Serializable(PhotoSerializer::class) |  | ||||||
|         private val photo: Photo? = null, |  | ||||||
|         private val sticker: Sticker? = null, |  | ||||||
|         private val video: VideoFile? = null, |  | ||||||
|         private val voice: VoiceFile? = null, |  | ||||||
|         private val video_note: VideoNoteFile? = null, |  | ||||||
|         private val contact: Contact? = null, |  | ||||||
|         private val location: Location? = null, |  | ||||||
|         private val venue: Venue? = null, |  | ||||||
|         private val poll: Poll? = null, |  | ||||||
|         private val invoice: Invoice? = null, |  | ||||||
|         private val dice: Dice? = null, |  | ||||||
|         private val giveaway: ScheduledGiveaway? = null, |  | ||||||
|         private val giveaway_winners: GiveawayPublicResults? = null, |  | ||||||
|     ) { |  | ||||||
|         val asExternalReplyInfo: ExternalReplyInfo |  | ||||||
|             get() { |  | ||||||
|                 val messageMeta = chat ?.let { |  | ||||||
|                     message_id ?.let { |  | ||||||
|                         Message.MetaInfo( |  | ||||||
|                             chat.id, |  | ||||||
|                             message_id |  | ||||||
|                         ) |  | ||||||
|                     } |  | ||||||
|                 } |  | ||||||
|                 val content: ContentVariant? = when { |  | ||||||
|                     story != null -> story |  | ||||||
|                     audio != null -> audio |  | ||||||
|                     video != null -> video |  | ||||||
|                     video_note != null -> video_note |  | ||||||
|                     animation != null -> animation |  | ||||||
|                     document != null -> document |  | ||||||
|                     voice != null -> voice |  | ||||||
|                     photo != null -> photo |  | ||||||
|                     sticker != null -> sticker |  | ||||||
|                     dice != null -> dice |  | ||||||
|                     game != null -> game.asGame |  | ||||||
|                     contact != null -> contact |  | ||||||
|                     location != null -> location |  | ||||||
|                     venue != null -> venue |  | ||||||
|                     poll != null -> poll |  | ||||||
|                     invoice != null -> invoice |  | ||||||
|                     giveaway != null -> giveaway |  | ||||||
|                     giveaway_winners != null -> giveaway_winners |  | ||||||
|                     else -> null |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 return content ?.let { |  | ||||||
|                     when (it) { |  | ||||||
|                         is TelegramMediaFile -> { |  | ||||||
|                             Content.Media( |  | ||||||
|                                 origin, |  | ||||||
|                                 chat, |  | ||||||
|                                 messageMeta, |  | ||||||
|                                 has_media_spoiler == true, |  | ||||||
|                                 it |  | ||||||
|                             ) |  | ||||||
|                         } |  | ||||||
|                         else -> Content.Simple( |  | ||||||
|                             origin, |  | ||||||
|                             chat, |  | ||||||
|                             messageMeta, |  | ||||||
|                             it |  | ||||||
|                         ) |  | ||||||
|                     } |  | ||||||
|                 } ?: Text( |  | ||||||
|                     origin, |  | ||||||
|                     chat, |  | ||||||
|                     messageMeta, |  | ||||||
|                     link_preview_options |  | ||||||
|                 ) |  | ||||||
|             } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @RiskFeature("This serializer currently support only deserialization, but not serialization") |  | ||||||
|     companion object : KSerializer<ExternalReplyInfo> { |  | ||||||
|         override val descriptor: SerialDescriptor |  | ||||||
|             get() = Surrogate.serializer().descriptor |  | ||||||
|  |  | ||||||
|         override fun deserialize(decoder: Decoder): ExternalReplyInfo { |  | ||||||
|             return Surrogate.serializer().deserialize(decoder).asExternalReplyInfo |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         override fun serialize(encoder: Encoder, value: ExternalReplyInfo) { |  | ||||||
|  |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -0,0 +1,175 @@ | |||||||
|  | package dev.inmo.tgbotapi.types | ||||||
|  |  | ||||||
|  | import dev.inmo.tgbotapi.abstracts.SpoilerableData | ||||||
|  | import dev.inmo.tgbotapi.types.chat.SuperPublicChat | ||||||
|  | import dev.inmo.tgbotapi.types.dice.Dice | ||||||
|  | import dev.inmo.tgbotapi.types.files.* | ||||||
|  | import dev.inmo.tgbotapi.types.games.RawGame | ||||||
|  | import dev.inmo.tgbotapi.types.giveaway.GiveawayPublicResults | ||||||
|  | import dev.inmo.tgbotapi.types.giveaway.ScheduledGiveaway | ||||||
|  | import dev.inmo.tgbotapi.types.location.Location | ||||||
|  | import dev.inmo.tgbotapi.types.message.MessageOrigin | ||||||
|  | import dev.inmo.tgbotapi.types.message.abstracts.AccessibleMessage | ||||||
|  | import dev.inmo.tgbotapi.types.message.abstracts.Message | ||||||
|  | import dev.inmo.tgbotapi.types.payments.Invoice | ||||||
|  | import dev.inmo.tgbotapi.types.polls.Poll | ||||||
|  | import dev.inmo.tgbotapi.types.stories.Story | ||||||
|  | import dev.inmo.tgbotapi.types.venue.Venue | ||||||
|  | import dev.inmo.tgbotapi.utils.RiskFeature | ||||||
|  | import dev.inmo.tgbotapi.utils.internal.ClassCastsIncluded | ||||||
|  | import kotlinx.serialization.KSerializer | ||||||
|  | import kotlinx.serialization.Serializable | ||||||
|  | import kotlinx.serialization.descriptors.SerialDescriptor | ||||||
|  | import kotlinx.serialization.encoding.Decoder | ||||||
|  | import kotlinx.serialization.encoding.Encoder | ||||||
|  |  | ||||||
|  | @ClassCastsIncluded | ||||||
|  | sealed interface ReplyInfo { | ||||||
|  |     val messageMeta: Message.MetaInfo? | ||||||
|  |  | ||||||
|  |     data class Internal( | ||||||
|  |         val message: AccessibleMessage | ||||||
|  |     ): ReplyInfo { | ||||||
|  |         override val messageMeta: Message.MetaInfo | ||||||
|  |             get() = message.metaInfo | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Serializable(External.Companion::class) | ||||||
|  |     sealed interface External : ReplyInfo { | ||||||
|  |         val origin: MessageOrigin | ||||||
|  |         val chat: SuperPublicChat? | ||||||
|  |  | ||||||
|  |         interface ContentVariant | ||||||
|  |  | ||||||
|  |         @Serializable | ||||||
|  |         data class Text( | ||||||
|  |             override val origin: MessageOrigin, | ||||||
|  |             override val chat: SuperPublicChat?, | ||||||
|  |             override val messageMeta: Message.MetaInfo?, | ||||||
|  |             val linkPreviewOptions: LinkPreviewOptions? | ||||||
|  |         ) : External | ||||||
|  |  | ||||||
|  |         @Serializable(External.Companion::class) | ||||||
|  |         sealed interface Content : External { | ||||||
|  |             val content: ContentVariant | ||||||
|  |  | ||||||
|  |  | ||||||
|  |             @Serializable | ||||||
|  |             data class Simple( | ||||||
|  |                 override val origin: MessageOrigin, | ||||||
|  |                 override val chat: SuperPublicChat?, | ||||||
|  |                 override val messageMeta: Message.MetaInfo?, | ||||||
|  |                 override val content: ContentVariant | ||||||
|  |             ) : Content | ||||||
|  |  | ||||||
|  |             @Serializable | ||||||
|  |             data class Media<T>( | ||||||
|  |                 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 | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         @Serializable | ||||||
|  |         private data class Surrogate( | ||||||
|  |             val origin: MessageOrigin, | ||||||
|  |             val chat: SuperPublicChat? = null, | ||||||
|  |             val message_id: MessageId? = null, | ||||||
|  |             val link_preview_options: LinkPreviewOptions? = null, | ||||||
|  |             val has_media_spoiler: Boolean? = null, | ||||||
|  |             private val story: Story? = null, | ||||||
|  |             private val audio: AudioFile? = null, | ||||||
|  |             private val document: DocumentFile? = null, | ||||||
|  |             private val animation: AnimationFile? = null, | ||||||
|  |             private val game: RawGame? = null, | ||||||
|  |             @Serializable(PhotoSerializer::class) | ||||||
|  |             private val photo: Photo? = null, | ||||||
|  |             private val sticker: Sticker? = null, | ||||||
|  |             private val video: VideoFile? = null, | ||||||
|  |             private val voice: VoiceFile? = null, | ||||||
|  |             private val video_note: VideoNoteFile? = null, | ||||||
|  |             private val contact: Contact? = null, | ||||||
|  |             private val location: Location? = null, | ||||||
|  |             private val venue: Venue? = null, | ||||||
|  |             private val poll: Poll? = null, | ||||||
|  |             private val invoice: Invoice? = null, | ||||||
|  |             private val dice: Dice? = null, | ||||||
|  |             private val giveaway: ScheduledGiveaway? = null, | ||||||
|  |             private val giveaway_winners: GiveawayPublicResults? = null, | ||||||
|  |         ) { | ||||||
|  |             val asExternalReplyInfo: External | ||||||
|  |                 get() { | ||||||
|  |                     val messageMeta = chat ?.let { | ||||||
|  |                         message_id ?.let { | ||||||
|  |                             Message.MetaInfo( | ||||||
|  |                                 chat.id, | ||||||
|  |                                 message_id | ||||||
|  |                             ) | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |                     val content: ContentVariant? = when { | ||||||
|  |                         story != null -> story | ||||||
|  |                         audio != null -> audio | ||||||
|  |                         video != null -> video | ||||||
|  |                         video_note != null -> video_note | ||||||
|  |                         animation != null -> animation | ||||||
|  |                         document != null -> document | ||||||
|  |                         voice != null -> voice | ||||||
|  |                         photo != null -> photo | ||||||
|  |                         sticker != null -> sticker | ||||||
|  |                         dice != null -> dice | ||||||
|  |                         game != null -> game.asGame | ||||||
|  |                         contact != null -> contact | ||||||
|  |                         location != null -> location | ||||||
|  |                         venue != null -> venue | ||||||
|  |                         poll != null -> poll | ||||||
|  |                         invoice != null -> invoice | ||||||
|  |                         giveaway != null -> giveaway | ||||||
|  |                         giveaway_winners != null -> giveaway_winners | ||||||
|  |                         else -> null | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     return content ?.let { | ||||||
|  |                         when (it) { | ||||||
|  |                             is TelegramMediaFile -> { | ||||||
|  |                                 Content.Media( | ||||||
|  |                                     origin, | ||||||
|  |                                     chat, | ||||||
|  |                                     messageMeta, | ||||||
|  |                                     has_media_spoiler == true, | ||||||
|  |                                     it | ||||||
|  |                                 ) | ||||||
|  |                             } | ||||||
|  |                             else -> Content.Simple( | ||||||
|  |                                 origin, | ||||||
|  |                                 chat, | ||||||
|  |                                 messageMeta, | ||||||
|  |                                 it | ||||||
|  |                             ) | ||||||
|  |                         } | ||||||
|  |                     } ?: Text( | ||||||
|  |                         origin, | ||||||
|  |                         chat, | ||||||
|  |                         messageMeta, | ||||||
|  |                         link_preview_options | ||||||
|  |                     ) | ||||||
|  |                 } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         @RiskFeature("This serializer currently support only deserialization, but not serialization") | ||||||
|  |         companion object : KSerializer<External> { | ||||||
|  |             override val descriptor: SerialDescriptor | ||||||
|  |                 get() = Surrogate.serializer().descriptor | ||||||
|  |  | ||||||
|  |             override fun deserialize(decoder: Decoder): External { | ||||||
|  |                 return Surrogate.serializer().deserialize(decoder).asExternalReplyInfo | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             override fun serialize(encoder: Encoder, value: External) { | ||||||
|  |  | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -10,4 +10,4 @@ data class Dice( | |||||||
|     val value: DiceResult, |     val value: DiceResult, | ||||||
|     @SerialName(emojiField) |     @SerialName(emojiField) | ||||||
|     val animationType: DiceAnimationType |     val animationType: DiceAnimationType | ||||||
| ) : ExternalReplyInfo.ContentVariant | ) : ReplyInfo.External.ContentVariant | ||||||
|   | |||||||
| @@ -24,4 +24,4 @@ data class AnimationFile( | |||||||
|     @SerialName(fileSizeField) |     @SerialName(fileSizeField) | ||||||
|     override val fileSize: Long? = null |     override val fileSize: Long? = null | ||||||
| ) : TelegramMediaFile, MimedMediaFile, ThumbedMediaFile, PlayableMediaFile, CustomNamedMediaFile, SizedMediaFile, | ) : TelegramMediaFile, MimedMediaFile, ThumbedMediaFile, PlayableMediaFile, CustomNamedMediaFile, SizedMediaFile, | ||||||
|     ExternalReplyInfo.ContentVariant |     ReplyInfo.External.ContentVariant | ||||||
|   | |||||||
| @@ -28,6 +28,6 @@ data class AudioFile( | |||||||
|     @SerialName(thumbnailField) |     @SerialName(thumbnailField) | ||||||
|     override val thumbnail: PhotoSize? = null |     override val thumbnail: PhotoSize? = null | ||||||
| ) : TelegramMediaFile, CustomNamedMediaFile, MimedMediaFile, ThumbedMediaFile, PlayableMediaFile, TitledMediaFile, | ) : TelegramMediaFile, CustomNamedMediaFile, MimedMediaFile, ThumbedMediaFile, PlayableMediaFile, TitledMediaFile, | ||||||
|     Performerable, ExternalReplyInfo.ContentVariant |     Performerable, ReplyInfo.External.ContentVariant | ||||||
|  |  | ||||||
| fun AudioFile.asVoiceFile() = VoiceFile(fileId, fileUniqueId, duration, mimeType, fileSize) | fun AudioFile.asVoiceFile() = VoiceFile(fileId, fileUniqueId, duration, mimeType, fileSize) | ||||||
|   | |||||||
| @@ -20,7 +20,7 @@ data class DocumentFile( | |||||||
|     override val mimeType: MimeType? = null, |     override val mimeType: MimeType? = null, | ||||||
|     @SerialName(fileNameField) |     @SerialName(fileNameField) | ||||||
|     override val fileName: String? = null |     override val fileName: String? = null | ||||||
| ) : TelegramMediaFile, MimedMediaFile, ThumbedMediaFile, CustomNamedMediaFile, ExternalReplyInfo.ContentVariant | ) : TelegramMediaFile, MimedMediaFile, ThumbedMediaFile, CustomNamedMediaFile, ReplyInfo.External.ContentVariant | ||||||
|  |  | ||||||
| @Suppress("NOTHING_TO_INLINE") | @Suppress("NOTHING_TO_INLINE") | ||||||
| inline fun TelegramMediaFile.asDocumentFile() = if (this is DocumentFile) { | inline fun TelegramMediaFile.asDocumentFile() = if (this is DocumentFile) { | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ import kotlin.jvm.JvmInline | |||||||
| @JvmInline | @JvmInline | ||||||
| value class Photo( | value class Photo( | ||||||
|     val photos: List<PhotoSize> |     val photos: List<PhotoSize> | ||||||
| ) : List<PhotoSize> by photos, ExternalReplyInfo.ContentVariant | ) : List<PhotoSize> by photos, ReplyInfo.External.ContentVariant | ||||||
|  |  | ||||||
| fun Photo.biggest(): PhotoSize? = maxByOrNull { | fun Photo.biggest(): PhotoSize? = maxByOrNull { | ||||||
|     it.resolution |     it.resolution | ||||||
|   | |||||||
| @@ -34,7 +34,7 @@ data class StickerSurrogate( | |||||||
|  |  | ||||||
| // TODO:: Serializer | // TODO:: Serializer | ||||||
| @Serializable(StickerSerializer::class) | @Serializable(StickerSerializer::class) | ||||||
| sealed interface Sticker : TelegramMediaFile, SizedMediaFile, ThumbedMediaFile, ExternalReplyInfo.ContentVariant { | sealed interface Sticker : TelegramMediaFile, SizedMediaFile, ThumbedMediaFile, ReplyInfo.External.ContentVariant { | ||||||
|     val emoji: String? |     val emoji: String? | ||||||
|     val stickerSetName: StickerSetName? |     val stickerSetName: StickerSetName? | ||||||
|     val stickerFormat: StickerFormat |     val stickerFormat: StickerFormat | ||||||
|   | |||||||
| @@ -30,7 +30,7 @@ data class VideoFile( | |||||||
|     @SerialName(fileSizeField) |     @SerialName(fileSizeField) | ||||||
|     override val fileSize: Long? = null |     override val fileSize: Long? = null | ||||||
| ) : TelegramMediaFile, CustomNamedMediaFile, MimedMediaFile, ThumbedMediaFile, PlayableMediaFile, SizedMediaFile, | ) : TelegramMediaFile, CustomNamedMediaFile, MimedMediaFile, ThumbedMediaFile, PlayableMediaFile, SizedMediaFile, | ||||||
|     ExternalReplyInfo.ContentVariant |     ReplyInfo.External.ContentVariant | ||||||
|  |  | ||||||
| @Suppress("NOTHING_TO_INLINE") | @Suppress("NOTHING_TO_INLINE") | ||||||
| inline fun VideoFile.toTelegramMediaVideo( | inline fun VideoFile.toTelegramMediaVideo( | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ data class VideoNoteFile( | |||||||
|     override val thumbnail: PhotoSize? = null, |     override val thumbnail: PhotoSize? = null, | ||||||
|     @SerialName(fileSizeField) |     @SerialName(fileSizeField) | ||||||
|     override val fileSize: Long? = null |     override val fileSize: Long? = null | ||||||
| ) : TelegramMediaFile, ThumbedMediaFile, PlayableMediaFile, SizedMediaFile, ExternalReplyInfo.ContentVariant { | ) : TelegramMediaFile, ThumbedMediaFile, PlayableMediaFile, SizedMediaFile, ReplyInfo.External.ContentVariant { | ||||||
|     override val height: Int |     override val height: Int | ||||||
|         get() = width |         get() = width | ||||||
| } | } | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ data class VoiceFile( | |||||||
|     override val mimeType: MimeType? = null, |     override val mimeType: MimeType? = null, | ||||||
|     @SerialName(fileSizeField) |     @SerialName(fileSizeField) | ||||||
|     override val fileSize: Long? = null |     override val fileSize: Long? = null | ||||||
| ) : TelegramMediaFile, MimedMediaFile, PlayableMediaFile, ExternalReplyInfo.ContentVariant | ) : TelegramMediaFile, MimedMediaFile, PlayableMediaFile, ReplyInfo.External.ContentVariant | ||||||
|  |  | ||||||
| fun VoiceFile.asAudioFile( | fun VoiceFile.asAudioFile( | ||||||
|     performer: String? = null, |     performer: String? = null, | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ package dev.inmo.tgbotapi.types.games | |||||||
|  |  | ||||||
| import dev.inmo.tgbotapi.abstracts.TextedInput | import dev.inmo.tgbotapi.abstracts.TextedInput | ||||||
| import dev.inmo.tgbotapi.abstracts.Titled | import dev.inmo.tgbotapi.abstracts.Titled | ||||||
| import dev.inmo.tgbotapi.types.ExternalReplyInfo | import dev.inmo.tgbotapi.types.ReplyInfo | ||||||
| import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList | import dev.inmo.tgbotapi.types.message.textsources.TextSourcesList | ||||||
| import dev.inmo.tgbotapi.types.files.AnimationFile | import dev.inmo.tgbotapi.types.files.AnimationFile | ||||||
| import dev.inmo.tgbotapi.types.files.Photo | import dev.inmo.tgbotapi.types.files.Photo | ||||||
| @@ -16,4 +16,4 @@ data class Game( | |||||||
|     override val text: String? = null, |     override val text: String? = null, | ||||||
|     override val textSources: TextSourcesList = emptyList(), |     override val textSources: TextSourcesList = emptyList(), | ||||||
|     val animation: AnimationFile? = null |     val animation: AnimationFile? = null | ||||||
| ) : Titled, TextedInput, ExternalReplyInfo.ContentVariant | ) : Titled, TextedInput, ReplyInfo.External.ContentVariant | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ import kotlinx.serialization.encoding.Encoder | |||||||
|  |  | ||||||
| @Serializable(GiveawayPublicResults.Companion::class) | @Serializable(GiveawayPublicResults.Companion::class) | ||||||
| sealed interface GiveawayPublicResults: GiveawayInfo, GiveawayResults, WithPreviewChatAndMessageId, | sealed interface GiveawayPublicResults: GiveawayInfo, GiveawayResults, WithPreviewChatAndMessageId, | ||||||
|     ExternalReplyInfo.ContentVariant { |     ReplyInfo.External.ContentVariant { | ||||||
|     val count: Int |     val count: Int | ||||||
|     val winners: List<PreviewUser> |     val winners: List<PreviewUser> | ||||||
|     val additionalChats: Int |     val additionalChats: Int | ||||||
|   | |||||||
| @@ -30,4 +30,4 @@ data class ScheduledGiveaway( | |||||||
|     val countries: List<IetfLang>? = null, |     val countries: List<IetfLang>? = null, | ||||||
|     @SerialName(premiumSubscriptionMonthCountField) |     @SerialName(premiumSubscriptionMonthCountField) | ||||||
|     override val premiumMonths: Int? = null |     override val premiumMonths: Int? = null | ||||||
| ) : GiveawayInfo, ExternalReplyInfo.ContentVariant | ) : GiveawayInfo, ReplyInfo.External.ContentVariant | ||||||
| @@ -20,7 +20,7 @@ import kotlinx.serialization.json.JsonObject | |||||||
|  */ |  */ | ||||||
| @Serializable(LocationSerializer::class) | @Serializable(LocationSerializer::class) | ||||||
| @ClassCastsIncluded | @ClassCastsIncluded | ||||||
| sealed interface Location : Locationed, HorizontallyAccured, ExternalReplyInfo.ContentVariant | sealed interface Location : Locationed, HorizontallyAccured, ReplyInfo.External.ContentVariant | ||||||
|  |  | ||||||
| @Serializable | @Serializable | ||||||
| data class StaticLocation( | data class StaticLocation( | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ data class ChannelContentMessageImpl<T: MessageContent>( | |||||||
|     override val editDate: DateTime?, |     override val editDate: DateTime?, | ||||||
|     override val hasProtectedContent: Boolean, |     override val hasProtectedContent: Boolean, | ||||||
|     override val forwardOrigin: MessageOrigin?, |     override val forwardOrigin: MessageOrigin?, | ||||||
|     override val replyTo: AccessibleMessage?, |     override val replyInfo: ReplyInfo?, | ||||||
|     override val replyMarkup: InlineKeyboardMarkup?, |     override val replyMarkup: InlineKeyboardMarkup?, | ||||||
|     override val senderBot: CommonBot?, |     override val senderBot: CommonBot?, | ||||||
|     override val authorSignature: AuthorSignature?, |     override val authorSignature: AuthorSignature?, | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ data class ConnectedFromChannelGroupContentMessageImpl<T : MessageContent>( | |||||||
|     override val forwardOrigin: MessageOrigin?, |     override val forwardOrigin: MessageOrigin?, | ||||||
|     override val editDate: DateTime?, |     override val editDate: DateTime?, | ||||||
|     override val hasProtectedContent: Boolean, |     override val hasProtectedContent: Boolean, | ||||||
|     override val replyTo: AccessibleMessage?, |     override val replyInfo: ReplyInfo?, | ||||||
|     override val replyMarkup: InlineKeyboardMarkup?, |     override val replyMarkup: InlineKeyboardMarkup?, | ||||||
|     override val content: T, |     override val content: T, | ||||||
|     override val senderBot: CommonBot?, |     override val senderBot: CommonBot?, | ||||||
| @@ -52,7 +52,7 @@ data class UnconnectedFromChannelGroupContentMessageImpl<T: MessageContent>( | |||||||
|     override val forwardOrigin: MessageOrigin?, |     override val forwardOrigin: MessageOrigin?, | ||||||
|     override val editDate: DateTime?, |     override val editDate: DateTime?, | ||||||
|     override val hasProtectedContent: Boolean, |     override val hasProtectedContent: Boolean, | ||||||
|     override val replyTo: AccessibleMessage?, |     override val replyInfo: ReplyInfo?, | ||||||
|     override val replyMarkup: InlineKeyboardMarkup?, |     override val replyMarkup: InlineKeyboardMarkup?, | ||||||
|     override val content: T, |     override val content: T, | ||||||
|     override val senderBot: CommonBot?, |     override val senderBot: CommonBot?, | ||||||
| @@ -85,7 +85,7 @@ data class AnonymousGroupContentMessageImpl<T : MessageContent>( | |||||||
|     override val forwardOrigin: MessageOrigin?, |     override val forwardOrigin: MessageOrigin?, | ||||||
|     override val editDate: DateTime?, |     override val editDate: DateTime?, | ||||||
|     override val hasProtectedContent: Boolean, |     override val hasProtectedContent: Boolean, | ||||||
|     override val replyTo: AccessibleMessage?, |     override val replyInfo: ReplyInfo?, | ||||||
|     override val replyMarkup: InlineKeyboardMarkup?, |     override val replyMarkup: InlineKeyboardMarkup?, | ||||||
|     override val content: T, |     override val content: T, | ||||||
|     override val senderBot: CommonBot?, |     override val senderBot: CommonBot?, | ||||||
| @@ -118,7 +118,7 @@ data class CommonGroupContentMessageImpl<T : MessageContent>( | |||||||
|     override val forwardOrigin: MessageOrigin?, |     override val forwardOrigin: MessageOrigin?, | ||||||
|     override val editDate: DateTime?, |     override val editDate: DateTime?, | ||||||
|     override val hasProtectedContent: Boolean, |     override val hasProtectedContent: Boolean, | ||||||
|     override val replyTo: AccessibleMessage?, |     override val replyInfo: ReplyInfo?, | ||||||
|     override val replyMarkup: InlineKeyboardMarkup?, |     override val replyMarkup: InlineKeyboardMarkup?, | ||||||
|     override val content: T, |     override val content: T, | ||||||
|     override val senderBot: CommonBot?, |     override val senderBot: CommonBot?, | ||||||
| @@ -151,7 +151,7 @@ data class FromChannelForumContentMessageImpl<T: MessageContent>( | |||||||
|     override val forwardOrigin: MessageOrigin?, |     override val forwardOrigin: MessageOrigin?, | ||||||
|     override val editDate: DateTime?, |     override val editDate: DateTime?, | ||||||
|     override val hasProtectedContent: Boolean, |     override val hasProtectedContent: Boolean, | ||||||
|     override val replyTo: AccessibleMessage?, |     override val replyInfo: ReplyInfo?, | ||||||
|     override val replyMarkup: InlineKeyboardMarkup?, |     override val replyMarkup: InlineKeyboardMarkup?, | ||||||
|     override val content: T, |     override val content: T, | ||||||
|     override val senderBot: CommonBot?, |     override val senderBot: CommonBot?, | ||||||
| @@ -186,7 +186,7 @@ data class AnonymousForumContentMessageImpl<T : MessageContent>( | |||||||
|     override val forwardOrigin: MessageOrigin?, |     override val forwardOrigin: MessageOrigin?, | ||||||
|     override val editDate: DateTime?, |     override val editDate: DateTime?, | ||||||
|     override val hasProtectedContent: Boolean, |     override val hasProtectedContent: Boolean, | ||||||
|     override val replyTo: AccessibleMessage?, |     override val replyInfo: ReplyInfo?, | ||||||
|     override val replyMarkup: InlineKeyboardMarkup?, |     override val replyMarkup: InlineKeyboardMarkup?, | ||||||
|     override val content: T, |     override val content: T, | ||||||
|     override val senderBot: CommonBot?, |     override val senderBot: CommonBot?, | ||||||
| @@ -221,7 +221,7 @@ data class CommonForumContentMessageImpl<T : MessageContent>( | |||||||
|     override val forwardOrigin: MessageOrigin?, |     override val forwardOrigin: MessageOrigin?, | ||||||
|     override val editDate: DateTime?, |     override val editDate: DateTime?, | ||||||
|     override val hasProtectedContent: Boolean, |     override val hasProtectedContent: Boolean, | ||||||
|     override val replyTo: AccessibleMessage?, |     override val replyInfo: ReplyInfo?, | ||||||
|     override val replyMarkup: InlineKeyboardMarkup?, |     override val replyMarkup: InlineKeyboardMarkup?, | ||||||
|     override val content: T, |     override val content: T, | ||||||
|     override val senderBot: CommonBot?, |     override val senderBot: CommonBot?, | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ data class PrivateContentMessageImpl<T: MessageContent>( | |||||||
|     override val editDate: DateTime?, |     override val editDate: DateTime?, | ||||||
|     override val hasProtectedContent: Boolean, |     override val hasProtectedContent: Boolean, | ||||||
|     override val forwardOrigin: MessageOrigin?, |     override val forwardOrigin: MessageOrigin?, | ||||||
|     override val replyTo: AccessibleMessage?, |     override val replyInfo: ReplyInfo?, | ||||||
|     override val replyMarkup: InlineKeyboardMarkup?, |     override val replyMarkup: InlineKeyboardMarkup?, | ||||||
|     override val senderBot: CommonBot?, |     override val senderBot: CommonBot?, | ||||||
|     override val mediaGroupId: MediaGroupIdentifier?, |     override val mediaGroupId: MediaGroupIdentifier?, | ||||||
|   | |||||||
| @@ -54,6 +54,7 @@ internal data class RawMessage( | |||||||
|     private val is_topic_message: Boolean? = null, |     private val is_topic_message: Boolean? = null, | ||||||
|     private val is_automatic_forward: Boolean? = null, |     private val is_automatic_forward: Boolean? = null, | ||||||
|     private val reply_to_message: RawMessage? = null, |     private val reply_to_message: RawMessage? = null, | ||||||
|  |     private val external_reply: ReplyInfo.External? = null, | ||||||
|     private val via_bot: CommonBot? = null, |     private val via_bot: CommonBot? = null, | ||||||
|     private val edit_date: TelegramDate? = null, |     private val edit_date: TelegramDate? = null, | ||||||
|     private val has_protected_content: Boolean? = null, |     private val has_protected_content: Boolean? = null, | ||||||
| @@ -282,7 +283,15 @@ internal data class RawMessage( | |||||||
|                     ) |                     ) | ||||||
|                     else -> error("Expected one of the public chats, but was $chat (in extracting of chat event message)") |                     else -> error("Expected one of the public chats, but was $chat (in extracting of chat event message)") | ||||||
|                 } |                 } | ||||||
|             } ?: content?.let { content -> when (chat) { |             } ?: content?.let { content -> | ||||||
|  |                 val replyInfo: ReplyInfo? = when { | ||||||
|  |                     reply_to_message != null -> ReplyInfo.Internal( | ||||||
|  |                         reply_to_message.asMessage | ||||||
|  |                     ) | ||||||
|  |                     external_reply != null -> external_reply | ||||||
|  |                     else -> null | ||||||
|  |                 } | ||||||
|  |                 when (chat) { | ||||||
|                     is PreviewPublicChat -> when (chat) { |                     is PreviewPublicChat -> when (chat) { | ||||||
|                         is PreviewChannelChat -> ChannelContentMessageImpl( |                         is PreviewChannelChat -> ChannelContentMessageImpl( | ||||||
|                             messageId, |                             messageId, | ||||||
| @@ -292,7 +301,7 @@ internal data class RawMessage( | |||||||
|                             edit_date?.asDate, |                             edit_date?.asDate, | ||||||
|                             has_protected_content == true, |                             has_protected_content == true, | ||||||
|                             forward_origin, |                             forward_origin, | ||||||
|                             reply_to_message?.asMessage, |                             replyInfo, | ||||||
|                             reply_markup, |                             reply_markup, | ||||||
|                             via_bot, |                             via_bot, | ||||||
|                             author_signature, |                             author_signature, | ||||||
| @@ -316,7 +325,7 @@ internal data class RawMessage( | |||||||
|                                     forward_origin, |                                     forward_origin, | ||||||
|                                     edit_date ?.asDate, |                                     edit_date ?.asDate, | ||||||
|                                     has_protected_content == true, |                                     has_protected_content == true, | ||||||
|                                     reply_to_message ?.asMessage, |                                     replyInfo, | ||||||
|                                     reply_markup, |                                     reply_markup, | ||||||
|                                     content, |                                     content, | ||||||
|                                     via_bot, |                                     via_bot, | ||||||
| @@ -331,7 +340,7 @@ internal data class RawMessage( | |||||||
|                                     forward_origin, |                                     forward_origin, | ||||||
|                                     edit_date ?.asDate, |                                     edit_date ?.asDate, | ||||||
|                                     has_protected_content == true, |                                     has_protected_content == true, | ||||||
|                                     reply_to_message ?.asMessage, |                                     replyInfo, | ||||||
|                                     reply_markup, |                                     reply_markup, | ||||||
|                                     content, |                                     content, | ||||||
|                                     via_bot, |                                     via_bot, | ||||||
| @@ -347,7 +356,7 @@ internal data class RawMessage( | |||||||
|                                     forward_origin, |                                     forward_origin, | ||||||
|                                     edit_date ?.asDate, |                                     edit_date ?.asDate, | ||||||
|                                     has_protected_content == true, |                                     has_protected_content == true, | ||||||
|                                     reply_to_message ?.asMessage, |                                     replyInfo, | ||||||
|                                     reply_markup, |                                     reply_markup, | ||||||
|                                     content, |                                     content, | ||||||
|                                     via_bot, |                                     via_bot, | ||||||
| @@ -365,7 +374,7 @@ internal data class RawMessage( | |||||||
|                                         forward_origin, |                                         forward_origin, | ||||||
|                                         edit_date ?.asDate, |                                         edit_date ?.asDate, | ||||||
|                                         has_protected_content == true, |                                         has_protected_content == true, | ||||||
|                                         reply_to_message ?.asMessage, |                                         replyInfo, | ||||||
|                                         reply_markup, |                                         reply_markup, | ||||||
|                                         content, |                                         content, | ||||||
|                                         via_bot, |                                         via_bot, | ||||||
| @@ -381,7 +390,7 @@ internal data class RawMessage( | |||||||
|                                         forward_origin, |                                         forward_origin, | ||||||
|                                         edit_date ?.asDate, |                                         edit_date ?.asDate, | ||||||
|                                         has_protected_content == true, |                                         has_protected_content == true, | ||||||
|                                         reply_to_message ?.asMessage, |                                         replyInfo, | ||||||
|                                         reply_markup, |                                         reply_markup, | ||||||
|                                         content, |                                         content, | ||||||
|                                         via_bot, |                                         via_bot, | ||||||
| @@ -396,7 +405,7 @@ internal data class RawMessage( | |||||||
|                                     forward_origin, |                                     forward_origin, | ||||||
|                                     edit_date ?.asDate, |                                     edit_date ?.asDate, | ||||||
|                                     has_protected_content == true, |                                     has_protected_content == true, | ||||||
|                                     reply_to_message ?.asMessage, |                                     replyInfo, | ||||||
|                                     reply_markup, |                                     reply_markup, | ||||||
|                                     content, |                                     content, | ||||||
|                                     via_bot, |                                     via_bot, | ||||||
| @@ -411,7 +420,7 @@ internal data class RawMessage( | |||||||
|                                     forward_origin, |                                     forward_origin, | ||||||
|                                     edit_date ?.asDate, |                                     edit_date ?.asDate, | ||||||
|                                     has_protected_content == true, |                                     has_protected_content == true, | ||||||
|                                     reply_to_message ?.asMessage, |                                     replyInfo, | ||||||
|                                     reply_markup, |                                     reply_markup, | ||||||
|                                     content, |                                     content, | ||||||
|                                     via_bot, |                                     via_bot, | ||||||
| @@ -429,7 +438,7 @@ internal data class RawMessage( | |||||||
|                                     forward_origin, |                                     forward_origin, | ||||||
|                                     edit_date ?.asDate, |                                     edit_date ?.asDate, | ||||||
|                                     has_protected_content == true, |                                     has_protected_content == true, | ||||||
|                                     reply_to_message ?.asMessage, |                                     replyInfo, | ||||||
|                                     reply_markup, |                                     reply_markup, | ||||||
|                                     content, |                                     content, | ||||||
|                                     via_bot, |                                     via_bot, | ||||||
| @@ -445,7 +454,7 @@ internal data class RawMessage( | |||||||
|                                     forward_origin, |                                     forward_origin, | ||||||
|                                     edit_date ?.asDate, |                                     edit_date ?.asDate, | ||||||
|                                     has_protected_content == true, |                                     has_protected_content == true, | ||||||
|                                     reply_to_message ?.asMessage, |                                     replyInfo, | ||||||
|                                     reply_markup, |                                     reply_markup, | ||||||
|                                     content, |                                     content, | ||||||
|                                     via_bot, |                                     via_bot, | ||||||
| @@ -460,7 +469,7 @@ internal data class RawMessage( | |||||||
|                                 forward_origin, |                                 forward_origin, | ||||||
|                                 edit_date ?.asDate, |                                 edit_date ?.asDate, | ||||||
|                                 has_protected_content == true, |                                 has_protected_content == true, | ||||||
|                                 reply_to_message ?.asMessage, |                                 replyInfo, | ||||||
|                                 reply_markup, |                                 reply_markup, | ||||||
|                                 content, |                                 content, | ||||||
|                                 via_bot, |                                 via_bot, | ||||||
| @@ -475,7 +484,7 @@ internal data class RawMessage( | |||||||
|                                 forward_origin, |                                 forward_origin, | ||||||
|                                 edit_date ?.asDate, |                                 edit_date ?.asDate, | ||||||
|                                 has_protected_content == true, |                                 has_protected_content == true, | ||||||
|                                 reply_to_message ?.asMessage, |                                 replyInfo, | ||||||
|                                 reply_markup, |                                 reply_markup, | ||||||
|                                 content, |                                 content, | ||||||
|                                 via_bot, |                                 via_bot, | ||||||
| @@ -492,7 +501,7 @@ internal data class RawMessage( | |||||||
|                         edit_date?.asDate, |                         edit_date?.asDate, | ||||||
|                         has_protected_content == true, |                         has_protected_content == true, | ||||||
|                         forward_origin, |                         forward_origin, | ||||||
|                         reply_to_message?.asMessage, |                         replyInfo, | ||||||
|                         reply_markup, |                         reply_markup, | ||||||
|                         via_bot, |                         via_bot, | ||||||
|                         media_group_id |                         media_group_id | ||||||
|   | |||||||
| @@ -1,5 +1,9 @@ | |||||||
| package dev.inmo.tgbotapi.types.message.abstracts | package dev.inmo.tgbotapi.types.message.abstracts | ||||||
|  |  | ||||||
|  | import dev.inmo.tgbotapi.types.ReplyInfo | ||||||
|  |  | ||||||
| interface PossiblyReplyMessage { | interface PossiblyReplyMessage { | ||||||
|  |     val replyInfo: ReplyInfo? | ||||||
|     val replyTo: AccessibleMessage? |     val replyTo: AccessibleMessage? | ||||||
|  |         get() = (replyInfo as? ReplyInfo.Internal) ?.message | ||||||
| } | } | ||||||
| @@ -17,4 +17,4 @@ data class Invoice( | |||||||
|     override val currency: Currency, |     override val currency: Currency, | ||||||
|     @SerialName(totalAmountField) |     @SerialName(totalAmountField) | ||||||
|     override val amount: Long |     override val amount: Long | ||||||
| ) : Amounted, Currencied, ExternalReplyInfo.ContentVariant | ) : Amounted, Currencied, ReplyInfo.External.ContentVariant | ||||||
|   | |||||||
| @@ -49,7 +49,7 @@ val LongSeconds.asExactScheduledCloseInfo | |||||||
|  |  | ||||||
| @Serializable(PollSerializer::class) | @Serializable(PollSerializer::class) | ||||||
| @ClassCastsIncluded | @ClassCastsIncluded | ||||||
| sealed interface Poll : ExternalReplyInfo.ContentVariant { | sealed interface Poll : ReplyInfo.External.ContentVariant { | ||||||
|     val id: PollIdentifier |     val id: PollIdentifier | ||||||
|     val question: String |     val question: String | ||||||
|     val options: List<PollOption> |     val options: List<PollOption> | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| package dev.inmo.tgbotapi.types.stories | package dev.inmo.tgbotapi.types.stories | ||||||
|  |  | ||||||
| import dev.inmo.tgbotapi.types.ExternalReplyInfo | import dev.inmo.tgbotapi.types.ReplyInfo | ||||||
| import kotlinx.serialization.Serializable | import kotlinx.serialization.Serializable | ||||||
|  |  | ||||||
| @Serializable | @Serializable | ||||||
| class Story : ExternalReplyInfo.ContentVariant | class Story : ReplyInfo.External.ContentVariant | ||||||
|   | |||||||
| @@ -23,4 +23,4 @@ data class Venue( | |||||||
|     override val googlePlaceId: GooglePlaceId? = null, |     override val googlePlaceId: GooglePlaceId? = null, | ||||||
|     @SerialName(googlePlaceTypeField) |     @SerialName(googlePlaceTypeField) | ||||||
|     override val googlePlaceType: GooglePlaceType? = null |     override val googlePlaceType: GooglePlaceType? = null | ||||||
| ) : CommonVenueData, Locationed by location, ExternalReplyInfo.ContentVariant | ) : CommonVenueData, Locationed by location, ReplyInfo.External.ContentVariant | ||||||
|   | |||||||
| @@ -40,7 +40,7 @@ fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMedia | |||||||
|             sourceMessage.editDate, |             sourceMessage.editDate, | ||||||
|             sourceMessage.hasProtectedContent, |             sourceMessage.hasProtectedContent, | ||||||
|             sourceMessage.forwardOrigin, |             sourceMessage.forwardOrigin, | ||||||
|             sourceMessage.replyTo, |             sourceMessage.replyInfo, | ||||||
|             sourceMessage.replyMarkup, |             sourceMessage.replyMarkup, | ||||||
|             sourceMessage.senderBot, |             sourceMessage.senderBot, | ||||||
|             sourceMessage.authorSignature, |             sourceMessage.authorSignature, | ||||||
| @@ -55,7 +55,7 @@ fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMedia | |||||||
|             sourceMessage.editDate, |             sourceMessage.editDate, | ||||||
|             sourceMessage.hasProtectedContent, |             sourceMessage.hasProtectedContent, | ||||||
|             sourceMessage.forwardOrigin, |             sourceMessage.forwardOrigin, | ||||||
|             sourceMessage.replyTo, |             sourceMessage.replyInfo, | ||||||
|             sourceMessage.replyMarkup, |             sourceMessage.replyMarkup, | ||||||
|             sourceMessage.senderBot, |             sourceMessage.senderBot, | ||||||
|             sourceMessage.mediaGroupId |             sourceMessage.mediaGroupId | ||||||
| @@ -67,7 +67,7 @@ fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMedia | |||||||
|             sourceMessage.forwardOrigin, |             sourceMessage.forwardOrigin, | ||||||
|             sourceMessage.editDate, |             sourceMessage.editDate, | ||||||
|             sourceMessage.hasProtectedContent, |             sourceMessage.hasProtectedContent, | ||||||
|             sourceMessage.replyTo, |             sourceMessage.replyInfo, | ||||||
|             sourceMessage.replyMarkup, |             sourceMessage.replyMarkup, | ||||||
|             content, |             content, | ||||||
|             sourceMessage.senderBot, |             sourceMessage.senderBot, | ||||||
| @@ -82,7 +82,7 @@ fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMedia | |||||||
|             sourceMessage.forwardOrigin, |             sourceMessage.forwardOrigin, | ||||||
|             sourceMessage.editDate, |             sourceMessage.editDate, | ||||||
|             sourceMessage.hasProtectedContent, |             sourceMessage.hasProtectedContent, | ||||||
|             sourceMessage.replyTo, |             sourceMessage.replyInfo, | ||||||
|             sourceMessage.replyMarkup, |             sourceMessage.replyMarkup, | ||||||
|             content, |             content, | ||||||
|             sourceMessage.senderBot, |             sourceMessage.senderBot, | ||||||
| @@ -96,7 +96,7 @@ fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMedia | |||||||
|             sourceMessage.forwardOrigin, |             sourceMessage.forwardOrigin, | ||||||
|             sourceMessage.editDate, |             sourceMessage.editDate, | ||||||
|             sourceMessage.hasProtectedContent, |             sourceMessage.hasProtectedContent, | ||||||
|             sourceMessage.replyTo, |             sourceMessage.replyInfo, | ||||||
|             sourceMessage.replyMarkup, |             sourceMessage.replyMarkup, | ||||||
|             content, |             content, | ||||||
|             sourceMessage.senderBot, |             sourceMessage.senderBot, | ||||||
| @@ -111,7 +111,7 @@ fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMedia | |||||||
|             sourceMessage.forwardOrigin, |             sourceMessage.forwardOrigin, | ||||||
|             sourceMessage.editDate, |             sourceMessage.editDate, | ||||||
|             sourceMessage.hasProtectedContent, |             sourceMessage.hasProtectedContent, | ||||||
|             sourceMessage.replyTo, |             sourceMessage.replyInfo, | ||||||
|             sourceMessage.replyMarkup, |             sourceMessage.replyMarkup, | ||||||
|             content, |             content, | ||||||
|             sourceMessage.senderBot, |             sourceMessage.senderBot, | ||||||
| @@ -126,7 +126,7 @@ fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMedia | |||||||
|             sourceMessage.forwardOrigin, |             sourceMessage.forwardOrigin, | ||||||
|             sourceMessage.editDate, |             sourceMessage.editDate, | ||||||
|             sourceMessage.hasProtectedContent, |             sourceMessage.hasProtectedContent, | ||||||
|             sourceMessage.replyTo, |             sourceMessage.replyInfo, | ||||||
|             sourceMessage.replyMarkup, |             sourceMessage.replyMarkup, | ||||||
|             content, |             content, | ||||||
|             sourceMessage.senderBot, |             sourceMessage.senderBot, | ||||||
| @@ -142,7 +142,7 @@ fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMedia | |||||||
|             sourceMessage.forwardOrigin, |             sourceMessage.forwardOrigin, | ||||||
|             sourceMessage.editDate, |             sourceMessage.editDate, | ||||||
|             sourceMessage.hasProtectedContent, |             sourceMessage.hasProtectedContent, | ||||||
|             sourceMessage.replyTo, |             sourceMessage.replyInfo, | ||||||
|             sourceMessage.replyMarkup, |             sourceMessage.replyMarkup, | ||||||
|             content, |             content, | ||||||
|             sourceMessage.senderBot, |             sourceMessage.senderBot, | ||||||
| @@ -157,7 +157,7 @@ fun <T : MediaGroupPartContent> List<PossiblySentViaBotCommonMessage<T>>.asMedia | |||||||
|             sourceMessage.forwardOrigin, |             sourceMessage.forwardOrigin, | ||||||
|             sourceMessage.editDate, |             sourceMessage.editDate, | ||||||
|             sourceMessage.hasProtectedContent, |             sourceMessage.hasProtectedContent, | ||||||
|             sourceMessage.replyTo, |             sourceMessage.replyInfo, | ||||||
|             sourceMessage.replyMarkup, |             sourceMessage.replyMarkup, | ||||||
|             content, |             content, | ||||||
|             sourceMessage.senderBot, |             sourceMessage.senderBot, | ||||||
|   | |||||||
| @@ -51,7 +51,7 @@ inline val AccessibleMessage.is_automatic_forward: Boolean? | |||||||
|     get() = this is ConnectedFromChannelGroupContentMessage<*> |     get() = this is ConnectedFromChannelGroupContentMessage<*> | ||||||
| @RiskFeature(RawFieldsUsageWarning) | @RiskFeature(RawFieldsUsageWarning) | ||||||
| inline val AccessibleMessage.reply_to_message: AccessibleMessage? | inline val AccessibleMessage.reply_to_message: AccessibleMessage? | ||||||
|     get() = asPossiblyReplyMessage() ?.replyTo |     get() = asPossiblyReplyMessage() ?.replyInfo | ||||||
| @RiskFeature(RawFieldsUsageWarning) | @RiskFeature(RawFieldsUsageWarning) | ||||||
| inline val AccessibleMessage.via_bot: CommonBot? | inline val AccessibleMessage.via_bot: CommonBot? | ||||||
|     get() = asPossiblySentViaBotCommonMessage() ?.senderBot |     get() = asPossiblySentViaBotCommonMessage() ?.senderBot | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user