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

io.github.dehuckakpyt.telegrambot.api.TelegramBotApiExt.kt Maven / Gradle / Ivy

The newest version!
package io.github.dehuckakpyt.telegrambot.api

import io.github.dehuckakpyt.telegrambot.model.telegram.ChatFullInfo
import io.github.dehuckakpyt.telegrambot.model.telegram.ChatInviteLink
import io.github.dehuckakpyt.telegrambot.model.telegram.ChatMember
import io.github.dehuckakpyt.telegrambot.model.telegram.ChatPermissions
import io.github.dehuckakpyt.telegrambot.model.telegram.ForumTopic
import io.github.dehuckakpyt.telegrambot.model.telegram.InlineKeyboardMarkup
import io.github.dehuckakpyt.telegrambot.model.telegram.InputMedia
import io.github.dehuckakpyt.telegrambot.model.telegram.InputPaidMedia
import io.github.dehuckakpyt.telegrambot.model.telegram.InputPollOption
import io.github.dehuckakpyt.telegrambot.model.telegram.LabeledPrice
import io.github.dehuckakpyt.telegrambot.model.telegram.LinkPreviewOptions
import io.github.dehuckakpyt.telegrambot.model.telegram.Message
import io.github.dehuckakpyt.telegrambot.model.telegram.MessageEntity
import io.github.dehuckakpyt.telegrambot.model.telegram.MessageId
import io.github.dehuckakpyt.telegrambot.model.telegram.Poll
import io.github.dehuckakpyt.telegrambot.model.telegram.ReactionType
import io.github.dehuckakpyt.telegrambot.model.telegram.ReplyMarkup
import io.github.dehuckakpyt.telegrambot.model.telegram.ReplyParameters
import io.github.dehuckakpyt.telegrambot.model.telegram.UserChatBoosts
import io.github.dehuckakpyt.telegrambot.model.telegram.input.ContentInput
import io.github.dehuckakpyt.telegrambot.model.telegram.input.Input
import io.github.dehuckakpyt.telegrambot.model.telegram.input.StringInput
import kotlin.Boolean
import kotlin.Double
import kotlin.Int
import kotlin.Long
import kotlin.String
import kotlin.collections.Iterable
import kotlin.collections.List

/**
 * @author KScript
 */
public interface TelegramBotApiExt : TelegramBotApi {
    /**
     * Use this method to send text messages. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param text Text of the message to be sent, 1-4096 characters after entities parsing
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param parseMode Mode for parsing entities in the message text. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param entities A JSON-serialized list of special entities that appear in message text, which
     * can be specified instead of *parse_mode*
     * @param linkPreviewOptions Link preview generation options for the message
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendMessage(
        chatId: Long,
        text: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        parseMode: String? = null,
        entities: Iterable? = null,
        linkPreviewOptions: LinkPreviewOptions? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendMessage(
        chatId = chatId.toString(),
        text = text,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        parseMode = parseMode,
        entities = entities,
        linkPreviewOptions = linkPreviewOptions,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to forward messages of any kind. Service messages and messages with protected
     * content can't be forwarded. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param fromChatId Unique identifier for the chat where the original message was sent (or
     * channel username in the format `@channelusername`)
     * @param messageId Message identifier in the chat specified in *from_chat_id*
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the forwarded message from forwarding and
     * saving
     */
    public suspend fun forwardMessage(
        chatId: Long,
        fromChatId: String,
        messageId: Long,
        messageThreadId: Long? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
    ): Message = forwardMessage(
        chatId = chatId.toString(),
        fromChatId = fromChatId,
        messageId = messageId,
        messageThreadId = messageThreadId,
        disableNotification = disableNotification,
        protectContent = protectContent,
    )

    /**
     * Use this method to forward messages of any kind. Service messages and messages with protected
     * content can't be forwarded. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param fromChatId Unique identifier for the chat where the original message was sent (or
     * channel username in the format `@channelusername`)
     * @param messageId Message identifier in the chat specified in *from_chat_id*
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the forwarded message from forwarding and
     * saving
     */
    public suspend fun forwardMessage(
        chatId: String,
        fromChatId: Long,
        messageId: Long,
        messageThreadId: Long? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
    ): Message = forwardMessage(
        chatId = chatId,
        fromChatId = fromChatId.toString(),
        messageId = messageId,
        messageThreadId = messageThreadId,
        disableNotification = disableNotification,
        protectContent = protectContent,
    )

    /**
     * Use this method to forward messages of any kind. Service messages and messages with protected
     * content can't be forwarded. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param fromChatId Unique identifier for the chat where the original message was sent (or
     * channel username in the format `@channelusername`)
     * @param messageId Message identifier in the chat specified in *from_chat_id*
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the forwarded message from forwarding and
     * saving
     */
    public suspend fun forwardMessage(
        chatId: Long,
        fromChatId: Long,
        messageId: Long,
        messageThreadId: Long? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
    ): Message = forwardMessage(
        chatId = chatId.toString(),
        fromChatId = fromChatId.toString(),
        messageId = messageId,
        messageThreadId = messageThreadId,
        disableNotification = disableNotification,
        protectContent = protectContent,
    )

    /**
     * Use this method to forward multiple messages of any kind. If some of the specified messages
     * can't be found or forwarded, they are skipped. Service messages and messages with protected
     * content can't be forwarded. Album grouping is kept for forwarded messages. On success, an array
     * of [MessageId](https://core.telegram.org/bots/api/#messageid) of the sent messages is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param fromChatId Unique identifier for the chat where the original messages were sent (or
     * channel username in the format `@channelusername`)
     * @param messageIds A JSON-serialized list of 1-100 identifiers of messages in the chat
     * *from_chat_id* to forward. The identifiers must be specified in a strictly increasing order.
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param disableNotification Sends the messages
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the forwarded messages from forwarding and
     * saving
     */
    public suspend fun forwardMessages(
        chatId: Long,
        fromChatId: String,
        messageIds: Iterable,
        messageThreadId: Long? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
    ): List = forwardMessages(
        chatId = chatId.toString(),
        fromChatId = fromChatId,
        messageIds = messageIds,
        messageThreadId = messageThreadId,
        disableNotification = disableNotification,
        protectContent = protectContent,
    )

    /**
     * Use this method to forward multiple messages of any kind. If some of the specified messages
     * can't be found or forwarded, they are skipped. Service messages and messages with protected
     * content can't be forwarded. Album grouping is kept for forwarded messages. On success, an array
     * of [MessageId](https://core.telegram.org/bots/api/#messageid) of the sent messages is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param fromChatId Unique identifier for the chat where the original messages were sent (or
     * channel username in the format `@channelusername`)
     * @param messageIds A JSON-serialized list of 1-100 identifiers of messages in the chat
     * *from_chat_id* to forward. The identifiers must be specified in a strictly increasing order.
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param disableNotification Sends the messages
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the forwarded messages from forwarding and
     * saving
     */
    public suspend fun forwardMessages(
        chatId: String,
        fromChatId: Long,
        messageIds: Iterable,
        messageThreadId: Long? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
    ): List = forwardMessages(
        chatId = chatId,
        fromChatId = fromChatId.toString(),
        messageIds = messageIds,
        messageThreadId = messageThreadId,
        disableNotification = disableNotification,
        protectContent = protectContent,
    )

    /**
     * Use this method to forward multiple messages of any kind. If some of the specified messages
     * can't be found or forwarded, they are skipped. Service messages and messages with protected
     * content can't be forwarded. Album grouping is kept for forwarded messages. On success, an array
     * of [MessageId](https://core.telegram.org/bots/api/#messageid) of the sent messages is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param fromChatId Unique identifier for the chat where the original messages were sent (or
     * channel username in the format `@channelusername`)
     * @param messageIds A JSON-serialized list of 1-100 identifiers of messages in the chat
     * *from_chat_id* to forward. The identifiers must be specified in a strictly increasing order.
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param disableNotification Sends the messages
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the forwarded messages from forwarding and
     * saving
     */
    public suspend fun forwardMessages(
        chatId: Long,
        fromChatId: Long,
        messageIds: Iterable,
        messageThreadId: Long? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
    ): List = forwardMessages(
        chatId = chatId.toString(),
        fromChatId = fromChatId.toString(),
        messageIds = messageIds,
        messageThreadId = messageThreadId,
        disableNotification = disableNotification,
        protectContent = protectContent,
    )

    /**
     * Use this method to copy messages of any kind. Service messages, paid media messages, giveaway
     * messages, giveaway winners messages, and invoice messages can't be copied. A quiz
     * [poll](https://core.telegram.org/bots/api/#poll) can be copied only if the value of the field
     * *correct_option_id* is known to the bot. The method is analogous to the method
     * [forwardMessage](https://core.telegram.org/bots/api/#forwardmessage), but the copied message
     * doesn't have a link to the original message. Returns the
     * [MessageId](https://core.telegram.org/bots/api/#messageid) of the sent message on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param fromChatId Unique identifier for the chat where the original message was sent (or
     * channel username in the format `@channelusername`)
     * @param messageId Message identifier in the chat specified in *from_chat_id*
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param caption New caption for media, 0-1024 characters after entities parsing. If not
     * specified, the original caption is kept
     * @param parseMode Mode for parsing entities in the new caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the new
     * caption, which can be specified instead of *parse_mode*
     * @param showCaptionAboveMedia Pass *True*, if the caption must be shown above the message
     * media. Ignored if a new caption isn't specified.
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun copyMessage(
        chatId: Long,
        fromChatId: String,
        messageId: Long,
        messageThreadId: Long? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        showCaptionAboveMedia: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): MessageId = copyMessage(
        chatId = chatId.toString(),
        fromChatId = fromChatId,
        messageId = messageId,
        messageThreadId = messageThreadId,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        showCaptionAboveMedia = showCaptionAboveMedia,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to copy messages of any kind. Service messages, paid media messages, giveaway
     * messages, giveaway winners messages, and invoice messages can't be copied. A quiz
     * [poll](https://core.telegram.org/bots/api/#poll) can be copied only if the value of the field
     * *correct_option_id* is known to the bot. The method is analogous to the method
     * [forwardMessage](https://core.telegram.org/bots/api/#forwardmessage), but the copied message
     * doesn't have a link to the original message. Returns the
     * [MessageId](https://core.telegram.org/bots/api/#messageid) of the sent message on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param fromChatId Unique identifier for the chat where the original message was sent (or
     * channel username in the format `@channelusername`)
     * @param messageId Message identifier in the chat specified in *from_chat_id*
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param caption New caption for media, 0-1024 characters after entities parsing. If not
     * specified, the original caption is kept
     * @param parseMode Mode for parsing entities in the new caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the new
     * caption, which can be specified instead of *parse_mode*
     * @param showCaptionAboveMedia Pass *True*, if the caption must be shown above the message
     * media. Ignored if a new caption isn't specified.
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun copyMessage(
        chatId: String,
        fromChatId: Long,
        messageId: Long,
        messageThreadId: Long? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        showCaptionAboveMedia: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): MessageId = copyMessage(
        chatId = chatId,
        fromChatId = fromChatId.toString(),
        messageId = messageId,
        messageThreadId = messageThreadId,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        showCaptionAboveMedia = showCaptionAboveMedia,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to copy messages of any kind. Service messages, paid media messages, giveaway
     * messages, giveaway winners messages, and invoice messages can't be copied. A quiz
     * [poll](https://core.telegram.org/bots/api/#poll) can be copied only if the value of the field
     * *correct_option_id* is known to the bot. The method is analogous to the method
     * [forwardMessage](https://core.telegram.org/bots/api/#forwardmessage), but the copied message
     * doesn't have a link to the original message. Returns the
     * [MessageId](https://core.telegram.org/bots/api/#messageid) of the sent message on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param fromChatId Unique identifier for the chat where the original message was sent (or
     * channel username in the format `@channelusername`)
     * @param messageId Message identifier in the chat specified in *from_chat_id*
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param caption New caption for media, 0-1024 characters after entities parsing. If not
     * specified, the original caption is kept
     * @param parseMode Mode for parsing entities in the new caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the new
     * caption, which can be specified instead of *parse_mode*
     * @param showCaptionAboveMedia Pass *True*, if the caption must be shown above the message
     * media. Ignored if a new caption isn't specified.
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun copyMessage(
        chatId: Long,
        fromChatId: Long,
        messageId: Long,
        messageThreadId: Long? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        showCaptionAboveMedia: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): MessageId = copyMessage(
        chatId = chatId.toString(),
        fromChatId = fromChatId.toString(),
        messageId = messageId,
        messageThreadId = messageThreadId,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        showCaptionAboveMedia = showCaptionAboveMedia,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to copy messages of any kind. If some of the specified messages can't be
     * found or copied, they are skipped. Service messages, paid media messages, giveaway messages,
     * giveaway winners messages, and invoice messages can't be copied. A quiz
     * [poll](https://core.telegram.org/bots/api/#poll) can be copied only if the value of the field
     * *correct_option_id* is known to the bot. The method is analogous to the method
     * [forwardMessages](https://core.telegram.org/bots/api/#forwardmessages), but the copied messages
     * don't have a link to the original message. Album grouping is kept for copied messages. On
     * success, an array of [MessageId](https://core.telegram.org/bots/api/#messageid) of the sent
     * messages is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param fromChatId Unique identifier for the chat where the original messages were sent (or
     * channel username in the format `@channelusername`)
     * @param messageIds A JSON-serialized list of 1-100 identifiers of messages in the chat
     * *from_chat_id* to copy. The identifiers must be specified in a strictly increasing order.
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param disableNotification Sends the messages
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent messages from forwarding and saving
     * @param removeCaption Pass *True* to copy the messages without their captions
     */
    public suspend fun copyMessages(
        chatId: Long,
        fromChatId: String,
        messageIds: Iterable,
        messageThreadId: Long? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        removeCaption: Boolean? = null,
    ): List = copyMessages(
        chatId = chatId.toString(),
        fromChatId = fromChatId,
        messageIds = messageIds,
        messageThreadId = messageThreadId,
        disableNotification = disableNotification,
        protectContent = protectContent,
        removeCaption = removeCaption,
    )

