EnotPRO Logo EnotPRO

media

Макрос !{media} прикрепляет медиа-ресурсы (фото, видео, аудио, документы и т.д.) к реакциям SendMessage и ShowMenu.

Что умеет макрос:

Возможность Описание
Одиночный файл Отправить одно фото, видео, документ
Альбом Отправить до 10 файлов одним сообщением
Автоопределение типа Угадать тип медиа по значению параметра
Спойлер Отправить фото/видео под спойлером

Где используется:

Реакция Назначение
SendMessage Отправить сообщение с медиа (файл прикрепляется к сообщению)
ShowMenu Отправить меню с медиа (файл отображается над кнопками)

💡 Самый частый сценарий: отправить фото, которое только что прислал пользователь:

  • !{media|path:${update.message.photo.0}}

Синтаксис

   !{media|
   параметр1: значение1;
   параметр2: значение2;
   }

Правила:

  • Макрос начинается с !{media| и заканчивается }
  • Параметры разделяются символом ; (точка с запятой)
  • Рекомендуется каждый параметр писать с новой строки

Режимы работы

Макрос работает в трёх режимах. Режим определяется автоматически по наличию параметров.

Режим Признак Что делает
Path Есть параметр path Берёт данные из контекста
Альбом Есть параметры с номерами (id1, url1, ...) Отправляет несколько файлов
Одиночный файл Ни то, ни другое Отправляет один файл по ID или URL

⚠️ Нельзя смешивать режимы в одном вызове.

Общие параметры

Параметр Тип Описание
type Строка Тип медиа (photo, video, audio, document, voice, animation, video_note, sticker)
spoiler Boolean Закрыть медиа спойлером (только для photo, video, animation)

⚠️ В режиме Path параметр type не действует — тип берётся из самого объекта или угадывается по значению path. Параметр spoiler в режиме Path действует только когда по пути лежит один объект, а не список.

Режим 1: Path (через путь в контексте)

Самый удобный режим. Вы просто указываете путь к данным, которые уже есть в контексте.

Параметры

Параметр Тип Обязательный Описание
path Строка ✅ Да Путь к данным в контексте либо сами данные
spoiler Boolean ❌ Нет Закрыть спойлером (только для одного объекта)

⚠️ Параметр type в этом режиме не действует. Тип берётся из самого объекта, а если его там нет — угадывается по значению path (см. «Автоопределение типа»).

Что можно передать в path

Что Пример Как работает
Путь текстом path:update.message.photo.0 Данные ищутся по этому пути в контексте
Переменная path:${update.message.photo.0} Переменная раскрывается в объект файла
Готовые данные path:${var.cloud.saved_file} Объект или список объектов используется напрямую

Все три варианта равнозначны — макрос сам определяет, что ему передали.

Формат данных

Один объект

{
  "file_id": "AgACAgIAAxk...",
  "file_type": "photo",
  "spoiler": true
}

Список объектов (альбом)

[
  {"file_id": "AgACAgIAAxk1...", "type": "photo", "spoiler": true},
  {"file_id": "AgACAgIAAxk2...", "type": "video"},
  {"url": "https://example.com/file.jpg", "type": "photo"}
]

Правила

Правило Описание
Идентификатор Объект должен содержать file_id или url
Приоритет Сначала ищется file_id, затем url
Имена полей Регистр, _, - и пробелы не важны: file_id, fileId, id — одно и то же
Тип Берётся из поля type или file_type. Если их нет — включается автоопределение по пути
Спойлер Берётся из поля spoiler, has_spoiler или has_media_spoiler
Пропуск Элементы без валидных данных пропускаются

💡 Файлы, которые пользователь прислал в форму, приходят с полем file_type — тип для них определяется сам, указывать ничего не нужно.

Примеры

Одно фото из сообщения пользователя

!{media|path:${update.message.photo.0}}

То же самое, путём без скобок

!{media|path:update.message.photo.0}

Альбом из нескольких фото (если в photo массив)

!{media|path:${update.message.photo}}

Файл, который пользователь загрузил в форму

!{media|path:${form.fields.screenshot.0}}

Список файлов из локальной переменной

!{media|path:${var.local.files}}

Фото со спойлером

!{media|path:${update.message.photo.0}; spoiler:true}

⚠️ Спойлер параметром можно поставить только когда по пути лежит один объект. Если там список, спойлер берётся из самих объектов, а параметр spoiler игнорируется.

Режим 2: Одиночный файл (прямое указание)

Используйте этот режим, когда нужно отправить конкретный файл по его file_id или URL.

Через ID файла

Параметр Тип Обязательный Описание
id Строка ✅ Да file_id файла (длинная строка от Telegram)
type Строка ❌ Нет Тип медиа (угадывается, если не указан)
spoiler Boolean ❌ Нет Закрыть спойлером

Через URL

Параметр Тип Обязательный Описание
url Строка ✅ Да HTTP-ссылка на файл
type Строка ❌ Нет Тип медиа (угадывается, если не указан)
spoiler Boolean ❌ Нет Закрыть спойлером

Примеры

По file_id

!{media|id:AgACAgIAAxkBAAI...; type:photo}

По URL

