@file:Suppress("UNCHECKED_CAST") package dev.inmo.tgbotapi.extensions.utils import dev.inmo.tgbotapi.types.message.abstracts.* import dev.inmo.tgbotapi.types.message.content.MessageContent import dev.inmo.tgbotapi.types.message.abstracts.PossiblySentViaBotCommonMessage import dev.inmo.tgbotapi.types.message.content.MediaGroupContent inline fun ContentMessage<*>.withContent() = if (content is T) { this as ContentMessage } else { null } inline fun ContentMessage<*>.requireWithContent() = withContent()!! inline fun CommonMessage<*>.withContent() = if (content is T) { this as CommonMessage } else { null } inline fun CommonMessage<*>.requireWithContent() = withContent()!! inline fun PossiblySentViaBotCommonMessage<*>.withContent() = if (content is T) { this as PossiblySentViaBotCommonMessage } else { null } inline fun PossiblySentViaBotCommonMessage<*>.requireWithContent() = withContent()!! inline fun ChannelContentMessage<*>.withContent() = if (content is T) { this as ChannelContentMessage } else { null } inline fun ChannelContentMessage<*>.requireWithContent() = withContent()!! inline fun PrivateContentMessage<*>.withContent() = if (content is T) { this as PrivateContentMessage } else { null } inline fun PrivateContentMessage<*>.requireWithContent() = withContent()!! inline fun PublicContentMessage<*>.withContent() = if (content is T) { this as PublicContentMessage } else { null } inline fun PublicContentMessage<*>.requireWithContent() = withContent()!! inline fun GroupContentMessage<*>.withContent() = if (content is T) { this as GroupContentMessage } else { null } inline fun GroupContentMessage<*>.requireWithContent() = withContent()!! inline fun FromChannelGroupContentMessage<*>.withContent() = if (content is T) { this as FromChannelGroupContentMessage } else { null } inline fun FromChannelGroupContentMessage<*>.requireWithContent() = withContent()!! inline fun AnonymousGroupContentMessage<*>.withContent() = if (content is T) { this as AnonymousGroupContentMessage } else { null } inline fun AnonymousGroupContentMessage<*>.requireWithContent() = withContent()!! inline fun CommonGroupContentMessage<*>.withContent() = if (content is T) { this as CommonGroupContentMessage } else { null } inline fun CommonGroupContentMessage<*>.requireWithContent() = withContent()!! inline fun MediaGroupMessage<*>.withContent() = if (content is T) { this as MediaGroupMessage } else { null } inline fun MediaGroupMessage<*>.requireWithContent() = withContent()!!