    /**
     * Use this method to copy messages of any kind. If some of the specified messages can't be
     * found or copied, they are skipped. Service messages, paid media messages, giveaway messages,
     * giveaway winners messages, and invoice messages can't be copied. A quiz
     * [poll](https://core.telegram.org/bots/api/#poll) can be copied only if the value of the field
     * *correct_option_id* is known to the bot. The method is analogous to the method
     * [forwardMessages](https://core.telegram.org/bots/api/#forwardmessages), but the copied messages
     * don't have a link to the original message. Album grouping is kept for copied messages. On
     * success, an array of [MessageId](https://core.telegram.org/bots/api/#messageid) of the sent
     * messages is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param fromChatId Unique identifier for the chat where the original messages were sent (or
     * channel username in the format `@channelusername`)
     * @param messageIds A JSON-serialized list of 1-100 identifiers of messages in the chat
     * *from_chat_id* to copy. The identifiers must be specified in a strictly increasing order.
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param disableNotification Sends the messages
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent messages from forwarding and saving
     * @param removeCaption Pass *True* to copy the messages without their captions
     */
    public suspend fun copyMessages(
        chatId: String,
        fromChatId: Long,
        messageIds: Iterable,
        messageThreadId: Long? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        removeCaption: Boolean? = null,
    ): List = copyMessages(
        chatId = chatId,
        fromChatId = fromChatId.toString(),
        messageIds = messageIds,
        messageThreadId = messageThreadId,
        disableNotification = disableNotification,
        protectContent = protectContent,
        removeCaption = removeCaption,
    )

    /**
     * Use this method to copy messages of any kind. If some of the specified messages can't be
     * found or copied, they are skipped. Service messages, paid media messages, giveaway messages,
     * giveaway winners messages, and invoice messages can't be copied. A quiz
     * [poll](https://core.telegram.org/bots/api/#poll) can be copied only if the value of the field
     * *correct_option_id* is known to the bot. The method is analogous to the method
     * [forwardMessages](https://core.telegram.org/bots/api/#forwardmessages), but the copied messages
     * don't have a link to the original message. Album grouping is kept for copied messages. On
     * success, an array of [MessageId](https://core.telegram.org/bots/api/#messageid) of the sent
     * messages is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param fromChatId Unique identifier for the chat where the original messages were sent (or
     * channel username in the format `@channelusername`)
     * @param messageIds A JSON-serialized list of 1-100 identifiers of messages in the chat
     * *from_chat_id* to copy. The identifiers must be specified in a strictly increasing order.
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param disableNotification Sends the messages
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent messages from forwarding and saving
     * @param removeCaption Pass *True* to copy the messages without their captions
     */
    public suspend fun copyMessages(
        chatId: Long,
        fromChatId: Long,
        messageIds: Iterable,
        messageThreadId: Long? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        removeCaption: Boolean? = null,
    ): List = copyMessages(
        chatId = chatId.toString(),
        fromChatId = fromChatId.toString(),
        messageIds = messageIds,
        messageThreadId = messageThreadId,
        disableNotification = disableNotification,
        protectContent = protectContent,
        removeCaption = removeCaption,
    )

