package dev.inmo.tgbotapi.extensions.api.send.media import com.github.insanusmokrassar.TelegramBotAPI.bot.TelegramBot import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.InputFile import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.SendAudio import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.Chat import com.github.insanusmokrassar.TelegramBotAPI.types.files.AnimationFile import com.github.insanusmokrassar.TelegramBotAPI.types.files.AudioFile import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message suspend fun TelegramBot.sendAudio( chatId: ChatIdentifier, audio: InputFile, thumb: InputFile? = null, text: String? = null, parseMode: ParseMode? = null, duration: Long? = null, performer: String? = null, title: String? = null, disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null ) = execute( SendAudio( chatId, audio, thumb, text, parseMode, duration, performer, title, disableNotification, replyToMessageId, replyMarkup ) ) suspend fun TelegramBot.sendAudio( chat: Chat, audio: InputFile, thumb: InputFile? = null, text: String? = null, parseMode: ParseMode? = null, duration: Long? = null, performer: String? = null, title: String? = null, disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null ) = sendAudio(chat.id, audio, thumb, text, parseMode, duration, performer, title, disableNotification, replyToMessageId, replyMarkup) suspend fun TelegramBot.sendAudio( chatId: ChatIdentifier, audio: AudioFile, text: String? = null, parseMode: ParseMode? = null, title: String? = audio.title, disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null ) = sendAudio(chatId, audio.fileId, audio.thumb ?.fileId, text, parseMode, audio.duration, audio.performer, title, disableNotification, replyToMessageId, replyMarkup) suspend fun TelegramBot.sendAudio( chat: Chat, audio: AudioFile, text: String? = null, parseMode: ParseMode? = null, title: String? = audio.title, disableNotification: Boolean = false, replyToMessageId: MessageIdentifier? = null, replyMarkup: KeyboardMarkup? = null ) = sendAudio(chat.id, audio, text, parseMode, title, disableNotification, replyToMessageId, replyMarkup) suspend inline fun TelegramBot.replyWithAudio( to: Message, audio: InputFile, thumb: InputFile? = null, text: String? = null, parseMode: ParseMode? = null, duration: Long? = null, performer: String? = null, title: String? = null, disableNotification: Boolean = false, replyMarkup: KeyboardMarkup? = null ) = sendAudio(to.chat, audio, thumb, text, parseMode, duration, performer, title, disableNotification, to.messageId, replyMarkup) suspend inline fun TelegramBot.replyWithAudio( to: Message, audio: AudioFile, text: String? = null, parseMode: ParseMode? = null, title: String? = null, disableNotification: Boolean = false, replyMarkup: KeyboardMarkup? = null ) = sendAudio(to.chat, audio, text, parseMode, title, disableNotification, to.messageId, replyMarkup) suspend inline fun TelegramBot.reply( to: Message, audio: AudioFile, text: String? = null, parseMode: ParseMode? = null, title: String? = null, disableNotification: Boolean = false, replyMarkup: KeyboardMarkup? = null ) = replyWithAudio(to, audio, text, parseMode, title, disableNotification, replyMarkup)