Приветствую всех. В этой небольшой статье я покажу один из способов, как можно отправить файл большого размера в телеграм боте с помощью Python. Для примера буду использовать библиотеку pyTelegramBotAPI (telebot).
Что бы лучше понять о чем речь, попробуйте воспроизвести код ниже.
import telebot
bot = telebot.TeleBot("ТОКЕН")
@bot.message_handler(func=lambda message: message.text.lower() in ['файл'])
def echo_all(message):
bot.reply_to(message, 'Загрузка файла')
file = open('file.rar', 'rb')
bot.send_document(message.chat.id, file)
bot.infinity_polling()
Данный бот при получении сообщения файл
отвечает пользователю и отправляет документ file.rar
.
Если документ file.rar
будем иметь вес больше 50МБ, то пользователь его не получит.
Проблему можно решить способом отправки file_id
.
Отправка файла по file_id
Откройте в браузере ссылку указав свой токен.
https://api.telegram.org/bot<ваш_токен>/getUpdates
После чего, отправьте своему боту документ. Я отправил file.rar
с весом ~70МБ.
Перезагрузите страницу с ссылкой что вы открыли в браузере ранее, и вы увидите массив данных где присутствует file_id
вашего документа.
Теперь вы можете использовать его в коде, и таким образом отправлять документы больше 50МБ.
import telebot
bot = telebot.TeleBot("ТОКЕН")
@bot.message_handler(func=lambda message: message.text.lower() in ['файл'])
def echo_all(message):
bot.reply_to(message, 'Загрузка файла')
file ='IAAxkBAAIFIWJYZMHvbYpgCRAAIKGQACdSfBSqBQd6lVllkwIwQ'
bot.send_document(message.chat.id, file)
bot.infinity_polling()
Результат