package dev.inmo.tgbotapi.extensions.api.send.media import dev.inmo.tgbotapi.bot.TelegramBot import dev.inmo.tgbotapi.requests.abstracts.InputFile import dev.inmo.tgbotapi.requests.send.media.SendDocument import dev.inmo.tgbotapi.types.ChatIdentifier import dev.inmo.tgbotapi.types.MessageIdentifier import dev.inmo.tgbotapi.types.ParseMode.ParseMode import dev.inmo.tgbotapi.types.buttons.KeyboardMarkup import dev.inmo.tgbotapi.types.chat.abstracts.Chat import dev.inmo.tgbotapi.types.files.DocumentFile import dev.inmo.tgbotapi.types.message.abstracts.Message suspend fun TelegramBot.sendDocument( chatId: ChatIdentifier, document: InputFile, thumb: InputFile? = null, text: String? = null, parseMode: ParseMode? = null, disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null ) = execute( SendDocument( chatId, document, thumb, text, parseMode, disableNotification, replyToMessageId, replyMarkup ) ) suspend fun TelegramBot.sendDocument( chat: Chat, document: InputFile, thumb: InputFile? = null, text: String? = null, parseMode: ParseMode? = null, disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null ) = sendDocument(chat.id, document, thumb, text, parseMode, disableNotification, replyToMessageId, replyMarkup) suspend fun TelegramBot.sendDocument( chatId: ChatIdentifier, document: DocumentFile, text: String? = null, parseMode: ParseMode? = null, disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null ) = sendDocument( chatId, document.fileId, document.thumb ?.fileId, text, parseMode, disableNotification, replyToMessageId, replyMarkup ) suspend fun TelegramBot.sendDocument( chat: Chat, document: DocumentFile, text: String? = null, parseMode: ParseMode? = null, disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null ) = sendDocument(chat.id, document, text, parseMode, disableNotification, replyToMessageId, replyMarkup) suspend inline fun TelegramBot.replyWithDocument( to: Message, document: InputFile, thumb: InputFile? = null, text: String? = null, parseMode: ParseMode? = null, disableNotification: Boolean = false, replyMarkup: KeyboardMarkup? = null ) = sendDocument(to.chat, document, thumb, text, parseMode, disableNotification, to.messageId, replyMarkup) suspend inline fun TelegramBot.replyWithDocument( to: Message, document: DocumentFile, text: String? = null, parseMode: ParseMode? = null, disableNotification: Boolean = false, replyMarkup: KeyboardMarkup? = null ) = sendDocument(to.chat, document, text, parseMode, disableNotification, to.messageId, replyMarkup) suspend inline fun TelegramBot.reply( to: Message, document: DocumentFile, text: String? = null, parseMode: ParseMode? = null, disableNotification: Boolean = false, replyMarkup: KeyboardMarkup? = null ) = replyWithDocument(to, document, text, parseMode, disableNotification, replyMarkup)