!{media|url:https://example.com/photo.jpg; type:photo}

Со спойлером

!{media|id:AgACAgIAAxkBAAI...; type:photo; spoiler:true}

Без указания типа (включится автоопределение)

!{media|id:AgACAgIAAxkBAAI...}

Режим 3: Альбом (несколько файлов)

Для отправки альбома используйте параметры с номерами от 1 до 10.

Параметры

Параметр Описание
id1 ... id10 Идентификаторы файлов
url1 ... url10 URL файлов
type1 ... type10 Типы файлов (угадываются, если не указаны)
spoiler1 ... spoiler10 Закрыть соответствующий файл спойлером

Правила

Правило Описание
Идентификатор Каждый файл должен иметь idN или urlN
Тип Если typeN не указан — включается автоопределение
Пропуск Файлы с невалидным типом пропускаются
Лимит Максимум 10 файлов в одном альбоме

Примеры

Два фото по ID

!{media|id1:AgACAgIAAxkBAAI...; type1:photo; id2:AgACAgIAAxkBAAJ...; type2:photo}

Два фото по URL

!{media|url1:https://example.com/1.jpg; type1:photo; url2:https://example.com/2.jpg; type2:photo}

Первое фото со спойлером, второе без

!{media|id1:${form.photo_id}; type1:photo; spoiler1:true; id2:${form.video_id}; type2:video}

Без указания типов (включится автоопределение)

!{media|id1:${form.photo_id}; id2:${form.video_id}}

Автоопределение типа

Если тип не указан, макрос пытается угадать его по значению параметра — path, id, urlidN, urlN в альбоме). Смотрится текст как он написан в настройке, до подстановки переменных, поэтому имя типа достаточно упомянуть в пути.

Примеры

Запись Определённый тип
!{media|path:${update.message.photo.0}} photo
!{media|path:${update.message.video_note}} video_note
!{media|id:${update.message.audio.file_id}} audio
!{media|id1:${form.voice_id}; id2:${form.doc_file}} voice, document

Правила

Правило Описание
Приоритет Явно указанный тип всегда важнее угаданного
Регистр Не имеет значения
Похожие типы video_note проверяется раньше video, чтобы не сработало короткое совпадение
Не нашли тип Файл пропускается (режимы Path и Альбом) или макрос возвращает ошибку (Одиночный файл)

⚠️ Обратная сторона: имя типа ищется в любом месте строки. Путь var.local.myphotos даст тип photo, даже если по нему лежит документ. В таких случаях указывайте тип явно или храните его в самом объекте.

Когда угадывание не сработает: если в записи нет имени типа — например ${var.local.file} или ${form.result.0}.

Спойлер

Медиа можно отправить закрытым спойлером — размытием, которое раскрывается по тапу пользователя.

Поддержка по типам

Тип Спойлер
photo ✅ Да
video ✅ Да
animation ✅ Да
audio ❌ Нет
document ❌ Нет
voice ❌ Нет
sticker ❌ Нет
video_note ❌ Нет

Для типов без поддержки параметр просто игнорируется.

Как указать спойлер

Режим Параметр
Path spoiler:true (только один объект)
Одиночный файл spoiler:true
Альбом spoiler1:true, spoiler2:true, ...

Допустимые значения

Значение Результат
true, 1, yes, on Спойлер включён
Любое другое или не задан Спойлер выключен

Регистр не имеет значения.

Особенность режима Path

Если в объекте уже есть поле spoiler, has_spoiler или has_media_spoiler, спойлер будет унаследован — медиа, изначально присланное под спойлером, останется под спойлером.

Параметр spoiler у макроса перекрывает значение из объекта, только когда по пути лежит один объект. Для списка объектов параметр игнорируется, и спойлер каждого файла берётся из его собственных полей.

Доступные типы медиа (справочно)

Тип Описание Спойлер
photo Фотография
video Видео
animation GIF-анимация
video_note / videonote Видео-заметка («кружок»)
audio Аудиофайл (музыка, подкаст)
voice Голосовое сообщение
document Документ (PDF, ZIP, XLS и др.)
sticker Стикер

Частые ошибки и их решение

Ошибка Причина Решение
Медиа не отправляется Не указан тип, и автоопределение не сработало Укажите type явно или добавьте тип в сам объект
В режиме Path не помогает type В этом режиме параметр type не действует Добавьте поле type в объект либо назовите путь так, чтобы тип угадался
Отправляется часть файлов Элементы без идентификатора или с неопределённым типом пропускаются Проверьте структуру данных по пути
Альбом не формируется В path передан одиночный объект, а не список Убедитесь, что по пути лежит список объектов
Спойлер не работает Тип медиа не поддерживает спойлер Спойлер работает только для photo, video, animation
Спойлер не работает в режиме Path По пути лежит список — параметр spoiler для списка игнорируется Задайте спойлер в самих объектах или отправляйте файлы по одному
Макрос возвращает ошибку В режиме одиночного файла не удалось определить тип Укажите type явно

Быстрые ответы (шпаргалка)

Отправить фото из сообщения пользователя

!{media|path:${update.message.photo.0}}

Отправить альбом из нескольких фото

!{media|path:${update.message.photo}}

Отправить документ по URL

!{media|url:https://example.com/file.pdf; type:document}

Отправить видео со спойлером

!{media|id:${video_id}; type:video; spoiler:true}

Отправить два файла по ID

!{media|id1:${id1}; type1:photo; id2:${id2}; type2:video}

© 2025 EnotPRO. Все права защищены.