sendPhoto / sendVideo / sendAudio / sendDocument
sendPhoto / sendVideo / sendAudio / sendDocument
Отправляет медиафайл. Файл можно передать прямо в запросе или сослаться на уже загруженный.
POST https://api.kodari.ru/msg/bot.php?method=sendPhoto
Authorization: Bearer bot_ВАШ_ТОКЕН
Content-Type: multipart/form-data
Способ 1: файл в запросе
| Поле form-data | Тип | Обяз. | Описание |
|---|---|---|---|
chat_id | int | ✓ | ID чата |
media | file | ✓ | Сам файл |
caption | string | — | Подпись |
reply_to_message_id | int | — | Ответ на сообщение |
curl -X POST "https://api.kodari.ru/msg/bot.php?method=sendPhoto" \
-H "Authorization: Bearer bot_ВАШ_ТОКЕН" \
-F "chat_id=123" \
-F "caption=Привет!" \
-F "media=@photo.jpg"
Способ 2: ссылка на загруженный файл
Если файл уже загружен через upload.php, передайте его URL в JSON:
{
"chat_id": 123,
"media_url": "https://api.kodari.ru/msg/media.php?key=...",
"media_name": "otchet.pdf",
"caption": "Отчёт за май"
}
media_url обязан начинаться с https://api.kodari.ru/msg/media.php? — внешние ссылки отклоняются с ошибкой 400. Тип медиа определяется по имени метода: sendPhoto → image, sendVideo → video, sendAudio → audio, sendDocument → file.
Предварительная загрузка
POST https://api.kodari.ru/msg/upload.php
Authorization: Bearer bot_ВАШ_ТОКЕН
Content-Type: multipart/form-data
chat_id=123
file=@report.pdf
Ответ содержит url, media_type и original_name. Лимит — 120 загрузок в час.
Форматы и размеры
| Метод | Расширения |
|---|---|
sendPhoto | jpg, jpeg, png, gif, webp, heic, heif |
sendVideo | mp4, mov, webm, m4v |
sendAudio | mp3, m4a, wav, ogg, webm |
sendDocument | всё перечисленное плюс pdf, zip, doc, docx и другие разрешённые типы |
Максимальный размер файла — 300 МБ.
Ответ
{ "ok": true, "result": { "message_id": 789, "chat_id": 123 } }
Ошибки
| Код | Описание |
|---|---|
| 400 | Нет chat_id, не передан ни файл, ни media_url, либо media_url не с домена media.php |
| 403 | Бот не в чате или в группе запрещена отправка медиа |
| 422 | Недопустимый формат или файл больше 300 МБ |
| 429 | Превышен лимит 30 сообщений в минуту |
pykodaribot
await bot.send_photo(chat_id, "photo.jpg", caption="Смотри!")
await bot.send_document(chat_id, Path("report.pdf"))
await bot.send_video(chat_id, open("clip.mp4", "rb"), caption="Видео")
await bot.send_audio(chat_id, audio_bytes)
media принимает путь-строку, Path, открытый файл или bytes. Реакция на входящее медиа:
@dp.message(filters.has_media("image"))
async def on_photo(msg):
await msg.answer(f"Фото получено: {msg.media_url}")
62 просмотра