    /**
     * Use this method to send photos. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param photo Photo to send. Pass a file_id as String to send a photo that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a photo from
     * the Internet, or upload a new photo using multipart/form-data. The photo must be at most 10 MB
     * in size. The photo's width and height must not exceed 10000 in total. Width and height ratio
     * must be at most 20. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param caption Photo caption (may also be used when resending photos by *file_id*), 0-1024
     * characters after entities parsing
     * @param parseMode Mode for parsing entities in the photo caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param showCaptionAboveMedia Pass *True*, if the caption must be shown above the message
     * media
     * @param hasSpoiler Pass *True* if the photo needs to be covered with a spoiler animation
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendPhoto(
        chatId: Long,
        photo: Input,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        showCaptionAboveMedia: Boolean? = null,
        hasSpoiler: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendPhoto(
        chatId = chatId.toString(),
        photo = photo,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        showCaptionAboveMedia = showCaptionAboveMedia,
        hasSpoiler = hasSpoiler,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send photos. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param photo Photo to send. Pass a file_id as String to send a photo that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a photo from
     * the Internet, or upload a new photo using multipart/form-data. The photo must be at most 10 MB
     * in size. The photo's width and height must not exceed 10000 in total. Width and height ratio
     * must be at most 20. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param caption Photo caption (may also be used when resending photos by *file_id*), 0-1024
     * characters after entities parsing
     * @param parseMode Mode for parsing entities in the photo caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param showCaptionAboveMedia Pass *True*, if the caption must be shown above the message
     * media
     * @param hasSpoiler Pass *True* if the photo needs to be covered with a spoiler animation
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendPhoto(
        chatId: String,
        photo: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        showCaptionAboveMedia: Boolean? = null,
        hasSpoiler: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendPhoto(
        chatId = chatId,
        photo = StringInput(photo),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        showCaptionAboveMedia = showCaptionAboveMedia,
        hasSpoiler = hasSpoiler,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send photos. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param photo Photo to send. Pass a file_id as String to send a photo that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a photo from
     * the Internet, or upload a new photo using multipart/form-data. The photo must be at most 10 MB
     * in size. The photo's width and height must not exceed 10000 in total. Width and height ratio
     * must be at most 20. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param caption Photo caption (may also be used when resending photos by *file_id*), 0-1024
     * characters after entities parsing
     * @param parseMode Mode for parsing entities in the photo caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param showCaptionAboveMedia Pass *True*, if the caption must be shown above the message
     * media
     * @param hasSpoiler Pass *True* if the photo needs to be covered with a spoiler animation
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendPhoto(
        chatId: Long,
        photo: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        showCaptionAboveMedia: Boolean? = null,
        hasSpoiler: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendPhoto(
        chatId = chatId.toString(),
        photo = StringInput(photo),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        showCaptionAboveMedia = showCaptionAboveMedia,
        hasSpoiler = hasSpoiler,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send audio files, if you want Telegram clients to display them in the
     * music player. Your audio must be in the .MP3 or .M4A format. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can currently send
     * audio files of up to 50 MB in size, this limit may be changed in the future.
     *
     * For sending voice messages, use the
     * [sendVoice](https://core.telegram.org/bots/api/#sendvoice) method instead.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param audio Audio file to send. Pass a file_id as String to send an audio file that exists
     * on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an audio
     * file from the Internet, or upload a new one using multipart/form-data. [More information on
     * Sending Files ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param caption Audio caption, 0-1024 characters after entities parsing
     * @param parseMode Mode for parsing entities in the audio caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param duration Duration of the audio in seconds
     * @param performer Performer
     * @param title Track name
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendAudio(
        chatId: Long,
        audio: Input,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        duration: Int? = null,
        performer: String? = null,
        title: String? = null,
        thumbnail: ContentInput? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendAudio(
        chatId = chatId.toString(),
        audio = audio,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        duration = duration,
        performer = performer,
        title = title,
        thumbnail = thumbnail,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send audio files, if you want Telegram clients to display them in the
     * music player. Your audio must be in the .MP3 or .M4A format. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can currently send
     * audio files of up to 50 MB in size, this limit may be changed in the future.
     *
     * For sending voice messages, use the
     * [sendVoice](https://core.telegram.org/bots/api/#sendvoice) method instead.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param audio Audio file to send. Pass a file_id as String to send an audio file that exists
     * on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an audio
     * file from the Internet, or upload a new one using multipart/form-data. [More information on
     * Sending Files ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param caption Audio caption, 0-1024 characters after entities parsing
     * @param parseMode Mode for parsing entities in the audio caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param duration Duration of the audio in seconds
     * @param performer Performer
     * @param title Track name
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendAudio(
        chatId: String,
        audio: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        duration: Int? = null,
        performer: String? = null,
        title: String? = null,
        thumbnail: ContentInput? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendAudio(
        chatId = chatId,
        audio = StringInput(audio),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        duration = duration,
        performer = performer,
        title = title,
        thumbnail = thumbnail,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send audio files, if you want Telegram clients to display them in the
     * music player. Your audio must be in the .MP3 or .M4A format. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can currently send
     * audio files of up to 50 MB in size, this limit may be changed in the future.
     *
     * For sending voice messages, use the
     * [sendVoice](https://core.telegram.org/bots/api/#sendvoice) method instead.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param audio Audio file to send. Pass a file_id as String to send an audio file that exists
     * on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an audio
     * file from the Internet, or upload a new one using multipart/form-data. [More information on
     * Sending Files ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param caption Audio caption, 0-1024 characters after entities parsing
     * @param parseMode Mode for parsing entities in the audio caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param duration Duration of the audio in seconds
     * @param performer Performer
     * @param title Track name
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendAudio(
        chatId: Long,
        audio: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        duration: Int? = null,
        performer: String? = null,
        title: String? = null,
        thumbnail: ContentInput? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendAudio(
        chatId = chatId.toString(),
        audio = StringInput(audio),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        duration = duration,
        performer = performer,
        title = title,
        thumbnail = thumbnail,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send general files. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can currently send
     * files of any type of up to 50 MB in size, this limit may be changed in the future.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param document File to send. Pass a file_id as String to send a file that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the
     * Internet, or upload a new one using multipart/form-data. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param caption Document caption (may also be used when resending documents by *file_id*),
     * 0-1024 characters after entities parsing
     * @param parseMode Mode for parsing entities in the document caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param disableContentTypeDetection Disables automatic server-side content type detection for
     * files uploaded using multipart/form-data
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendDocument(
        chatId: Long,
        document: Input,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        thumbnail: ContentInput? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        disableContentTypeDetection: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendDocument(
        chatId = chatId.toString(),
        document = document,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        thumbnail = thumbnail,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        disableContentTypeDetection = disableContentTypeDetection,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send general files. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can currently send
     * files of any type of up to 50 MB in size, this limit may be changed in the future.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param document File to send. Pass a file_id as String to send a file that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the
     * Internet, or upload a new one using multipart/form-data. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param caption Document caption (may also be used when resending documents by *file_id*),
     * 0-1024 characters after entities parsing
     * @param parseMode Mode for parsing entities in the document caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param disableContentTypeDetection Disables automatic server-side content type detection for
     * files uploaded using multipart/form-data
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendDocument(
        chatId: String,
        document: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        thumbnail: ContentInput? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        disableContentTypeDetection: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendDocument(
        chatId = chatId,
        document = StringInput(document),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        thumbnail = thumbnail,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        disableContentTypeDetection = disableContentTypeDetection,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send general files. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can currently send
     * files of any type of up to 50 MB in size, this limit may be changed in the future.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param document File to send. Pass a file_id as String to send a file that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the
     * Internet, or upload a new one using multipart/form-data. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param caption Document caption (may also be used when resending documents by *file_id*),
     * 0-1024 characters after entities parsing
     * @param parseMode Mode for parsing entities in the document caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param disableContentTypeDetection Disables automatic server-side content type detection for
     * files uploaded using multipart/form-data
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendDocument(
        chatId: Long,
        document: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        thumbnail: ContentInput? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        disableContentTypeDetection: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendDocument(
        chatId = chatId.toString(),
        document = StringInput(document),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        thumbnail = thumbnail,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        disableContentTypeDetection = disableContentTypeDetection,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send video files, Telegram clients support MPEG4 videos (other formats may
     * be sent as [Document](https://core.telegram.org/bots/api/#document)). On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can currently send
     * video files of up to 50 MB in size, this limit may be changed in the future.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param video Video to send. Pass a file_id as String to send a video that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a video from
     * the Internet, or upload a new video using multipart/form-data. [More information on Sending
     * Files ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param duration Duration of sent video in seconds
     * @param width Video width
     * @param height Video height
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param caption Video caption (may also be used when resending videos by *file_id*), 0-1024
     * characters after entities parsing
     * @param parseMode Mode for parsing entities in the video caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param showCaptionAboveMedia Pass *True*, if the caption must be shown above the message
     * media
     * @param hasSpoiler Pass *True* if the video needs to be covered with a spoiler animation
     * @param supportsStreaming Pass *True* if the uploaded video is suitable for streaming
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendVideo(
        chatId: Long,
        video: Input,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        duration: Int? = null,
        width: Int? = null,
        height: Int? = null,
        thumbnail: ContentInput? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        showCaptionAboveMedia: Boolean? = null,
        hasSpoiler: Boolean? = null,
        supportsStreaming: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendVideo(
        chatId = chatId.toString(),
        video = video,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        duration = duration,
        width = width,
        height = height,
        thumbnail = thumbnail,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        showCaptionAboveMedia = showCaptionAboveMedia,
        hasSpoiler = hasSpoiler,
        supportsStreaming = supportsStreaming,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send video files, Telegram clients support MPEG4 videos (other formats may
     * be sent as [Document](https://core.telegram.org/bots/api/#document)). On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can currently send
     * video files of up to 50 MB in size, this limit may be changed in the future.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param video Video to send. Pass a file_id as String to send a video that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a video from
     * the Internet, or upload a new video using multipart/form-data. [More information on Sending
     * Files ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param duration Duration of sent video in seconds
     * @param width Video width
     * @param height Video height
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param caption Video caption (may also be used when resending videos by *file_id*), 0-1024
     * characters after entities parsing
     * @param parseMode Mode for parsing entities in the video caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param showCaptionAboveMedia Pass *True*, if the caption must be shown above the message
     * media
     * @param hasSpoiler Pass *True* if the video needs to be covered with a spoiler animation
     * @param supportsStreaming Pass *True* if the uploaded video is suitable for streaming
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendVideo(
        chatId: String,
        video: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        duration: Int? = null,
        width: Int? = null,
        height: Int? = null,
        thumbnail: ContentInput? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        showCaptionAboveMedia: Boolean? = null,
        hasSpoiler: Boolean? = null,
        supportsStreaming: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendVideo(
        chatId = chatId,
        video = StringInput(video),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        duration = duration,
        width = width,
        height = height,
        thumbnail = thumbnail,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        showCaptionAboveMedia = showCaptionAboveMedia,
        hasSpoiler = hasSpoiler,
        supportsStreaming = supportsStreaming,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send video files, Telegram clients support MPEG4 videos (other formats may
     * be sent as [Document](https://core.telegram.org/bots/api/#document)). On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can currently send
     * video files of up to 50 MB in size, this limit may be changed in the future.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param video Video to send. Pass a file_id as String to send a video that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a video from
     * the Internet, or upload a new video using multipart/form-data. [More information on Sending
     * Files ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param duration Duration of sent video in seconds
     * @param width Video width
     * @param height Video height
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param caption Video caption (may also be used when resending videos by *file_id*), 0-1024
     * characters after entities parsing
     * @param parseMode Mode for parsing entities in the video caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param showCaptionAboveMedia Pass *True*, if the caption must be shown above the message
     * media
     * @param hasSpoiler Pass *True* if the video needs to be covered with a spoiler animation
     * @param supportsStreaming Pass *True* if the uploaded video is suitable for streaming
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendVideo(
        chatId: Long,
        video: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        duration: Int? = null,
        width: Int? = null,
        height: Int? = null,
        thumbnail: ContentInput? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        showCaptionAboveMedia: Boolean? = null,
        hasSpoiler: Boolean? = null,
        supportsStreaming: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendVideo(
        chatId = chatId.toString(),
        video = StringInput(video),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        duration = duration,
        width = width,
        height = height,
        thumbnail = thumbnail,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        showCaptionAboveMedia = showCaptionAboveMedia,
        hasSpoiler = hasSpoiler,
        supportsStreaming = supportsStreaming,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send animation files (GIF or H.264/MPEG-4 AVC video without sound). On
     * success, the sent [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can
     * currently send animation files of up to 50 MB in size, this limit may be changed in the future.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param animation Animation to send. Pass a file_id as String to send an animation that exists
     * on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an
     * animation from the Internet, or upload a new animation using multipart/form-data. [More
     * information on Sending Files ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param duration Duration of sent animation in seconds
     * @param width Animation width
     * @param height Animation height
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param caption Animation caption (may also be used when resending animation by *file_id*),
     * 0-1024 characters after entities parsing
     * @param parseMode Mode for parsing entities in the animation caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param showCaptionAboveMedia Pass *True*, if the caption must be shown above the message
     * media
     * @param hasSpoiler Pass *True* if the animation needs to be covered with a spoiler animation
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendAnimation(
        chatId: Long,
        animation: Input,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        duration: Int? = null,
        width: Int? = null,
        height: Int? = null,
        thumbnail: ContentInput? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        showCaptionAboveMedia: Boolean? = null,
        hasSpoiler: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendAnimation(
        chatId = chatId.toString(),
        animation = animation,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        duration = duration,
        width = width,
        height = height,
        thumbnail = thumbnail,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        showCaptionAboveMedia = showCaptionAboveMedia,
        hasSpoiler = hasSpoiler,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send animation files (GIF or H.264/MPEG-4 AVC video without sound). On
     * success, the sent [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can
     * currently send animation files of up to 50 MB in size, this limit may be changed in the future.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param animation Animation to send. Pass a file_id as String to send an animation that exists
     * on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an
     * animation from the Internet, or upload a new animation using multipart/form-data. [More
     * information on Sending Files ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param duration Duration of sent animation in seconds
     * @param width Animation width
     * @param height Animation height
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param caption Animation caption (may also be used when resending animation by *file_id*),
     * 0-1024 characters after entities parsing
     * @param parseMode Mode for parsing entities in the animation caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param showCaptionAboveMedia Pass *True*, if the caption must be shown above the message
     * media
     * @param hasSpoiler Pass *True* if the animation needs to be covered with a spoiler animation
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendAnimation(
        chatId: String,
        animation: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        duration: Int? = null,
        width: Int? = null,
        height: Int? = null,
        thumbnail: ContentInput? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        showCaptionAboveMedia: Boolean? = null,
        hasSpoiler: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendAnimation(
        chatId = chatId,
        animation = StringInput(animation),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        duration = duration,
        width = width,
        height = height,
        thumbnail = thumbnail,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        showCaptionAboveMedia = showCaptionAboveMedia,
        hasSpoiler = hasSpoiler,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send animation files (GIF or H.264/MPEG-4 AVC video without sound). On
     * success, the sent [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can
     * currently send animation files of up to 50 MB in size, this limit may be changed in the future.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param animation Animation to send. Pass a file_id as String to send an animation that exists
     * on the Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get an
     * animation from the Internet, or upload a new animation using multipart/form-data. [More
     * information on Sending Files ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param duration Duration of sent animation in seconds
     * @param width Animation width
     * @param height Animation height
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param caption Animation caption (may also be used when resending animation by *file_id*),
     * 0-1024 characters after entities parsing
     * @param parseMode Mode for parsing entities in the animation caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param showCaptionAboveMedia Pass *True*, if the caption must be shown above the message
     * media
     * @param hasSpoiler Pass *True* if the animation needs to be covered with a spoiler animation
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendAnimation(
        chatId: Long,
        animation: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        duration: Int? = null,
        width: Int? = null,
        height: Int? = null,
        thumbnail: ContentInput? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        showCaptionAboveMedia: Boolean? = null,
        hasSpoiler: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendAnimation(
        chatId = chatId.toString(),
        animation = StringInput(animation),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        duration = duration,
        width = width,
        height = height,
        thumbnail = thumbnail,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        showCaptionAboveMedia = showCaptionAboveMedia,
        hasSpoiler = hasSpoiler,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send audio files, if you want Telegram clients to display the file as a
     * playable voice message. For this to work, your audio must be in an .OGG file encoded with OPUS,
     * or in .MP3 format, or in .M4A format (other formats may be sent as
     * [Audio](https://core.telegram.org/bots/api/#audio) or
     * [Document](https://core.telegram.org/bots/api/#document)). On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can currently send
     * voice messages of up to 50 MB in size, this limit may be changed in the future.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param voice Audio file to send. Pass a file_id as String to send a file that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the
     * Internet, or upload a new one using multipart/form-data. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param caption Voice message caption, 0-1024 characters after entities parsing
     * @param parseMode Mode for parsing entities in the voice message caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param duration Duration of the voice message in seconds
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendVoice(
        chatId: Long,
        voice: Input,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        duration: Int? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendVoice(
        chatId = chatId.toString(),
        voice = voice,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        duration = duration,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send audio files, if you want Telegram clients to display the file as a
     * playable voice message. For this to work, your audio must be in an .OGG file encoded with OPUS,
     * or in .MP3 format, or in .M4A format (other formats may be sent as
     * [Audio](https://core.telegram.org/bots/api/#audio) or
     * [Document](https://core.telegram.org/bots/api/#document)). On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can currently send
     * voice messages of up to 50 MB in size, this limit may be changed in the future.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param voice Audio file to send. Pass a file_id as String to send a file that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the
     * Internet, or upload a new one using multipart/form-data. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param caption Voice message caption, 0-1024 characters after entities parsing
     * @param parseMode Mode for parsing entities in the voice message caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param duration Duration of the voice message in seconds
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendVoice(
        chatId: String,
        voice: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        duration: Int? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendVoice(
        chatId = chatId,
        voice = StringInput(voice),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        duration = duration,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send audio files, if you want Telegram clients to display the file as a
     * playable voice message. For this to work, your audio must be in an .OGG file encoded with OPUS,
     * or in .MP3 format, or in .M4A format (other formats may be sent as
     * [Audio](https://core.telegram.org/bots/api/#audio) or
     * [Document](https://core.telegram.org/bots/api/#document)). On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned. Bots can currently send
     * voice messages of up to 50 MB in size, this limit may be changed in the future.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param voice Audio file to send. Pass a file_id as String to send a file that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a file from the
     * Internet, or upload a new one using multipart/form-data. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param caption Voice message caption, 0-1024 characters after entities parsing
     * @param parseMode Mode for parsing entities in the voice message caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param duration Duration of the voice message in seconds
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendVoice(
        chatId: Long,
        voice: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        duration: Int? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendVoice(
        chatId = chatId.toString(),
        voice = StringInput(voice),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        duration = duration,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * As of [v.4.0](https://telegram.org/blog/video-messages-and-telescope), Telegram clients
     * support rounded square MPEG4 videos of up to 1 minute long. Use this method to send video
     * messages. On success, the sent [Message](https://core.telegram.org/bots/api/#message) is
     * returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param videoNote Video note to send. Pass a file_id as String to send a video note that
     * exists on the Telegram servers (recommended) or upload a new video using multipart/form-data.
     * [More information on Sending Files ](https://core.telegram.org/bots/api/#sending-files). Sending
     * video notes by a URL is currently unsupported
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param duration Duration of sent video in seconds
     * @param length Video width and height, i.e. diameter of the video message
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendVideoNote(
        chatId: Long,
        videoNote: Input,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        duration: Int? = null,
        length: Int? = null,
        thumbnail: ContentInput? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendVideoNote(
        chatId = chatId.toString(),
        videoNote = videoNote,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        duration = duration,
        length = length,
        thumbnail = thumbnail,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * As of [v.4.0](https://telegram.org/blog/video-messages-and-telescope), Telegram clients
     * support rounded square MPEG4 videos of up to 1 minute long. Use this method to send video
     * messages. On success, the sent [Message](https://core.telegram.org/bots/api/#message) is
     * returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param videoNote Video note to send. Pass a file_id as String to send a video note that
     * exists on the Telegram servers (recommended) or upload a new video using multipart/form-data.
     * [More information on Sending Files ](https://core.telegram.org/bots/api/#sending-files). Sending
     * video notes by a URL is currently unsupported
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param duration Duration of sent video in seconds
     * @param length Video width and height, i.e. diameter of the video message
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendVideoNote(
        chatId: String,
        videoNote: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        duration: Int? = null,
        length: Int? = null,
        thumbnail: ContentInput? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendVideoNote(
        chatId = chatId,
        videoNote = StringInput(videoNote),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        duration = duration,
        length = length,
        thumbnail = thumbnail,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * As of [v.4.0](https://telegram.org/blog/video-messages-and-telescope), Telegram clients
     * support rounded square MPEG4 videos of up to 1 minute long. Use this method to send video
     * messages. On success, the sent [Message](https://core.telegram.org/bots/api/#message) is
     * returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param videoNote Video note to send. Pass a file_id as String to send a video note that
     * exists on the Telegram servers (recommended) or upload a new video using multipart/form-data.
     * [More information on Sending Files ](https://core.telegram.org/bots/api/#sending-files). Sending
     * video notes by a URL is currently unsupported
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param duration Duration of sent video in seconds
     * @param length Video width and height, i.e. diameter of the video message
     * @param thumbnail Thumbnail of the file sent; can be ignored if thumbnail generation for the
     * file is supported server-side. The thumbnail should be in JPEG format and less than 200 kB in
     * size. A thumbnail's width and height should not exceed 320. Ignored if the file is not uploaded
     * using multipart/form-data. Thumbnails can't be reused and can be only uploaded as a new file, so
     * you can pass “attach://\” if the thumbnail was uploaded using
     * multipart/form-data under \. [More information on Sending Files
     * ](https://core.telegram.org/bots/api/#sending-files)
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendVideoNote(
        chatId: Long,
        videoNote: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        duration: Int? = null,
        length: Int? = null,
        thumbnail: ContentInput? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendVideoNote(
        chatId = chatId.toString(),
        videoNote = StringInput(videoNote),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        duration = duration,
        length = length,
        thumbnail = thumbnail,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send paid media. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`). If the chat is a channel, all Telegram Star proceeds from this media
     * will be credited to the chat's balance. Otherwise, they will be credited to the bot's balance.
     * @param starCount The number of Telegram Stars that must be paid to buy access to the media;
     * 1-2500
     * @param media A JSON-serialized array describing the media to be sent; up to 10 items
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param payload Bot-defined paid media payload, 0-128 bytes. This will not be displayed to the
     * user, use it for your internal processes.
     * @param caption Media caption, 0-1024 characters after entities parsing
     * @param parseMode Mode for parsing entities in the media caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param showCaptionAboveMedia Pass *True*, if the caption must be shown above the message
     * media
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendPaidMedia(
        chatId: Long,
        starCount: Int,
        media: Iterable,
        businessConnectionId: String? = null,
        payload: String? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        showCaptionAboveMedia: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendPaidMedia(
        chatId = chatId.toString(),
        starCount = starCount,
        media = media,
        businessConnectionId = businessConnectionId,
        payload = payload,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        showCaptionAboveMedia = showCaptionAboveMedia,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send a group of photos, videos, documents or audios as an album. Documents
     * and audio files can be only grouped in an album with messages of the same type. On success, an
     * array of [Messages](https://core.telegram.org/bots/api/#message) that were sent is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param media A JSON-serialized array describing messages to be sent, must include 2-10 items
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param disableNotification Sends messages
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent messages from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     */
    public suspend fun sendMediaGroup(
        chatId: Long,
        media: Iterable,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
    ): List = sendMediaGroup(
        chatId = chatId.toString(),
        media = media,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
    )

