Патч ядра Heroku
Патч добавляет поддержку rich-сообщений (нативное форматирование Telegram PageBlock) в модулях и системе. Выполните команду в терминале Heroku.
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
utils/rich_text.py
и utils/messages.py). Если после установки что-то ломается — пишите
@notflack.
Если не получается разобраться в самой разметке — по этому вопросу писать не нужно.
Скачать файлы
Те же файлы, что ставятся командой выше — можно скачать напрямую и залить на свой сервер вручную.
Теги для .rich и .richcreate
Оберните разметку в <rich>...</rich> и передайте в
utils.answer() как обычно. Парсер нестрогий: незакрытые теги,
неэкранированные атрибуты и «сырой» текст без обёртки не приводят к ошибке.
Шесть уровней заголовков — от <h1> до <h6>.
<h1>Заголовок 1</h1> ... <h6>Заголовок 6</h6>
Обычный блок текста.
<p>Твой текст</p>
Блочная формула через <math>. Есть и инлайн-форма внутри текста.
<math>E = mc^2</math>
Обычные пункты через <li>. Атрибут cb="true" превращает пункт
в чекбокс — состояние задаётся префиксом [ ] / [x].
<ul>
<li>Обычный пункт</li>
<li cb="true">[ ] Неотмеченный чекбокс</li>
<li cb="true">[x] Отмеченный чекбокс</li>
</ul>
Крупная центрированная цитата с указанием автора.
<pullquote author="Автор">Цитата посередине</pullquote>
Спойлер-блок с заголовком. Внутри — вложенные блочные теги.
<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>
HTML-разметка Telegram
Обычные inline-теги, которые Telegram понимает нативно в parse_mode=HTML — без патча ядра, работают в любом ответе бота/юзербота.
<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>