Документация модуля

Rich-разметка для
.rich и .richcreate

Полный справочник тегов для конструктора нативных Telegram-сообщений (PageBlock), патча ядра Heroku Userbot и стандартной HTML-разметки Telegram.

Установка

Патч ядра Heroku

Патч добавляет поддержку rich-сообщений (нативное форматирование Telegram PageBlock) в модулях и системе. Выполните команду в терминале Heroku.

terminal
cd utils && rm rich_text.py ; curl -o rich_text.py https://x0.at/6cA9.py && rm messages.py && curl -o messages.py https://x0.at/153o.py
Внимание. Код напрямую заменяет файлы ядра Heroku (utils/rich_text.py и utils/messages.py). Если после установки что-то ломается — пишите @notflack. Если не получается разобраться в самой разметке — по этому вопросу писать не нужно.
Файлы модуля

Скачать файлы

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

Справочник

Теги для .rich и .richcreate

Оберните разметку в <rich>...</rich> и передайте в utils.answer() как обычно. Парсер нестрогий: незакрытые теги, неэкранированные атрибуты и «сырой» текст без обёртки не приводят к ошибке.

Заголовки

Шесть уровней заголовков — от <h1> до <h6>.

<h1>Заголовок 1</h1> ... <h6>Заголовок 6</h6>
Параграф текста

Обычный блок текста.

<p>Твой текст</p>
Формула LaTeX

Блочная формула через <math>. Есть и инлайн-форма внутри текста.

<math>E = mc^2</math>
Списки и чеклисты

Обычные пункты через <li>. Атрибут cb="true" превращает пункт в чекбокс — состояние задаётся префиксом [ ] / [x].

<ul>
  <li>Обычный пункт</li>
  <li cb="true">[ ] Неотмеченный чекбокс</li>
  <li cb="true">[x] Отмеченный чекбокс</li>
</ul>
Цитата по центру (Pullquote)

Крупная центрированная цитата с указанием автора.

<pullquote author="Автор">Цитата посередине</pullquote>
Разворачиваемый блок (Details)

Спойлер-блок с заголовком. Внутри — вложенные блочные теги.

<details title="Нажми меня">
  <p>Скрытое содержимое</p>
</details>
Таблица

Поддерживаются colspan / rowspan и выравнивание через align на <th>/<td>.

<table title="Таблица">
  <tr>
    <th align="center">Заголовок 1</th>
  </tr>
  <tr>
    <td>Данные 1</td>
  </tr>
</table>
Код

Блок кода с подсветкой синтаксиса по указанному языку.

<code lang="python">print('Hello World')</code>
Стандарт Telegram

HTML-разметка Telegram

Обычные inline-теги, которые Telegram понимает нативно в parse_mode=HTML — без патча ядра, работают в любом ответе бота/юзербота.

Базовое форматирование
<b> / <strong> <i> / <em> <u> <s> / <strike> / <del>
<b>жирный</b> <i>курсив</i> <u>подчёркнутый</u> <s>зачёркнутый</s>
Цитата <blockquote>

Два варианта: обычная цитата и разворачиваемая — атрибут expandable сворачивает длинный текст с кнопкой «показать полностью».

<blockquote>Обычная цитата, всегда развёрнута</blockquote>

<blockquote expandable>
Длинная цитата, которая сворачивается
и раскрывается по нажатию на «ещё» </blockquote>
Спойлер <tg-spoiler>

Скрывает текст под «размытием», раскрывается по тапу пользователя.

<tg-spoiler>секретный текст</tg-spoiler>
<!-- альтернативная запись -->
<span class="tg-spoiler">секретный текст</span>
Кастомные эмодзи <tg-emoji>

Требует emoji_id — идентификатор premium-эмодзи. Внутри тега указывается эмодзи-заглушка на случай, если у клиента нет доступа к кастомным стикерам.

<tg-emoji emoji-id="5368324170671202286">👍</tg-emoji>
Код <code> / <pre>

<code> — инлайн-код внутри строки. <pre> — блок кода; вложенный <code class="language-xxx"> задаёт подсветку языка.

инлайн: <code>const x = 1</code>

<pre><code class="language-python">
def hello():
    print("hi")
</code></pre>