Условия «если… то…»
Иногда одно и то же сообщение должно звучать по-разному: новичку — одно, опытному участнику — другое, администратору — третье. Для этого есть условия.
Как выглядит условие
Условие читается почти как обычная фраза: «если у участника Premium, то написать „спасибо за поддержку Telegram“».
Привет, {{ member.name }}!
{% if member.isPremium %}Спасибо, что поддерживаешь Telegram ⭐{% endif %}Разберем по частям:
{% if … %}— начало условия. Послеifпишется то, что проверяем.- Текст между
{% if %}и{% endif %}бот покажет, только если условие выполнено. {% endif %}— конец условия. Без него бот не поймет, где заканчивается текст, и выдаст ошибку.
Обратите внимание: здесь скобки с процентами {% %}, а не двойные фигурные {{ }}. Процентные скобки ничего не печатают — они говорят боту, что делать.
«Иначе»
Чтобы показать другой текст, когда условие не выполнено, добавьте {% else %}:
{% if member.rank.level >= 10 %}
С возвращением, ветеран!
{% else %}
Добро пожаловать! Общайся, и твой уровень будет расти.
{% endif %}Если уровень 10 и выше — «С возвращением, ветеран!», иначе — второе приветствие.
Несколько вариантов
{% elseif … %} добавляет еще одну проверку. Бот проверяет условия сверху вниз и берет первое подходящее:
{% if member.isOwner %}
👑 Создатель чата на связи!
{% elseif member.isAdmin %}
🛡 Администратор {{ member.name }} здесь.
{% elseif member.rank.level >= 20 %}
🏆 Опытный участник {{ member.name }}.
{% else %}
👋 Привет, {{ member.name }}!
{% endif %}🛡 Администратор Анна здесь.
Сравнения
| Знак | Значит | Пример |
|---|---|---|
== | равно | member.status == 'creator' |
!= | не равно | member.language != 'ru' |
> | больше | member.rank.level > 5 |
< | меньше | member.warnCount < 3 |
>= | больше или равно | chat.memberCount >= 1000 |
<= | меньше или равно | member.rank.level <= 1 |
Одно «равно» или два?
Для сравнения пишите два знака: ==. Один знак = используется, только чтобы запомнить значение (об этом ниже).
Текст для сравнения берите в кавычки — одинарные '…' или двойные "…":
{% if member.language == 'en' %}Hello!{% else %}Привет!{% endif %}Числа в кавычки брать не нужно: member.rank.level >= 10.
Несколько условий сразу
| Слово | Значит | Пример |
|---|---|---|
and | и то, и другое | member.rank.level >= 10 and member.warnCount == 0 |
or | хотя бы одно | member.isAdmin or member.moderator |
not | наоборот | not (member.isPremium) |
{% if member.rank.level >= 10 and member.warnCount == 0 %}
Ты образцовый участник — ни одного предупреждения на 10+ уровне!
{% endif %}Ставьте скобки
Если в условии есть и and, и or, обязательно ставьте скобки — так вы точно скажете боту, что проверять вместе:
{% if (member.isAdmin or member.moderator) and member.warnCount == 0 %}Без скобок бот читает условие строго слева направо, и результат может удивить. С not тоже удобнее ставить скобки: not (member.bot).
Проверка «есть ли значение»
Просто напишите переменную — условие выполнится, если в ней что-то есть:
{% if member.username %}
Твой username: @{{ member.username }}
{% else %}
У тебя нет username — его можно задать в настройках Telegram.
{% endif %}Бот считает «пустым» отсутствующее значение, пустой текст, пустой список, false и число 0.
Запомнить значение
Если одно и то же значение нужно несколько раз, запомните его под коротким именем с помощью {% set %}:
{% set lvl = member.rank.level %}
{% if lvl >= 50 %}Легенда{% elseif lvl >= 20 %}Ветеран{% elseif lvl >= 5 %}Активный{% else %}Новичок{% endif %}set — «запомнить». Слева имя (любое, латиницей), справа значение. Дальше в шаблоне можно писать lvl вместо member.rank.level.
Лишние пустые строки
Строки, на которых стоят только {% if %}, {% else %} и {% endif %}, в сообщении превращаются в пустые строки. Чтобы их убрать, добавьте дефис внутрь скобок: {%- убирает пробелы и переносы перед островком, -%} — после него.
Привет!
{%- if member.isPremium %} ⭐{% endif %}Результат: «Привет! ⭐» в одну строку. Подробнее — в статье Островки кода.
Что дальше
- Условия — лишь один из тегов. Есть еще цикл
for, который повторяет текст для каждого элемента списка. - Попробуйте кнопки под сообщением.
- Если что-то не работает, загляните в частые ошибки.