Частые ошибки
Почти все проблемы с шаблонами — это одни и те же десять ошибок. Если шаблон не работает, пройдитесь по этому списку.
Бот печатает скобки как текст
Что видно: в сообщении написано { member.name } вместо имени.
Причина: одинарные скобки вместо двойных. Бот подставляет данные только внутри {{ }}.
Привет, { member.name }! ← неправильно
Привет, {{ member.name }}! ← правильноНе закрыт тег
Что видно: ошибка unclosed_tag или unexpected_eof («шаблон закончился раньше времени»).
Причина: у {% if %} нет {% endif %}, у {% for %} нет {% endfor %}.
{% if member.isPremium %}Спасибо! ← нет endif
{% if member.isPremium %}Спасибо!{% endif %} ← правильноУ каждого открывающего тега должен быть свой закрывающий: if → endif, for → endfor, macro → endmacro, filter → endfilter.
Текст без кавычек
Что видно: условие никогда не срабатывает, или ошибка unexpected_token.
Причина: текст для сравнения написан без кавычек. Без кавычек бот считает слово названием переменной.
{% if member.language == ru %} ← бот ищет переменную ru
{% if member.language == 'ru' %} ← правильно«Умные» кавычки
Что видно: ошибка unexpected_token, хотя все написано правильно.
Причина: шаблон скопирован из Word, Google Docs или заметок телефона, и прямые кавычки ' " заменились на типографские: ‘ ’, “ ”, « ». Бот понимает только прямые кавычки.
{% do url_button(«Правила», «https://…») %} ← «елочки» не подходят
{% do url_button('Правила', 'https://…') %} ← правильноПишите шаблоны прямо в редакторе панели — он таких замен не делает.
Большие буквы в названиях
Что видно: на месте переменной пусто.
Причина: названия переменных чувствительны к регистру. Member.Name и member.name — разные вещи, а существует только второе.
{{ Member.Name }} ← пусто
{{ member.name }} ← правильноСравнение одним знаком «=»
Что видно: ошибка в условии.
Причина: для сравнения нужны два знака: ==. Один знак = — это «запомнить» в теге set.
{% if member.rank.level = 10 %} ← неправильно
{% if member.rank.level == 10 %} ← правильноВертикальная черта в сравнении
Что видно: условие работает странно.
Причина: вертикальная черта | выполняется после сравнения. Запись members | length < 10 бот читает как members | (length < 10).
{% if club.members | length < 10 %} ← неправильно
{% if (club.members | length) < 10 %} ← правильноЕсли в условии есть |, заключайте эту часть в скобки. Редактор предупредит об этом.
and и or без скобок
Что видно: условие срабатывает не тогда, когда нужно.
Причина: and и or в шаблонах равноправны и выполняются слева направо. Запись a or b and c значит (a or b) and c, а не «a, или b и c вместе».
{% if member.isAdmin or member.isOwner and member.isPremium %} ← непонятно
{% if member.isAdmin or (member.isOwner and member.isPremium) %} ← понятноЛишние пустые строки
Что видно: в сообщении большие пустые промежутки.
Причина: строки, где стоят только теги, превращаются в пустые строки. Добавьте дефис: {%- убирает пробелы и переносы перед тегом, -%} — после.
{%- if member.isPremium -%}
⭐ Premium
{%- endif -%}Сообщение не отправилось
Что видно: команда сработала, но бот ничего не написал.
Причина: шаблон дал пустой результат — например, весь текст оказался внутри условия, которое не выполнилось. Пустые сообщения бот не отправляет. Добавьте ветку {% else %} с запасным текстом.
Два подчеркивания не подчеркивают
Что видно: вместо подчеркнутого текста — жирный.
Причина: в Telegram __текст__ означает жирный. Для подчеркивания пишите <u>текст</u>.
Переменная внутри ссылки или таблицы
Что видно: предупреждение markdown_context_escape, ссылка или таблица иногда ломаются.
Причина: значение из переменной может содержать символы разметки — скобки, черты, звездочки. Внутри [текст](ссылка) и строк таблицы это ломает разметку.
[Профиль]({{ url }}) ← может сломаться
{{ link('Профиль', url) }} ← правильноДля таблиц используйте функцию table.
Все равно не работает?
- Посмотрите на подчеркнутые места в редакторе и на текст ошибки — там указана строка и столбец.
- Найдите код ошибки в статье Ошибки — там описано, что делать.
- Отправьте тест себе в ЛС и посмотрите, что получилось на самом деле.
- Нажмите «Скопировать страницу» ниже и спросите ИИ: вставьте в чат свой шаблон и опишите, что не так.