    /**
     * Use this method to send point on the map. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param latitude Latitude of the location
     * @param longitude Longitude of the location
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param horizontalAccuracy The radius of uncertainty for the location, measured in meters;
     * 0-1500
     * @param livePeriod Period in seconds during which the location will be updated (see [Live
     * Locations](https://telegram.org/blog/live-locations), should be between 60 and 86400, or
     * 0x7FFFFFFF for live locations that can be edited indefinitely.
     * @param heading For live locations, a direction in which the user is moving, in degrees. Must
     * be between 1 and 360 if specified.
     * @param proximityAlertRadius For live locations, a maximum distance for proximity alerts about
     * approaching another chat member, in meters. Must be between 1 and 100000 if specified.
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendLocation(
        chatId: Long,
        latitude: Double,
        longitude: Double,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        horizontalAccuracy: Double? = null,
        livePeriod: Int? = null,
        heading: Int? = null,
        proximityAlertRadius: Int? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendLocation(
        chatId = chatId.toString(),
        latitude = latitude,
        longitude = longitude,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        horizontalAccuracy = horizontalAccuracy,
        livePeriod = livePeriod,
        heading = heading,
        proximityAlertRadius = proximityAlertRadius,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send information about a venue. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param latitude Latitude of the venue
     * @param longitude Longitude of the venue
     * @param title Name of the venue
     * @param address Address of the venue
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param foursquareId Foursquare identifier of the venue
     * @param foursquareType Foursquare type of the venue, if known. (For example,
     * “arts_entertainment/default”, “arts_entertainment/aquarium” or “food/icecream”.)
     * @param googlePlaceId Google Places identifier of the venue
     * @param googlePlaceType Google Places type of the venue. (See [supported
     * types](https://developers.google.com/places/web-service/supported_types).)
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendVenue(
        chatId: Long,
        latitude: Double,
        longitude: Double,
        title: String,
        address: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        foursquareId: String? = null,
        foursquareType: String? = null,
        googlePlaceId: String? = null,
        googlePlaceType: String? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendVenue(
        chatId = chatId.toString(),
        latitude = latitude,
        longitude = longitude,
        title = title,
        address = address,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        foursquareId = foursquareId,
        foursquareType = foursquareType,
        googlePlaceId = googlePlaceId,
        googlePlaceType = googlePlaceType,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send phone contacts. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param phoneNumber Contact's phone number
     * @param firstName Contact's first name
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param lastName Contact's last name
     * @param vcard Additional data about the contact in the form of a
     * [vCard](https://en.wikipedia.org/wiki/VCard), 0-2048 bytes
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendContact(
        chatId: Long,
        phoneNumber: String,
        firstName: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        lastName: String? = null,
        vcard: String? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendContact(
        chatId = chatId.toString(),
        phoneNumber = phoneNumber,
        firstName = firstName,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        lastName = lastName,
        vcard = vcard,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send a native poll. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param question Poll question, 1-300 characters
     * @param options A JSON-serialized list of 2-10 answer options
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param questionParseMode Mode for parsing entities in the question. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details. Currently,
     * only custom emoji entities are allowed
     * @param questionEntities A JSON-serialized list of special entities that appear in the poll
     * question. It can be specified instead of *question_parse_mode*
     * @param isAnonymous *True*, if the poll needs to be anonymous, defaults to *True*
     * @param type Poll type, “quiz” or “regular”, defaults to “regular”
     * @param allowsMultipleAnswers *True*, if the poll allows multiple answers, ignored for polls
     * in quiz mode, defaults to *False*
     * @param correctOptionId 0-based identifier of the correct answer option, required for polls in
     * quiz mode
     * @param explanation Text that is shown when a user chooses an incorrect answer or taps on the
     * lamp icon in a quiz-style poll, 0-200 characters with at most 2 line feeds after entities
     * parsing
     * @param explanationParseMode Mode for parsing entities in the explanation. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param explanationEntities A JSON-serialized list of special entities that appear in the poll
     * explanation. It can be specified instead of *explanation_parse_mode*
     * @param openPeriod Amount of time in seconds the poll will be active after creation, 5-600.
     * Can't be used together with *close_date*.
     * @param closeDate Point in time (Unix timestamp) when the poll will be automatically closed.
     * Must be at least 5 and no more than 600 seconds in the future. Can't be used together with
     * *open_period*.
     * @param isClosed Pass *True* if the poll needs to be immediately closed. This can be useful
     * for poll preview.
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendPoll(
        chatId: Long,
        question: String,
        options: Iterable,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        questionParseMode: String? = null,
        questionEntities: Iterable? = null,
        isAnonymous: Boolean? = null,
        type: String? = null,
        allowsMultipleAnswers: Boolean? = null,
        correctOptionId: Long? = null,
        explanation: String? = null,
        explanationParseMode: String? = null,
        explanationEntities: Iterable? = null,
        openPeriod: Int? = null,
        closeDate: Long? = null,
        isClosed: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendPoll(
        chatId = chatId.toString(),
        question = question,
        options = options,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        questionParseMode = questionParseMode,
        questionEntities = questionEntities,
        isAnonymous = isAnonymous,
        type = type,
        allowsMultipleAnswers = allowsMultipleAnswers,
        correctOptionId = correctOptionId,
        explanation = explanation,
        explanationParseMode = explanationParseMode,
        explanationEntities = explanationEntities,
        openPeriod = openPeriod,
        closeDate = closeDate,
        isClosed = isClosed,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send an animated emoji that will display a random value. On success, the
     * sent [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param emoji Emoji on which the dice throw animation is based. Currently, must be one of
     * “🎲”, “🎯”, “🏀”, “⚽”, “🎳”, or “🎰”. Dice can have values 1-6 for “🎲”, “🎯” and “🎳”, values
     * 1-5 for “🏀” and “⚽”, and values 1-64 for “🎰”. Defaults to “🎲”
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendDice(
        chatId: Long,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        emoji: String? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendDice(
        chatId = chatId.toString(),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        emoji = emoji,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method when you need to tell the user that something is happening on the bot's side.
     * The status is set for 5 seconds or less (when a message arrives from your bot, Telegram clients
     * clear its typing status). Returns *True* on success.
     *
     * Example: The [ImageBot](https://t.me/imagebot) needs some time to process a request and
     * upload the image. Instead of sending a text message along the lines of “Retrieving image, please
     * wait…”, the bot may use [sendChatAction](https://core.telegram.org/bots/api/#sendchataction)
     * with *action* = *upload_photo*. The user will see a “sending photo” status for the bot.
     *
     * We only recommend using this method when a response from the bot will take a **noticeable**
     * amount of time to arrive.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param action Type of action to broadcast. Choose one, depending on what the user is about to
     * receive: *typing* for [text messages](https://core.telegram.org/bots/api/#sendmessage),
     * *upload_photo* for [photos](https://core.telegram.org/bots/api/#sendphoto), *record_video* or
     * *upload_video* for [videos](https://core.telegram.org/bots/api/#sendvideo), *record_voice* or
     * *upload_voice* for [voice notes](https://core.telegram.org/bots/api/#sendvoice),
     * *upload_document* for [general files](https://core.telegram.org/bots/api/#senddocument),
     * *choose_sticker* for [stickers](https://core.telegram.org/bots/api/#sendsticker),
     * *find_location* for [location data](https://core.telegram.org/bots/api/#sendlocation),
     * *record_video_note* or *upload_video_note* for [video
     * notes](https://core.telegram.org/bots/api/#sendvideonote).
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the action will be sent
     * @param messageThreadId Unique identifier for the target message thread; for supergroups only
     */
    public suspend fun sendChatAction(
        chatId: Long,
        action: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
    ): Boolean = sendChatAction(
        chatId = chatId.toString(),
        action = action,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
    )

    /**
     * Use this method to change the chosen reactions on a message. Service messages can't be
     * reacted to. Automatically forwarded messages from a channel to its discussion group have the
     * same available reactions as messages in the channel. Bots can't use paid reactions. Returns
     * *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param messageId Identifier of the target message. If the message belongs to a media group,
     * the reaction is set to the first non-deleted message in the group instead.
     * @param reaction A JSON-serialized list of reaction types to set on the message. Currently, as
     * non-premium users, bots can set up to one reaction per message. A custom emoji reaction can be
     * used if it is either already present on the message or explicitly allowed by chat
     * administrators. Paid reactions can't be used by bots.
     * @param isBig Pass *True* to set the reaction with a big animation
     */
    public suspend fun setMessageReaction(
        chatId: Long,
        messageId: Long,
        reaction: Iterable? = null,
        isBig: Boolean? = null,
    ): Boolean = setMessageReaction(
        chatId = chatId.toString(),
        messageId = messageId,
        reaction = reaction,
        isBig = isBig,
    )

    /**
     * Use this method to ban a user in a group, a supergroup or a channel. In the case of
     * supergroups and channels, the user will not be able to return to the chat on their own using
     * invite links, etc., unless [unbanned](https://core.telegram.org/bots/api/#unbanchatmember)
     * first. The bot must be an administrator in the chat for this to work and must have the
     * appropriate administrator rights. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target group or username of the target supergroup or
     * channel (in the format `@channelusername`)
     * @param userId Unique identifier of the target user
     * @param untilDate Date when the user will be unbanned; Unix time. If user is banned for more
     * than 366 days or less than 30 seconds from the current time they are considered to be banned
     * forever. Applied for supergroups and channels only.
     * @param revokeMessages Pass *True* to delete all messages from the chat for the user that is
     * being removed. If *False*, the user will be able to see messages in the group that were sent
     * before the user was removed. Always *True* for supergroups and channels.
     */
    public suspend fun banChatMember(
        chatId: Long,
        userId: Long,
        untilDate: Long? = null,
        revokeMessages: Boolean? = null,
    ): Boolean = banChatMember(
        chatId = chatId.toString(),
        userId = userId,
        untilDate = untilDate,
        revokeMessages = revokeMessages,
    )

