Отправка больших файлов telebot python

необходимо загрузить аудиокниги в канал телеграмма. Файлы до 50 мб загружаются без проблем но большие файлы выдают ошибку. Так же нужно что бы к сообщению с файлом был текст с описанием книги, есть файл с информацией о книге. Но как сделать это одним сообщением не понимаю... мой код:

import telebot
from config import bot_api

bot = telebot.TeleBot(bot_api)

chat_id = 1625428779


def telegram_audio(file):
    audio = open(file, 'rb')
    # bot.send_audio(message.chat.id, audio)
    bot.send_audio(chat_id, audio)
    audio.close()


if __name__ == '__main__':   telegram_audio('C:\\Users\Zoombi\\sel_proba\\Бизнес\\Банк России. Аудиолекции Финансовая культура. Часть 1.mp3')

Ответы (1 шт):

Автор решения: Amgarak

Пример с большим файлом в конце, а пока разберемся с отправкой сообщений. Пример:

import telebot

bot = telebot.TeleBot('TOKEN')
chat_id = CHAT_ID  

# Описание книги - caption
book_description = "Описание книги."

# Путь к изображению
image_path = r'C:\Users\Amgarak\Desktop\озшпр.png'

# Путь к файлу книги
file_path = r'C:\Users\Amgarak\Desktop\input.txt'

# Отправка сообщения с изображением
with open(image_path, 'rb') as image:
    photo_message = bot.send_photo(chat_id=chat_id, photo=image, caption=book_description)
    
# Отправка файла с описанием и цитированием отправленного ранее сообщения с изображением \ можно убрать цитирование, но это как пример
with open(file_path, 'rb') as file:
    sent_message = bot.send_document(chat_id=chat_id, document=file, caption=book_description, reply_to_message_id=photo_message.message_id)
    
edited_caption = "Новое описание книги."

# Метод edit_message_caption для изменения ранее отправленного сообщения
bot.edit_message_caption(chat_id=chat_id, message_id=sent_message.message_id, caption=edited_caption)

# URL изображения
photo_url = 'https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Stack_Overflow_logo.svg/200px-Stack_Overflow_logo.svg.png'

# HTML-разметка Подпись\Изображение
message_text = f'<a href="{photo_url}">&#8203;</a> Описание' # &#8203; или пробел между тегами "> <" 

# Сообщение с HTML-разметкой
bot.send_message(chat_id=chat_id, text=message_text, parse_mode='HTML')

# Путь к  аудио
audio_path = r'C:\Users\Amgarak\Desktop\loading.mp3'

# Описание аудио
audio_description = 'Это аудио книга с описанием'

# Отправка аудио с описанием
with open(audio_path, 'rb') as audio:
    bot.send_audio(chat_id=chat_id, audio=audio, caption=audio_description, parse_mode='Markdown')

введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения

Что бы отправить файлы большого размера(больше 50 мб):

  1. Останавливаем бота.
  2. Сами отправляем боту нужный файл большого размера, через сообщения.
  3. После загрузки файла вбиваем в браузер https://api.telegram.org/bot<ваш_токен>/getUpdates
  4. Ищем словарь "document"
  5. Нас интересует строка формата "file_id":"BQACAgIAAxkBAAOnZa_KdOYkK6AvlXhetbUnXG-AiWcAAuc4AAIjWYFJUokbePqOh840BA" - копируем id файла.
max_size_description = "big file" 
file ='BQACAgIAAxkBAAOnZa_KdOYkK6AvlXhetbUnXG-AiWcAAuc4AAIjWYFJUokbePqOh840BA'
bot.send_document(chat_id=chat_id, document=file, caption=max_size_description)

введите сюда описание изображения

→ Ссылка