--- url: /reference/message-builder.md description: MessageBuilder — сборка rich-сообщения из блоков через createMessage(). --- # MessageBuilder

Построитель сообщения: позволяет собрать сообщение методами и отправить его прямо из шаблона — например, в другой топик. Создается вызовом chat.createMessage() или topic.createMessage().

Методы возвращают тот же построитель, поэтому их пишут цепочкой и заканчивают `send()`: ```template {% set winner = arguments.targetMember %} {% require winner returning 'Кто победил? Ответь командой на его сообщение' %} {% do chat.createMessage() .heading('Итоги турнира', 2) .paragraph('Победитель — ' ~ winner.name) .table([['Уровень', winner.rank.level], ['Место в чате', winner.rank.rank]], { bordered: true }) .footer('Поздравляем!') .send() %} ``` Отправок из шаблона — не больше 3 за выполнение. В чате с режимом Text блоки [упрощаются](/templates/advanced/rich#text-mode). ## Блоки: createMessage() { #blocks } | Метод | Блок | |---|---| | `.heading(текст, размер)` | Заголовок 1–6 | | `.paragraph(текст)` | Абзац | | `.list(элементы, нумерованный?)` | Список | | `.checklist(элементы)` | Чек-лист | | `.table(строки, настройки?)` | Таблица — настройки как у функции [`table`](/templates/advanced/functions#table) | | `.quote(текст, автор?, раскрывающаяся?)` | Цитата | | `.pullquote(текст, автор?)` | Выноска | | `.details(заголовок, содержимое, открыт?)` | Сворачиваемый блок | | `.divider()` | Разделитель | | `.footer(текст)` | Подвал | | `.math(выражение)` | Формула | | `.photo(ссылка, подпись?, спойлер?)` | Фото | | `.video(…)`, `.animation(…)`, `.audio(…)`, `.voice(…)`, `.document(…)` | Другие медиа | | `.collage(медиа, подпись?)`, `.slideshow(медиа, подпись?)` | Коллаж, слайдшоу | | `.map(широта, долгота, масштаб?, подпись?)` | Карта | | `.buttonRow(кнопки, выравнивание?)` | Ряд кнопок внутри сообщения | | `.button(…)` | Кнопка под сообщением — аргументы как у функции `button` | ## Доставка { #delivery } | Метод | Что делает | |---|---| | `.inTopic(id)` | Отправить в топик | | `.replyTo(id)` | Ответом на сообщение | | `.silent()` | Без звука | | `.protect()` | Запретить пересылку и сохранение | | `.pin()` | Закрепить | | `.deleteAfter(секунды)` | Удалить через N секунд | | `.ephemeral(id_участника)` | Показать только одному участнику | | `.rtl()` | Текст справа налево | | `.send()` | Отправить | | `.sendAndGet()` | Отправить и вернуть отправленное [сообщение](./message) | Несобранный построитель можно вернуть из `require … returning` или `return` — тогда он станет сообщением об ошибке.