Перейти к основному содержимому

Работа с файлами

Каждый загруженный файл получает file_id — короткий идентификатор для повторного использования. Платформа сама хранит файл в нашем облаке.

Жизненный цикл

  1. Бот отправил sendPhoto с binary → ответ содержит file_id.
  2. Бот переиспользует тот же file_id в любом другом сообщении — мгновенно, без повторной загрузки.
  3. file_id валиден всегда, пока файл не удалён.

Структура объекта

{
"file_id": "BAACAgIAAxkB...",
"file_unique_id": "AgADxxxxxx",
"file_size": 132456,
"file_path": "photos/file_42.jpg"
}
  • file_id — токен для отправки. Меняется при перезагрузке файла.
  • file_unique_id — стабильный ID, одинаков для одного и того же файла независимо от того, кто его загружал. Используйте для дедупликации.

Получение URL для скачивания

curl 'https://api.telefon.chat/bot<TOKEN>/getFile?file_id=<ID>'

Ответ:

{
"ok": true,
"result": {
"file_id": "...",
"file_path": "photos/abc123.jpg",
"file_size": 12345
}
}

Затем скачать:

GET https://api.telefon.chat/file/bot<TOKEN>/<file_path>

URL отдаёт 302 redirect на нашe S3-хранилище. Полученный URL живёт час.

Лимиты

ТипМакс. размер
Photo10 МБ
Voice / Audio / Document50 МБ
Video / Animation / VideoNote50 МБ
Sticker512 КБ

Бо́льшие файлы — разбивать или хостить отдельно.

Загрузка через URL

Можно передать публичный URL вместо binary:

{ "chat_id": 12345, "photo": "https://example.com/cat.jpg" }

Сервер скачает и закеширует. Лимит: 5 МБ на фото, 20 МБ на остальные.

Особенность нашей платформы

В отличие от стандарта, наш file_id это прямой URL на наше хранилище, защищённый подписью. file_unique_id совпадает с file_id (нет двух разных токенов на один файл).

Это не сломает боты на стандартных библиотеках — они используют только публичный API.