🌙

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_idintID чата
mediafileСам файл
captionstringПодпись
reply_to_message_idintОтвет на сообщение
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. Тип медиа определяется по имени метода: sendPhotoimage, sendVideovideo, sendAudioaudio, sendDocumentfile.

Предварительная загрузка

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 загрузок в час.

Форматы и размеры

МетодРасширения
sendPhotojpg, jpeg, png, gif, webp, heic, heif
sendVideomp4, mov, webm, m4v
sendAudiomp3, 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 просмотра