    /**
     * Use this method to unban a previously banned user in a supergroup or channel. The user will
     * **not** return to the group or channel automatically, but will be able to join via link, etc.
     * The bot must be an administrator for this to work. By default, this method guarantees that after
     * the call the user is not a member of the chat, but will be able to join it. So if the user is a
     * member of the chat they will also be **removed** from the chat. If you don't want this, use the
     * parameter *only_if_banned*. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target group or username of the target supergroup or
     * channel (in the format `@channelusername`)
     * @param userId Unique identifier of the target user
     * @param onlyIfBanned Do nothing if the user is not banned
     */
    public suspend fun unbanChatMember(
        chatId: Long,
        userId: Long,
        onlyIfBanned: Boolean? = null,
    ): Boolean = unbanChatMember(
        chatId = chatId.toString(),
        userId = userId,
        onlyIfBanned = onlyIfBanned,
    )

    /**
     * Use this method to restrict a user in a supergroup. The bot must be an administrator in the
     * supergroup for this to work and must have the appropriate administrator rights. Pass *True* for
     * all permissions to lift restrictions from a user. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     * @param userId Unique identifier of the target user
     * @param permissions A JSON-serialized object for new user permissions
     * @param useIndependentChatPermissions Pass *True* if chat permissions are set independently.
     * Otherwise, the *can_send_other_messages* and *can_add_web_page_previews* permissions will imply
     * the *can_send_messages*, *can_send_audios*, *can_send_documents*, *can_send_photos*,
     * *can_send_videos*, *can_send_video_notes*, and *can_send_voice_notes* permissions; the
     * *can_send_polls* permission will imply the *can_send_messages* permission.
     * @param untilDate Date when restrictions will be lifted for the user; Unix time. If user is
     * restricted for more than 366 days or less than 30 seconds from the current time, they are
     * considered to be restricted forever
     */
    public suspend fun restrictChatMember(
        chatId: Long,
        userId: Long,
        permissions: ChatPermissions,
        useIndependentChatPermissions: Boolean? = null,
        untilDate: Long? = null,
    ): Boolean = restrictChatMember(
        chatId = chatId.toString(),
        userId = userId,
        permissions = permissions,
        useIndependentChatPermissions = useIndependentChatPermissions,
        untilDate = untilDate,
    )

    /**
     * Use this method to promote or demote a user in a supergroup or a channel. The bot must be an
     * administrator in the chat for this to work and must have the appropriate administrator rights.
     * Pass *False* for all boolean parameters to demote a user. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param userId Unique identifier of the target user
     * @param isAnonymous Pass *True* if the administrator's presence in the chat is hidden
     * @param canManageChat Pass *True* if the administrator can access the chat event log, get
     * boost list, see hidden supergroup and channel members, report spam messages and ignore slow
     * mode. Implied by any other administrator privilege.
     * @param canDeleteMessages Pass *True* if the administrator can delete messages of other users
     * @param canManageVideoChats Pass *True* if the administrator can manage video chats
     * @param canRestrictMembers Pass *True* if the administrator can restrict, ban or unban chat
     * members, or access supergroup statistics
     * @param canPromoteMembers Pass *True* if the administrator can add new administrators with a
     * subset of their own privileges or demote administrators that they have promoted, directly or
     * indirectly (promoted by administrators that were appointed by him)
     * @param canChangeInfo Pass *True* if the administrator can change chat title, photo and other
     * settings
     * @param canInviteUsers Pass *True* if the administrator can invite new users to the chat
     * @param canPostStories Pass *True* if the administrator can post stories to the chat
     * @param canEditStories Pass *True* if the administrator can edit stories posted by other
     * users, post stories to the chat page, pin chat stories, and access the chat's story archive
     * @param canDeleteStories Pass *True* if the administrator can delete stories posted by other
     * users
     * @param canPostMessages Pass *True* if the administrator can post messages in the channel, or
     * access channel statistics; for channels only
     * @param canEditMessages Pass *True* if the administrator can edit messages of other users and
     * can pin messages; for channels only
     * @param canPinMessages Pass *True* if the administrator can pin messages; for supergroups only
     * @param canManageTopics Pass *True* if the user is allowed to create, rename, close, and
     * reopen forum topics; for supergroups only
     */
    public suspend fun promoteChatMember(
        chatId: Long,
        userId: Long,
        isAnonymous: Boolean? = null,
        canManageChat: Boolean? = null,
        canDeleteMessages: Boolean? = null,
        canManageVideoChats: Boolean? = null,
        canRestrictMembers: Boolean? = null,
        canPromoteMembers: Boolean? = null,
        canChangeInfo: Boolean? = null,
        canInviteUsers: Boolean? = null,
        canPostStories: Boolean? = null,
        canEditStories: Boolean? = null,
        canDeleteStories: Boolean? = null,
        canPostMessages: Boolean? = null,
        canEditMessages: Boolean? = null,
        canPinMessages: Boolean? = null,
        canManageTopics: Boolean? = null,
    ): Boolean = promoteChatMember(
        chatId = chatId.toString(),
        userId = userId,
        isAnonymous = isAnonymous,
        canManageChat = canManageChat,
        canDeleteMessages = canDeleteMessages,
        canManageVideoChats = canManageVideoChats,
        canRestrictMembers = canRestrictMembers,
        canPromoteMembers = canPromoteMembers,
        canChangeInfo = canChangeInfo,
        canInviteUsers = canInviteUsers,
        canPostStories = canPostStories,
        canEditStories = canEditStories,
        canDeleteStories = canDeleteStories,
        canPostMessages = canPostMessages,
        canEditMessages = canEditMessages,
        canPinMessages = canPinMessages,
        canManageTopics = canManageTopics,
    )

    /**
     * Use this method to set a custom title for an administrator in a supergroup promoted by the
     * bot. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     * @param userId Unique identifier of the target user
     * @param customTitle New custom title for the administrator; 0-16 characters, emoji are not
     * allowed
     */
    public suspend fun setChatAdministratorCustomTitle(
        chatId: Long,
        userId: Long,
        customTitle: String,
    ): Boolean = setChatAdministratorCustomTitle(
        chatId = chatId.toString(),
        userId = userId,
        customTitle = customTitle,
    )

    /**
     * Use this method to ban a channel chat in a supergroup or a channel. Until the chat is
     * [unbanned](https://core.telegram.org/bots/api/#unbanchatsenderchat), the owner of the banned
     * chat won't be able to send messages on behalf of **any of their channels**. The bot must be an
     * administrator in the supergroup or channel for this to work and must have the appropriate
     * administrator rights. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param senderChatId Unique identifier of the target sender chat
     */
    public suspend fun banChatSenderChat(chatId: Long, senderChatId: Long): Boolean =
            banChatSenderChat(
        chatId = chatId.toString(),
        senderChatId = senderChatId,
    )

    /**
     * Use this method to unban a previously banned channel chat in a supergroup or channel. The bot
     * must be an administrator for this to work and must have the appropriate administrator rights.
     * Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param senderChatId Unique identifier of the target sender chat
     */
    public suspend fun unbanChatSenderChat(chatId: Long, senderChatId: Long): Boolean =
            unbanChatSenderChat(
        chatId = chatId.toString(),
        senderChatId = senderChatId,
    )

    /**
     * Use this method to set default chat permissions for all members. The bot must be an
     * administrator in the group or a supergroup for this to work and must have the
     * *can_restrict_members* administrator rights. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     * @param permissions A JSON-serialized object for new default chat permissions
     * @param useIndependentChatPermissions Pass *True* if chat permissions are set independently.
     * Otherwise, the *can_send_other_messages* and *can_add_web_page_previews* permissions will imply
     * the *can_send_messages*, *can_send_audios*, *can_send_documents*, *can_send_photos*,
     * *can_send_videos*, *can_send_video_notes*, and *can_send_voice_notes* permissions; the
     * *can_send_polls* permission will imply the *can_send_messages* permission.
     */
    public suspend fun setChatPermissions(
        chatId: Long,
        permissions: ChatPermissions,
        useIndependentChatPermissions: Boolean? = null,
    ): Boolean = setChatPermissions(
        chatId = chatId.toString(),
        permissions = permissions,
        useIndependentChatPermissions = useIndependentChatPermissions,
    )

    /**
     * Use this method to generate a new primary invite link for a chat; any previously generated
     * primary link is revoked. The bot must be an administrator in the chat for this to work and must
     * have the appropriate administrator rights. Returns the new invite link as *String* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     */
    public suspend fun exportChatInviteLink(chatId: Long): String = exportChatInviteLink(
        chatId = chatId.toString(),
    )

    /**
     * Use this method to create an additional invite link for a chat. The bot must be an
     * administrator in the chat for this to work and must have the appropriate administrator rights.
     * The link can be revoked using the method
     * [revokeChatInviteLink](https://core.telegram.org/bots/api/#revokechatinvitelink). Returns the
     * new invite link as [ChatInviteLink](https://core.telegram.org/bots/api/#chatinvitelink) object.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param name Invite link name; 0-32 characters
     * @param expireDate Point in time (Unix timestamp) when the link will expire
     * @param memberLimit The maximum number of users that can be members of the chat simultaneously
     * after joining the chat via this invite link; 1-99999
     * @param createsJoinRequest *True*, if users joining the chat via the link need to be approved
     * by chat administrators. If *True*, *member_limit* can't be specified
     */
    public suspend fun createChatInviteLink(
        chatId: Long,
        name: String? = null,
        expireDate: Long? = null,
        memberLimit: Int? = null,
        createsJoinRequest: Boolean? = null,
    ): ChatInviteLink = createChatInviteLink(
        chatId = chatId.toString(),
        name = name,
        expireDate = expireDate,
        memberLimit = memberLimit,
        createsJoinRequest = createsJoinRequest,
    )

    /**
     * Use this method to edit a non-primary invite link created by the bot. The bot must be an
     * administrator in the chat for this to work and must have the appropriate administrator rights.
     * Returns the edited invite link as a
     * [ChatInviteLink](https://core.telegram.org/bots/api/#chatinvitelink) object.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param inviteLink The invite link to edit
     * @param name Invite link name; 0-32 characters
     * @param expireDate Point in time (Unix timestamp) when the link will expire
     * @param memberLimit The maximum number of users that can be members of the chat simultaneously
     * after joining the chat via this invite link; 1-99999
     * @param createsJoinRequest *True*, if users joining the chat via the link need to be approved
     * by chat administrators. If *True*, *member_limit* can't be specified
     */
    public suspend fun editChatInviteLink(
        chatId: Long,
        inviteLink: String,
        name: String? = null,
        expireDate: Long? = null,
        memberLimit: Int? = null,
        createsJoinRequest: Boolean? = null,
    ): ChatInviteLink = editChatInviteLink(
        chatId = chatId.toString(),
        inviteLink = inviteLink,
        name = name,
        expireDate = expireDate,
        memberLimit = memberLimit,
        createsJoinRequest = createsJoinRequest,
    )

    /**
     * Use this method to create a [subscription invite
     * link](https://telegram.org/blog/superchannels-star-reactions-subscriptions#star-subscriptions)
     * for a channel chat. The bot must have the *can_invite_users* administrator rights. The link can
     * be edited using the method
     * [editChatSubscriptionInviteLink](https://core.telegram.org/bots/api/#editchatsubscriptioninvitelink)
     * or revoked using the method
     * [revokeChatInviteLink](https://core.telegram.org/bots/api/#revokechatinvitelink). Returns the
     * new invite link as a [ChatInviteLink](https://core.telegram.org/bots/api/#chatinvitelink)
     * object.
     *
     * @param chatId Unique identifier for the target channel chat or username of the target channel
     * (in the format `@channelusername`)
     * @param subscriptionPeriod The number of seconds the subscription will be active for before
     * the next payment. Currently, it must always be 2592000 (30 days).
     * @param subscriptionPrice The amount of Telegram Stars a user must pay initially and after
     * each subsequent subscription period to be a member of the chat; 1-2500
     * @param name Invite link name; 0-32 characters
     */
    public suspend fun createChatSubscriptionInviteLink(
        chatId: Long,
        subscriptionPeriod: Int,
        subscriptionPrice: Int,
        name: String? = null,
    ): ChatInviteLink = createChatSubscriptionInviteLink(
        chatId = chatId.toString(),
        subscriptionPeriod = subscriptionPeriod,
        subscriptionPrice = subscriptionPrice,
        name = name,
    )

