vvs35.ru боты, парсеры, серверы
УслугиГотовые решенияБлог принимаем заказы

Telegram-бот не отправляет файл больше 50 МБ

Бизнес хочет, чтобы бот присылал клиентам каталог или презентацию. Бот отказывается. В чате тот же файл пересылается без проблем — и заказчик уверен, что подрядчик что-то недоделал.

Это ограничение платформы, а не ошибка в коде. Разберу цифры и четыре способа обойти — все в рамках правил.

Точные лимиты

ОперацияЛимит
Бот отправляет документ50 МБ
Бот скачивает файл от пользователя20 МБ
Бот отправляет фото как изображение10 МБ

Обратите внимание на асимметрию: принять бот может меньше, чем отдать. Это регулярно всплывает в задачах вроде «пусть клиент загрузит скан договора» — документ на 30 МБ бот получить не сможет.

Почему в переписке файл проходит, а через бота нет. Человек в клиенте Telegram работает с другим API — там лимиты в разы выше. Бот использует Bot API, и у него свои ограничения. Поэтому «я же сам его переслал» — не аргумент, механизмы разные.

Способ 1. Ссылка вместо файла

Основной и самый предсказуемый вариант. Файл лежит на вашем сервере, а бот отдаёт прямую ссылку на скачивание.

Плюсы, помимо снятого ограничения:

  • файл можно обновить, не трогая бота — ссылка остаётся прежней;
  • видно статистику скачиваний, если нужно;
  • для тяжёлых документов работает быстрее: Telegram не гоняет мегабайты через себя.

Минус один: ссылка выглядит менее «нативно», чем вложение. Решается формулировкой — люди привыкли скачивать по ссылке.

Если файл не должен быть публичным, ссылку делают одноразовой: генерируем токен со сроком жизни и проверяем его на сервере.

Способ 2. Переиспользование file_id

Приём, о котором знают не все. Когда файл уже загружен на серверы Telegram, у него есть идентификатор file_id. Отправляя документ по этому идентификатору, бот ничего не загружает заново — а значит, лимит на отправку не действует.

Как это делается на практике:

  1. Один раз загружаете файл руками в служебный чат или канал, где бот администратор.
  2. Бот ловит сообщение и запоминает file_id.
  3. Дальше по запросу клиента отправляет документ по этому идентификатору.
call("sendDocument", chat_id=user_id, document=SAVED_FILE_ID)

Отправка становится мгновенной — файл уже на серверах Telegram. Отлично подходит для неизменных материалов: прайс, презентация, инструкция.

Важная деталь. file_id уникален для конкретного бота: идентификатор, полученный одним ботом, не сработает у другого. И если файл нужно обновить, идентификатор придётся получать заново — старый будет отдавать прежнюю версию.

Способ 3. Разбить на части

Годится, когда содержимое естественно делится: каталог по разделам, отчёт по месяцам, курс по урокам. Клиент получает не один файл на 200 МБ, а пять по сорок — и обычно ему это даже удобнее, потому что нужен один раздел, а не всё сразу.

Плохо работает для видео и архивов: склеивать части руками мало кто захочет.

Способ 4. Свой сервер Bot API

Telegram позволяет поднять собственный экземпляр Bot API. Тогда лимит на отправку поднимается до 2 ГБ, а на получение — до 2 ГБ вместо двадцати мегабайт.

Цена вопроса: отдельный сервер, место под файлы, обновления и присмотр. Для задачи «отправлять клиентам прайс» это стрельба из пушки по воробьям. Оправдано там, где обмен тяжёлыми файлами — суть продукта: обработка видео, приём сканов, работа с архивами.

Что выбрать

СитуацияРешение
Файл меняется частоссылка на сервер
Файл постоянный, шлём частоfile_id
Содержимое делится по смыслуразбить на части
Тяжёлые файлы — суть сервисасвой Bot API

О чём предупредить заказчика заранее

Это тот случай, когда честный разговор до начала работ экономит нервы обеим сторонам. Если в задаче есть слова «бот присылает презентацию» или «клиент загружает документы», лимиты нужно назвать сразу — вместе с тем, как вы их обойдёте.

Иначе на сдаче возникает разговор в духе «мы же договаривались, что бот шлёт каталог», а каталог весит 80 МБ. Технически подрядчик прав, по ощущениям заказчика — нет. Проще потратить две минуты на предупреждение.


Ещё одно ограничение платформы, которое всплывает в тех же проектах: бот не может написать первым тому, кто сам не нажал «Старт». Поэтому «загрузим базу телефонов и разошлём» не работает — рассылка идёт только по подписчикам бота.

Коротко: частые вопросы

Какой максимальный размер файла может отправить Telegram-бот?

50 МБ при отправке через Bot API. Получать от пользователя бот может файлы ещё меньше — до 20 МБ. При этом сам человек в переписке способен переслать файл в разы больше, и это регулярно сбивает с толку: в чате файл проходит, а через бота нет.

Как отправить через бота файл больше 50 МБ?

Четыре рабочих способа. Первый и основной: файл лежит на вашем сервере, а бот присылает прямую ссылку на скачивание. Второй: загрузить файл в канал или чат вручную один раз и переиспользовать его идентификатор file_id. Третий: разбить документ на части. Четвёртый, для больших проектов: поднять собственный сервер Bot API, где лимит на отправку поднимается до 2 ГБ.

Что такое file_id и зачем он нужен?

Идентификатор файла, который Telegram присваивает загруженному документу. Если файл уже есть на серверах Telegram, бот может отправлять его по этому идентификатору сколько угодно раз — мгновенно и без повторной загрузки. Ограничение в 50 МБ при этом не действует, потому что бот ничего не загружает заново.

Действует ли лимит на отправку фотографий?

У фотографий лимит жёстче: 10 МБ при отправке как изображение. Кроме того, Telegram сжимает такие изображения. Если важно сохранить исходное качество, отправляйте картинку документом — тогда действует общий лимит и сжатия не происходит.

Нужен бот, который отдаёт клиентам материалы? Скажу, какой способ подойдёт под ваши файлы, и назову цену со сроком до начала работ.

Telegram-бот от 2 500 ₽

Читать дальше