Работа с файлами
Каждый загруженный файл получает file_id — короткий идентификатор для повторного использования. Платформа сама хранит файл в нашем облаке.
Жизненный цикл
- Бот отправил
sendPhotoс binary → ответ содержитfile_id. - Бот переиспользует тот же
file_idв любом другом сообщении — мгновенно, без повторной загрузки. 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 живёт час.
Лимиты
| Тип | Макс. размер |
|---|---|
| Photo | 10 МБ |
| Voice / Audio / Document | 50 МБ |
| Video / Animation / VideoNote | 50 МБ |
| Sticker | 512 КБ |
Бо́льшие файлы — разбивать или хостить отдельно.
Загрузка через URL
Можно передать публичный URL вместо binary:
{ "chat_id": 12345, "photo": "https://example.com/cat.jpg" }
Сервер скачает и закеширует. Лимит: 5 МБ на фото, 20 МБ на остальные.
Особенность нашей платформы
В отличие от стандарта, наш file_id это прямой URL на наше хранилище, защищённый подписью. file_unique_id совпадает с file_id (нет двух разных токенов на один файл).
Это не сломает боты на стандартных библиотеках — они используют только публичный API.