    /**
     * Use this method to edit a subscription invite link created by the bot. The bot must have the
     * *can_invite_users* administrator rights. Returns the edited invite link as a
     * [ChatInviteLink](https://core.telegram.org/bots/api/#chatinvitelink) object.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param inviteLink The invite link to edit
     * @param name Invite link name; 0-32 characters
     */
    public suspend fun editChatSubscriptionInviteLink(
        chatId: Long,
        inviteLink: String,
        name: String? = null,
    ): ChatInviteLink = editChatSubscriptionInviteLink(
        chatId = chatId.toString(),
        inviteLink = inviteLink,
        name = name,
    )

    /**
     * Use this method to revoke an invite link created by the bot. If the primary link is revoked,
     * a new link is automatically generated. The bot must be an administrator in the chat for this to
     * work and must have the appropriate administrator rights. Returns the revoked invite link as
     * [ChatInviteLink](https://core.telegram.org/bots/api/#chatinvitelink) object.
     *
     * @param chatId Unique identifier of the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param inviteLink The invite link to revoke
     */
    public suspend fun revokeChatInviteLink(chatId: Long, inviteLink: String): ChatInviteLink =
            revokeChatInviteLink(
        chatId = chatId.toString(),
        inviteLink = inviteLink,
    )

    /**
     * Use this method to approve a chat join request. The bot must be an administrator in the chat
     * for this to work and must have the *can_invite_users* administrator right. Returns *True* on
     * success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param userId Unique identifier of the target user
     */
    public suspend fun approveChatJoinRequest(chatId: Long, userId: Long): Boolean =
            approveChatJoinRequest(
        chatId = chatId.toString(),
        userId = userId,
    )

    /**
     * Use this method to decline a chat join request. The bot must be an administrator in the chat
     * for this to work and must have the *can_invite_users* administrator right. Returns *True* on
     * success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param userId Unique identifier of the target user
     */
    public suspend fun declineChatJoinRequest(chatId: Long, userId: Long): Boolean =
            declineChatJoinRequest(
        chatId = chatId.toString(),
        userId = userId,
    )

    /**
     * Use this method to set a new profile photo for the chat. Photos can't be changed for private
     * chats. The bot must be an administrator in the chat for this to work and must have the
     * appropriate administrator rights. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param photo New chat photo, uploaded using multipart/form-data
     */
    public suspend fun setChatPhoto(chatId: Long, photo: Input): Boolean = setChatPhoto(
        chatId = chatId.toString(),
        photo = photo,
    )

    /**
     * Use this method to delete a chat photo. Photos can't be changed for private chats. The bot
     * must be an administrator in the chat for this to work and must have the appropriate
     * administrator rights. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     */
    public suspend fun deleteChatPhoto(chatId: Long): Boolean = deleteChatPhoto(
        chatId = chatId.toString(),
    )

    /**
     * Use this method to change the title of a chat. Titles can't be changed for private chats. The
     * bot must be an administrator in the chat for this to work and must have the appropriate
     * administrator rights. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param title New chat title, 1-128 characters
     */
    public suspend fun setChatTitle(chatId: Long, title: String): Boolean = setChatTitle(
        chatId = chatId.toString(),
        title = title,
    )

    /**
     * Use this method to change the description of a group, a supergroup or a channel. The bot must
     * be an administrator in the chat for this to work and must have the appropriate administrator
     * rights. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param description New chat description, 0-255 characters
     */
    public suspend fun setChatDescription(chatId: Long, description: String? = null): Boolean =
            setChatDescription(
        chatId = chatId.toString(),
        description = description,
    )

    /**
     * Use this method to add a message to the list of pinned messages in a chat. If the chat is not
     * a private chat, the bot must be an administrator in the chat for this to work and must have the
     * 'can_pin_messages' administrator right in a supergroup or 'can_edit_messages' administrator
     * right in a channel. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param messageId Identifier of a message to pin
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be pinned
     * @param disableNotification Pass *True* if it is not necessary to send a notification to all
     * chat members about the new pinned message. Notifications are always disabled in channels and
     * private chats.
     */
    public suspend fun pinChatMessage(
        chatId: Long,
        messageId: Long,
        businessConnectionId: String? = null,
        disableNotification: Boolean? = null,
    ): Boolean = pinChatMessage(
        chatId = chatId.toString(),
        messageId = messageId,
        businessConnectionId = businessConnectionId,
        disableNotification = disableNotification,
    )

    /**
     * Use this method to remove a message from the list of pinned messages in a chat. If the chat
     * is not a private chat, the bot must be an administrator in the chat for this to work and must
     * have the 'can_pin_messages' administrator right in a supergroup or 'can_edit_messages'
     * administrator right in a channel. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be unpinned
     * @param messageId Identifier of the message to unpin. Required if *business_connection_id* is
     * specified. If not specified, the most recent pinned message (by sending date) will be unpinned.
     */
    public suspend fun unpinChatMessage(
        chatId: Long,
        businessConnectionId: String? = null,
        messageId: Long? = null,
    ): Boolean = unpinChatMessage(
        chatId = chatId.toString(),
        businessConnectionId = businessConnectionId,
        messageId = messageId,
    )

    /**
     * Use this method to clear the list of pinned messages in a chat. If the chat is not a private
     * chat, the bot must be an administrator in the chat for this to work and must have the
     * 'can_pin_messages' administrator right in a supergroup or 'can_edit_messages' administrator
     * right in a channel. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     */
    public suspend fun unpinAllChatMessages(chatId: Long): Boolean = unpinAllChatMessages(
        chatId = chatId.toString(),
    )

    /**
     * Use this method for your bot to leave a group, supergroup or channel. Returns *True* on
     * success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup or
     * channel (in the format `@channelusername`)
     */
    public suspend fun leaveChat(chatId: Long): Boolean = leaveChat(
        chatId = chatId.toString(),
    )

    /**
     * Use this method to get up-to-date information about the chat. Returns a
     * [ChatFullInfo](https://core.telegram.org/bots/api/#chatfullinfo) object on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup or
     * channel (in the format `@channelusername`)
     */
    public suspend fun getChat(chatId: Long): ChatFullInfo = getChat(
        chatId = chatId.toString(),
    )

    /**
     * Use this method to get a list of administrators in a chat, which aren't bots. Returns an
     * Array of [ChatMember](https://core.telegram.org/bots/api/#chatmember) objects.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup or
     * channel (in the format `@channelusername`)
     */
    public suspend fun getChatAdministrators(chatId: Long): List =
            getChatAdministrators(
        chatId = chatId.toString(),
    )

    /**
     * Use this method to get the number of members in a chat. Returns *Int* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup or
     * channel (in the format `@channelusername`)
     */
    public suspend fun getChatMemberCount(chatId: Long): Int = getChatMemberCount(
        chatId = chatId.toString(),
    )

    /**
     * Use this method to get information about a member of a chat. The method is only guaranteed to
     * work for other users if the bot is an administrator in the chat. Returns a
     * [ChatMember](https://core.telegram.org/bots/api/#chatmember) object on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup or
     * channel (in the format `@channelusername`)
     * @param userId Unique identifier of the target user
     */
    public suspend fun getChatMember(chatId: Long, userId: Long): ChatMember = getChatMember(
        chatId = chatId.toString(),
        userId = userId,
    )

    /**
     * Use this method to set a new group sticker set for a supergroup. The bot must be an
     * administrator in the chat for this to work and must have the appropriate administrator rights.
     * Use the field *can_set_sticker_set* optionally returned in
     * [getChat](https://core.telegram.org/bots/api/#getchat) requests to check if the bot can use this
     * method. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     * @param stickerSetName Name of the sticker set to be set as the group sticker set
     */
    public suspend fun setChatStickerSet(chatId: Long, stickerSetName: String): Boolean =
            setChatStickerSet(
        chatId = chatId.toString(),
        stickerSetName = stickerSetName,
    )

    /**
     * Use this method to delete a group sticker set from a supergroup. The bot must be an
     * administrator in the chat for this to work and must have the appropriate administrator rights.
     * Use the field *can_set_sticker_set* optionally returned in
     * [getChat](https://core.telegram.org/bots/api/#getchat) requests to check if the bot can use this
     * method. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     */
    public suspend fun deleteChatStickerSet(chatId: Long): Boolean = deleteChatStickerSet(
        chatId = chatId.toString(),
    )

    /**
     * Use this method to create a topic in a forum supergroup chat. The bot must be an
     * administrator in the chat for this to work and must have the *can_manage_topics* administrator
     * rights. Returns information about the created topic as a
     * [ForumTopic](https://core.telegram.org/bots/api/#forumtopic) object.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     * @param name Topic name, 1-128 characters
     * @param iconColor Color of the topic icon in RGB format. Currently, must be one of 7322096
     * (0x6FB9F0), 16766590 (0xFFD67E), 13338331 (0xCB86DB), 9367192 (0x8EEE98), 16749490 (0xFF93B2),
     * or 16478047 (0xFB6F5F)
     * @param iconCustomEmojiId Unique identifier of the custom emoji shown as the topic icon. Use
     * [getForumTopicIconStickers](https://core.telegram.org/bots/api/#getforumtopiciconstickers) to
     * get all allowed custom emoji identifiers.
     */
    public suspend fun createForumTopic(
        chatId: Long,
        name: String,
        iconColor: Int? = null,
        iconCustomEmojiId: String? = null,
    ): ForumTopic = createForumTopic(
        chatId = chatId.toString(),
        name = name,
        iconColor = iconColor,
        iconCustomEmojiId = iconCustomEmojiId,
    )

    /**
     * Use this method to edit name and icon of a topic in a forum supergroup chat. The bot must be
     * an administrator in the chat for this to work and must have the *can_manage_topics*
     * administrator rights, unless it is the creator of the topic. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     * @param messageThreadId Unique identifier for the target message thread of the forum topic
     * @param name New topic name, 0-128 characters. If not specified or empty, the current name of
     * the topic will be kept
     * @param iconCustomEmojiId New unique identifier of the custom emoji shown as the topic icon.
     * Use [getForumTopicIconStickers](https://core.telegram.org/bots/api/#getforumtopiciconstickers)
     * to get all allowed custom emoji identifiers. Pass an empty string to remove the icon. If not
     * specified, the current icon will be kept
     */
    public suspend fun editForumTopic(
        chatId: Long,
        messageThreadId: Long,
        name: String? = null,
        iconCustomEmojiId: String? = null,
    ): Boolean = editForumTopic(
        chatId = chatId.toString(),
        messageThreadId = messageThreadId,
        name = name,
        iconCustomEmojiId = iconCustomEmojiId,
    )

    /**
     * Use this method to close an open topic in a forum supergroup chat. The bot must be an
     * administrator in the chat for this to work and must have the *can_manage_topics* administrator
     * rights, unless it is the creator of the topic. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     * @param messageThreadId Unique identifier for the target message thread of the forum topic
     */
    public suspend fun closeForumTopic(chatId: Long, messageThreadId: Long): Boolean =
            closeForumTopic(
        chatId = chatId.toString(),
        messageThreadId = messageThreadId,
    )

    /**
     * Use this method to reopen a closed topic in a forum supergroup chat. The bot must be an
     * administrator in the chat for this to work and must have the *can_manage_topics* administrator
     * rights, unless it is the creator of the topic. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     * @param messageThreadId Unique identifier for the target message thread of the forum topic
     */
    public suspend fun reopenForumTopic(chatId: Long, messageThreadId: Long): Boolean =
            reopenForumTopic(
        chatId = chatId.toString(),
        messageThreadId = messageThreadId,
    )

    /**
     * Use this method to delete a forum topic along with all its messages in a forum supergroup
     * chat. The bot must be an administrator in the chat for this to work and must have the
     * *can_delete_messages* administrator rights. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     * @param messageThreadId Unique identifier for the target message thread of the forum topic
     */
    public suspend fun deleteForumTopic(chatId: Long, messageThreadId: Long): Boolean =
            deleteForumTopic(
        chatId = chatId.toString(),
        messageThreadId = messageThreadId,
    )

    /**
     * Use this method to clear the list of pinned messages in a forum topic. The bot must be an
     * administrator in the chat for this to work and must have the *can_pin_messages* administrator
     * right in the supergroup. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     * @param messageThreadId Unique identifier for the target message thread of the forum topic
     */
    public suspend fun unpinAllForumTopicMessages(chatId: Long, messageThreadId: Long): Boolean =
            unpinAllForumTopicMessages(
        chatId = chatId.toString(),
        messageThreadId = messageThreadId,
    )

