All Downloads are FREE. Search and download functionalities are using the official Maven repository.

eu.vendeli.tgbot.api.media.Photo.kt Maven / Gradle / Ivy

@file:Suppress("MatchingDeclarationName")

package eu.vendeli.tgbot.api.media

import eu.vendeli.tgbot.interfaces.ActionState
import eu.vendeli.tgbot.interfaces.MediaAction
import eu.vendeli.tgbot.interfaces.TgAction
import eu.vendeli.tgbot.interfaces.features.CaptionFeature
import eu.vendeli.tgbot.interfaces.features.MarkupFeature
import eu.vendeli.tgbot.interfaces.features.OptionsFeature
import eu.vendeli.tgbot.types.Message
import eu.vendeli.tgbot.types.internal.ImplicitFile
import eu.vendeli.tgbot.types.internal.MediaContentType
import eu.vendeli.tgbot.types.internal.TgMethod
import eu.vendeli.tgbot.types.internal.options.PhotoOptions
import eu.vendeli.tgbot.utils.builders.EntitiesContextBuilder
import eu.vendeli.tgbot.utils.getReturnType
import java.io.File

class SendPhotoAction(private val photo: ImplicitFile<*>) :
    MediaAction,
    ActionState(),
    OptionsFeature,
    MarkupFeature,
    EntitiesContextBuilder,
    CaptionFeature {
    override val TgAction.method: TgMethod
        get() = TgMethod("sendPhoto")
    override val TgAction.returnType: Class
        get() = getReturnType()
    override val OptionsFeature.options: PhotoOptions
        get() = PhotoOptions()
    override val EntitiesContextBuilder.entitiesField: String
        get() = "caption_entities"

    override val MediaAction.defaultType: MediaContentType
        get() = MediaContentType.ImageJpeg
    override val MediaAction.media: ImplicitFile<*>
        get() = photo
    override val MediaAction.dataField: String
        get() = "photo"
}

fun photo(block: () -> String) = SendPhotoAction(ImplicitFile.FromString(block()))

fun photo(ba: ByteArray) = SendPhotoAction(ImplicitFile.FromByteArray(ba))

fun photo(file: File) = SendPhotoAction(ImplicitFile.FromFile(file))




© 2015 - 2025 Weber Informatics LLC | Privacy Policy