Отправить файл большого размера через телеграм бота

Отправить файл большого размера через телеграм бота

Автор: Fantom | Статьи 21 июня 2022

Приветствую всех. В этой небольшой статье я покажу один из способов, как можно отправить файл большого размера в телеграм боте с помощью 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()

Результат

Отправка файлов в телеграм бот

Комментарии

p245
@p245
23 сентября 2022

У меня ссылка не работает, не поможете ошибка ({"ok":false,"error_code":400,"description":"Bad Request: message text is empty"})

Ответить
p245
@p245
23 сентября 2022

@p245, Уже исправил спс если что

Ответить
Рамис
@ramas
23 сентября 2022

@p245, тогда, не за что :)

Ответить
sokem
@sokem
06 февраля 2023

Данный способ не работает сейчас да?

Ответить
sokem
@sokem
06 февраля 2023

у меня выводит "{"ok":true,"result":[]}"

Ответить
Рамис
@ramas
06 февраля 2023

@sokem, отключите действующего бота на этом токене если он есть. Откройте ссылку ниже в браузере:

https://api.telegram.org/bot<ваш_токен>/getUpdates
#Результат должен быть таким {"ok":true,"result":[]}

Отправьте несколько сообщений своему боту, и вернитесь к вкладке с URL выше и обновите страницу.

Ответить
Рамис
@ramas
06 февраля 2023

@sokem, Работает.

Ответить
Markdown
Войти