    /**
     * Use this method to edit the name of the 'General' topic in a forum supergroup chat. The bot
     * must be an administrator in the chat for this to work and must have the *can_manage_topics*
     * administrator rights. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     * @param name New topic name, 1-128 characters
     */
    public suspend fun editGeneralForumTopic(chatId: Long, name: String): Boolean =
            editGeneralForumTopic(
        chatId = chatId.toString(),
        name = name,
    )

    /**
     * Use this method to close an open 'General' topic in a forum supergroup chat. The bot must be
     * an administrator in the chat for this to work and must have the *can_manage_topics*
     * administrator rights. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     */
    public suspend fun closeGeneralForumTopic(chatId: Long): Boolean = closeGeneralForumTopic(
        chatId = chatId.toString(),
    )

    /**
     * Use this method to reopen a closed 'General' topic in a forum supergroup chat. The bot must
     * be an administrator in the chat for this to work and must have the *can_manage_topics*
     * administrator rights. The topic will be automatically unhidden if it was hidden. Returns *True*
     * on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     */
    public suspend fun reopenGeneralForumTopic(chatId: Long): Boolean = reopenGeneralForumTopic(
        chatId = chatId.toString(),
    )

    /**
     * Use this method to hide the 'General' topic in a forum supergroup chat. The bot must be an
     * administrator in the chat for this to work and must have the *can_manage_topics* administrator
     * rights. The topic will be automatically closed if it was open. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     */
    public suspend fun hideGeneralForumTopic(chatId: Long): Boolean = hideGeneralForumTopic(
        chatId = chatId.toString(),
    )

    /**
     * Use this method to unhide the 'General' topic in a forum supergroup chat. The bot must be an
     * administrator in the chat for this to work and must have the *can_manage_topics* administrator
     * rights. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     */
    public suspend fun unhideGeneralForumTopic(chatId: Long): Boolean = unhideGeneralForumTopic(
        chatId = chatId.toString(),
    )

    /**
     * Use this method to clear the list of pinned messages in a General forum topic. The bot must
     * be an administrator in the chat for this to work and must have the *can_pin_messages*
     * administrator right in the supergroup. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target supergroup (in
     * the format `@supergroupusername`)
     */
    public suspend fun unpinAllGeneralForumTopicMessages(chatId: Long): Boolean =
            unpinAllGeneralForumTopicMessages(
        chatId = chatId.toString(),
    )

    /**
     * Use this method to get the list of boosts added to a chat by a user. Requires administrator
     * rights in the chat. Returns a
     * [UserChatBoosts](https://core.telegram.org/bots/api/#userchatboosts) object.
     *
     * @param chatId Unique identifier for the chat or username of the channel (in the format
     * `@channelusername`)
     * @param userId Unique identifier of the target user
     */
    public suspend fun getUserChatBoosts(chatId: Long, userId: Long): UserChatBoosts =
            getUserChatBoosts(
        chatId = chatId.toString(),
        userId = userId,
    )

    /**
     * Use this method to edit text and [game](https://core.telegram.org/bots/api/#games) messages.
     * On success, if the edited message is not an inline message, the edited
     * [Message](https://core.telegram.org/bots/api/#message) is returned, otherwise *True* is
     * returned. Note that business messages that were not sent by the bot and do not contain an inline
     * keyboard can only be edited within **48 hours** from the time they were sent.
     *
     * @param chatId Required if *inline_message_id* is not specified. Unique identifier for the
     * target chat or username of the target channel (in the format `@channelusername`)
     * @param messageId Required if *inline_message_id* is not specified. Identifier of the message
     * to edit
     * @param text New text of the message, 1-4096 characters after entities parsing
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message to be edited was sent
     * @param parseMode Mode for parsing entities in the message text. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param entities A JSON-serialized list of special entities that appear in message text, which
     * can be specified instead of *parse_mode*
     * @param linkPreviewOptions Link preview generation options for the message
     * @param replyMarkup A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards).
     */
    public suspend fun editMessageText(
        chatId: Long,
        messageId: Long,
        text: String,
        businessConnectionId: String? = null,
        parseMode: String? = null,
        entities: Iterable? = null,
        linkPreviewOptions: LinkPreviewOptions? = null,
        replyMarkup: InlineKeyboardMarkup? = null,
    ): Message = editMessageText(
        chatId = chatId.toString(),
        messageId = messageId,
        text = text,
        businessConnectionId = businessConnectionId,
        parseMode = parseMode,
        entities = entities,
        linkPreviewOptions = linkPreviewOptions,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to edit captions of messages. On success, if the edited message is not an
     * inline message, the edited [Message](https://core.telegram.org/bots/api/#message) is returned,
     * otherwise *True* is returned. Note that business messages that were not sent by the bot and do
     * not contain an inline keyboard can only be edited within **48 hours** from the time they were
     * sent.
     *
     * @param chatId Required if *inline_message_id* is not specified. Unique identifier for the
     * target chat or username of the target channel (in the format `@channelusername`)
     * @param messageId Required if *inline_message_id* is not specified. Identifier of the message
     * to edit
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message to be edited was sent
     * @param caption New caption of the message, 0-1024 characters after entities parsing
     * @param parseMode Mode for parsing entities in the message caption. See [formatting
     * options](https://core.telegram.org/bots/api/#formatting-options) for more details.
     * @param captionEntities A JSON-serialized list of special entities that appear in the caption,
     * which can be specified instead of *parse_mode*
     * @param showCaptionAboveMedia Pass *True*, if the caption must be shown above the message
     * media. Supported only for animation, photo and video messages.
     * @param replyMarkup A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards).
     */
    public suspend fun editMessageCaption(
        chatId: Long,
        messageId: Long,
        businessConnectionId: String? = null,
        caption: String? = null,
        parseMode: String? = null,
        captionEntities: Iterable? = null,
        showCaptionAboveMedia: Boolean? = null,
        replyMarkup: InlineKeyboardMarkup? = null,
    ): Message = editMessageCaption(
        chatId = chatId.toString(),
        messageId = messageId,
        businessConnectionId = businessConnectionId,
        caption = caption,
        parseMode = parseMode,
        captionEntities = captionEntities,
        showCaptionAboveMedia = showCaptionAboveMedia,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to edit animation, audio, document, photo, or video messages, or to add media
     * to text messages. If a message is part of a message album, then it can be edited only to an
     * audio for audio albums, only to a document for document albums and to a photo or a video
     * otherwise. When an inline message is edited, a new file can't be uploaded; use a previously
     * uploaded file via its file_id or specify a URL. On success, if the edited message is not an
     * inline message, the edited [Message](https://core.telegram.org/bots/api/#message) is returned,
     * otherwise *True* is returned. Note that business messages that were not sent by the bot and do
     * not contain an inline keyboard can only be edited within **48 hours** from the time they were
     * sent.
     *
     * @param chatId Required if *inline_message_id* is not specified. Unique identifier for the
     * target chat or username of the target channel (in the format `@channelusername`)
     * @param messageId Required if *inline_message_id* is not specified. Identifier of the message
     * to edit
     * @param media A JSON-serialized object for a new media content of the message
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message to be edited was sent
     * @param replyMarkup A JSON-serialized object for a new [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards).
     */
    public suspend fun editMessageMedia(
        chatId: Long,
        messageId: Long,
        media: InputMedia,
        businessConnectionId: String? = null,
        replyMarkup: InlineKeyboardMarkup? = null,
    ): Message = editMessageMedia(
        chatId = chatId.toString(),
        messageId = messageId,
        media = media,
        businessConnectionId = businessConnectionId,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to edit live location messages. A location can be edited until its
     * *live_period* expires or editing is explicitly disabled by a call to
     * [stopMessageLiveLocation](https://core.telegram.org/bots/api/#stopmessagelivelocation). On
     * success, if the edited message is not an inline message, the edited
     * [Message](https://core.telegram.org/bots/api/#message) is returned, otherwise *True* is
     * returned.
     *
     * @param chatId Required if *inline_message_id* is not specified. Unique identifier for the
     * target chat or username of the target channel (in the format `@channelusername`)
     * @param messageId Required if *inline_message_id* is not specified. Identifier of the message
     * to edit
     * @param latitude Latitude of new location
     * @param longitude Longitude of new location
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message to be edited was sent
     * @param livePeriod New period in seconds during which the location can be updated, starting
     * from the message send date. If 0x7FFFFFFF is specified, then the location can be updated
     * forever. Otherwise, the new value must not exceed the current *live_period* by more than a day,
     * and the live location expiration date must remain within the next 90 days. If not specified,
     * then *live_period* remains unchanged
     * @param horizontalAccuracy The radius of uncertainty for the location, measured in meters;
     * 0-1500
     * @param heading Direction in which the user is moving, in degrees. Must be between 1 and 360
     * if specified.
     * @param proximityAlertRadius The maximum distance for proximity alerts about approaching
     * another chat member, in meters. Must be between 1 and 100000 if specified.
     * @param replyMarkup A JSON-serialized object for a new [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards).
     */
    public suspend fun editMessageLiveLocation(
        chatId: Long,
        messageId: Long,
        latitude: Double,
        longitude: Double,
        businessConnectionId: String? = null,
        livePeriod: Int? = null,
        horizontalAccuracy: Double? = null,
        heading: Int? = null,
        proximityAlertRadius: Int? = null,
        replyMarkup: InlineKeyboardMarkup? = null,
    ): Message = editMessageLiveLocation(
        chatId = chatId.toString(),
        messageId = messageId,
        latitude = latitude,
        longitude = longitude,
        businessConnectionId = businessConnectionId,
        livePeriod = livePeriod,
        horizontalAccuracy = horizontalAccuracy,
        heading = heading,
        proximityAlertRadius = proximityAlertRadius,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to stop updating a live location message before *live_period* expires. On
     * success, if the message is not an inline message, the edited
     * [Message](https://core.telegram.org/bots/api/#message) is returned, otherwise *True* is
     * returned.
     *
     * @param chatId Required if *inline_message_id* is not specified. Unique identifier for the
     * target chat or username of the target channel (in the format `@channelusername`)
     * @param messageId Required if *inline_message_id* is not specified. Identifier of the message
     * with live location to stop
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message to be edited was sent
     * @param replyMarkup A JSON-serialized object for a new [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards).
     */
    public suspend fun stopMessageLiveLocation(
        chatId: Long,
        messageId: Long,
        businessConnectionId: String? = null,
        replyMarkup: InlineKeyboardMarkup? = null,
    ): Message = stopMessageLiveLocation(
        chatId = chatId.toString(),
        messageId = messageId,
        businessConnectionId = businessConnectionId,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to edit only the reply markup of messages. On success, if the edited message
     * is not an inline message, the edited [Message](https://core.telegram.org/bots/api/#message) is
     * returned, otherwise *True* is returned. Note that business messages that were not sent by the
     * bot and do not contain an inline keyboard can only be edited within **48 hours** from the time
     * they were sent.
     *
     * @param chatId Required if *inline_message_id* is not specified. Unique identifier for the
     * target chat or username of the target channel (in the format `@channelusername`)
     * @param messageId Required if *inline_message_id* is not specified. Identifier of the message
     * to edit
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message to be edited was sent
     * @param replyMarkup A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards).
     */
    public suspend fun editMessageReplyMarkup(
        chatId: Long,
        messageId: Long,
        businessConnectionId: String? = null,
        replyMarkup: InlineKeyboardMarkup? = null,
    ): Message = editMessageReplyMarkup(
        chatId = chatId.toString(),
        messageId = messageId,
        businessConnectionId = businessConnectionId,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to stop a poll which was sent by the bot. On success, the stopped
     * [Poll](https://core.telegram.org/bots/api/#poll) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param messageId Identifier of the original message with the poll
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message to be edited was sent
     * @param replyMarkup A JSON-serialized object for a new message [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards).
     */
    public suspend fun stopPoll(
        chatId: Long,
        messageId: Long,
        businessConnectionId: String? = null,
        replyMarkup: InlineKeyboardMarkup? = null,
    ): Poll = stopPoll(
        chatId = chatId.toString(),
        messageId = messageId,
        businessConnectionId = businessConnectionId,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to delete a message, including service messages, with the following
     * limitations:  
     * - A message can only be deleted if it was sent less than 48 hours ago.  
     * - Service messages about a supergroup, channel, or forum topic creation can't be deleted.  
     * - A dice message in a private chat can only be deleted if it was sent more than 24 hours ago.
     *  
     * - Bots can delete outgoing messages in private chats, groups, and supergroups.  
     * - Bots can delete incoming messages in private chats.  
     * - Bots granted *can_post_messages* permissions can delete outgoing messages in channels.  
     * - If the bot is an administrator of a group, it can delete any message there.  
     * - If the bot has *can_delete_messages* permission in a supergroup or a channel, it can delete
     * any message there.  
     * Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param messageId Identifier of the message to delete
     */
    public suspend fun deleteMessage(chatId: Long, messageId: Long): Boolean = deleteMessage(
        chatId = chatId.toString(),
        messageId = messageId,
    )

    /**
     * Use this method to delete multiple messages simultaneously. If some of the specified messages
     * can't be found, they are skipped. Returns *True* on success.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param messageIds A JSON-serialized list of 1-100 identifiers of messages to delete. See
     * [deleteMessage](https://core.telegram.org/bots/api/#deletemessage) for limitations on which
     * messages can be deleted
     */
    public suspend fun deleteMessages(chatId: Long, messageIds: Iterable): Boolean =
            deleteMessages(
        chatId = chatId.toString(),
        messageIds = messageIds,
    )

    /**
     * Use this method to send static .WEBP, [animated](https://telegram.org/blog/animated-stickers)
     * .TGS, or [video](https://telegram.org/blog/video-stickers-better-reactions) .WEBM stickers. On
     * success, the sent [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param sticker Sticker to send. Pass a file_id as String to send a file that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a .WEBP sticker
     * from the Internet, or upload a new .WEBP, .TGS, or .WEBM sticker using multipart/form-data.
     * [More information on Sending Files ](https://core.telegram.org/bots/api/#sending-files). Video
     * and animated stickers can't be sent via an HTTP URL.
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param emoji Emoji associated with the sticker; only for just uploaded stickers
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendSticker(
        chatId: Long,
        sticker: Input,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        emoji: String? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendSticker(
        chatId = chatId.toString(),
        sticker = sticker,
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        emoji = emoji,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send static .WEBP, [animated](https://telegram.org/blog/animated-stickers)
     * .TGS, or [video](https://telegram.org/blog/video-stickers-better-reactions) .WEBM stickers. On
     * success, the sent [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param sticker Sticker to send. Pass a file_id as String to send a file that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a .WEBP sticker
     * from the Internet, or upload a new .WEBP, .TGS, or .WEBM sticker using multipart/form-data.
     * [More information on Sending Files ](https://core.telegram.org/bots/api/#sending-files). Video
     * and animated stickers can't be sent via an HTTP URL.
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param emoji Emoji associated with the sticker; only for just uploaded stickers
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendSticker(
        chatId: String,
        sticker: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        emoji: String? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendSticker(
        chatId = chatId,
        sticker = StringInput(sticker),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        emoji = emoji,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to send static .WEBP, [animated](https://telegram.org/blog/animated-stickers)
     * .TGS, or [video](https://telegram.org/blog/video-stickers-better-reactions) .WEBM stickers. On
     * success, the sent [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param sticker Sticker to send. Pass a file_id as String to send a file that exists on the
     * Telegram servers (recommended), pass an HTTP URL as a String for Telegram to get a .WEBP sticker
     * from the Internet, or upload a new .WEBP, .TGS, or .WEBM sticker using multipart/form-data.
     * [More information on Sending Files ](https://core.telegram.org/bots/api/#sending-files). Video
     * and animated stickers can't be sent via an HTTP URL.
     * @param businessConnectionId Unique identifier of the business connection on behalf of which
     * the message will be sent
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param emoji Emoji associated with the sticker; only for just uploaded stickers
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup Additional interface options. A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards), [custom reply
     * keyboard](https://core.telegram.org/bots/features#keyboards), instructions to remove a reply
     * keyboard or to force a reply from the user
     */
    public suspend fun sendSticker(
        chatId: Long,
        sticker: String,
        businessConnectionId: String? = null,
        messageThreadId: Long? = null,
        emoji: String? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: ReplyMarkup? = null,
    ): Message = sendSticker(
        chatId = chatId.toString(),
        sticker = StringInput(sticker),
        businessConnectionId = businessConnectionId,
        messageThreadId = messageThreadId,
        emoji = emoji,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )

    /**
     * Use this method to set the thumbnail of a regular or mask sticker set. The format of the
     * thumbnail file must match the format of the stickers in the set. Returns *True* on success.
     *
     * @param name Sticker set name
     * @param userId User identifier of the sticker set owner
     * @param format Format of the thumbnail, must be one of “static” for a **.WEBP** or **.PNG**
     * image, “animated” for a **.TGS** animation, or “video” for a **WEBM** video
     * @param thumbnail A **.WEBP** or **.PNG** image with the thumbnail, must be up to 128
     * kilobytes in size and have a width and height of exactly 100px, or a **.TGS** animation with a
     * thumbnail up to 32 kilobytes in size (see
     * [https://core.telegram.org/stickers#animation-requirements](https://core.telegram.org/stickers#animation-requirements)
     * for animated sticker technical requirements), or a **WEBM** video with the thumbnail up to 32
     * kilobytes in size; see
     * [https://core.telegram.org/stickers#video-requirements](https://core.telegram.org/stickers#video-requirements)
     * for video sticker technical requirements. Pass a *file_id* as a String to send a file that
     * already exists on the Telegram servers, pass an HTTP URL as a String for Telegram to get a file
     * from the Internet, or upload a new one using multipart/form-data. [More information on Sending
     * Files ](https://core.telegram.org/bots/api/#sending-files). Animated and video sticker set
     * thumbnails can't be uploaded via HTTP URL. If omitted, then the thumbnail is dropped and the
     * first sticker is used as the thumbnail.
     */
    public suspend fun setStickerSetThumbnail(
        name: String,
        userId: Long,
        format: String,
        thumbnail: String? = null,
    ): Boolean = setStickerSetThumbnail(
        name = name,
        userId = userId,
        format = format,
        thumbnail = thumbnail?.let { StringInput(thumbnail) },
    )

    /**
     * Use this method to send invoices. On success, the sent
     * [Message](https://core.telegram.org/bots/api/#message) is returned.
     *
     * @param chatId Unique identifier for the target chat or username of the target channel (in the
     * format `@channelusername`)
     * @param title Product name, 1-32 characters
     * @param description Product description, 1-255 characters
     * @param payload Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the
     * user, use it for your internal processes.
     * @param currency Three-letter ISO 4217 currency code, see [more on
     * currencies](https://core.telegram.org/bots/payments#supported-currencies). Pass “XTR” for
     * payments in [Telegram Stars](https://t.me/BotNews/90).
     * @param prices Price breakdown, a JSON-serialized list of components (e.g. product price, tax,
     * discount, delivery cost, delivery tax, bonus, etc.). Must contain exactly one item for payments
     * in [Telegram Stars](https://t.me/BotNews/90).
     * @param messageThreadId Unique identifier for the target message thread (topic) of the forum;
     * for forum supergroups only
     * @param providerToken Payment provider token, obtained via
     * [@BotFather](https://t.me/botfather). Pass an empty string for payments in [Telegram
     * Stars](https://t.me/BotNews/90).
     * @param maxTipAmount The maximum accepted amount for tips in the *smallest units* of the
     * currency (integer, **not** float/double). For example, for a maximum tip of `US$ 1.45` pass
     * `max_tip_amount = 145`. See the *exp* parameter in
     * [currencies.json](https://core.telegram.org/bots/payments/currencies.json), it shows the number
     * of digits past the decimal point for each currency (2 for the majority of currencies). Defaults
     * to 0. Not supported for payments in [Telegram Stars](https://t.me/BotNews/90).
     * @param suggestedTipAmounts A JSON-serialized array of suggested amounts of tips in the
     * *smallest units* of the currency (integer, **not** float/double). At most 4 suggested tip
     * amounts can be specified. The suggested tip amounts must be positive, passed in a strictly
     * increased order and must not exceed *max_tip_amount*.
     * @param startParameter Unique deep-linking parameter. If left empty, **forwarded copies** of
     * the sent message will have a *Pay* button, allowing multiple users to pay directly from the
     * forwarded message, using the same invoice. If non-empty, forwarded copies of the sent message
     * will have a *URL* button with a deep link to the bot (instead of a *Pay* button), with the value
     * used as the start parameter
     * @param providerData JSON-serialized data about the invoice, which will be shared with the
     * payment provider. A detailed description of required fields should be provided by the payment
     * provider.
     * @param photoUrl URL of the product photo for the invoice. Can be a photo of the goods or a
     * marketing image for a service. People like it better when they see what they are paying for.
     * @param photoSize Photo size in bytes
     * @param photoWidth Photo width
     * @param photoHeight Photo height
     * @param needName Pass *True* if you require the user's full name to complete the order.
     * Ignored for payments in [Telegram Stars](https://t.me/BotNews/90).
     * @param needPhoneNumber Pass *True* if you require the user's phone number to complete the
     * order. Ignored for payments in [Telegram Stars](https://t.me/BotNews/90).
     * @param needEmail Pass *True* if you require the user's email address to complete the order.
     * Ignored for payments in [Telegram Stars](https://t.me/BotNews/90).
     * @param needShippingAddress Pass *True* if you require the user's shipping address to complete
     * the order. Ignored for payments in [Telegram Stars](https://t.me/BotNews/90).
     * @param sendPhoneNumberToProvider Pass *True* if the user's phone number should be sent to the
     * provider. Ignored for payments in [Telegram Stars](https://t.me/BotNews/90).
     * @param sendEmailToProvider Pass *True* if the user's email address should be sent to the
     * provider. Ignored for payments in [Telegram Stars](https://t.me/BotNews/90).
     * @param isFlexible Pass *True* if the final price depends on the shipping method. Ignored for
     * payments in [Telegram Stars](https://t.me/BotNews/90).
     * @param disableNotification Sends the message
     * [silently](https://telegram.org/blog/channels-2-0#silent-messages). Users will receive a
     * notification with no sound.
     * @param protectContent Protects the contents of the sent message from forwarding and saving
     * @param allowPaidBroadcast Pass *True* to allow up to 1000 messages per second, ignoring
     * [broadcasting
     * limits](https://core.telegram.org/bots/faq#how-can-i-message-all-of-my-bot-39s-subscribers-at-once)
     * for a fee of 0.1 Telegram Stars per message. The relevant Stars will be withdrawn from the bot's
     * balance
     * @param messageEffectId Unique identifier of the message effect to be added to the message;
     * for private chats only
     * @param replyParameters Description of the message to reply to
     * @param replyMarkup A JSON-serialized object for an [inline
     * keyboard](https://core.telegram.org/bots/features#inline-keyboards). If empty, one 'Pay `total
     * price`' button will be shown. If not empty, the first button must be a Pay button.
     */
    public suspend fun sendInvoice(
        chatId: Long,
        title: String,
        description: String,
        payload: String,
        currency: String,
        prices: Iterable,
        messageThreadId: Long? = null,
        providerToken: String? = null,
        maxTipAmount: Int? = null,
        suggestedTipAmounts: Iterable? = null,
        startParameter: String? = null,
        providerData: String? = null,
        photoUrl: String? = null,
        photoSize: Int? = null,
        photoWidth: Int? = null,
        photoHeight: Int? = null,
        needName: Boolean? = null,
        needPhoneNumber: Boolean? = null,
        needEmail: Boolean? = null,
        needShippingAddress: Boolean? = null,
        sendPhoneNumberToProvider: Boolean? = null,
        sendEmailToProvider: Boolean? = null,
        isFlexible: Boolean? = null,
        disableNotification: Boolean? = null,
        protectContent: Boolean? = null,
        allowPaidBroadcast: Boolean? = null,
        messageEffectId: String? = null,
        replyParameters: ReplyParameters? = null,
        replyMarkup: InlineKeyboardMarkup? = null,
    ): Message = sendInvoice(
        chatId = chatId.toString(),
        title = title,
        description = description,
        payload = payload,
        currency = currency,
        prices = prices,
        messageThreadId = messageThreadId,
        providerToken = providerToken,
        maxTipAmount = maxTipAmount,
        suggestedTipAmounts = suggestedTipAmounts,
        startParameter = startParameter,
        providerData = providerData,
        photoUrl = photoUrl,
        photoSize = photoSize,
        photoWidth = photoWidth,
        photoHeight = photoHeight,
        needName = needName,
        needPhoneNumber = needPhoneNumber,
        needEmail = needEmail,
        needShippingAddress = needShippingAddress,
        sendPhoneNumberToProvider = sendPhoneNumberToProvider,
        sendEmailToProvider = sendEmailToProvider,
        isFlexible = isFlexible,
        disableNotification = disableNotification,
        protectContent = protectContent,
        allowPaidBroadcast = allowPaidBroadcast,
        messageEffectId = messageEffectId,
        replyParameters = replyParameters,
        replyMarkup = replyMarkup,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy