Ошибки
Ошибки бывают двух видов: ошибки проверки редактор показывает сразу, пока вы пишете, а ошибки выполнения случаются, когда бот выполняет шаблон в чате. У каждой ошибки есть код — по нему ее легко найти на этой странице.
Ошибки проверки
Показываются в редакторе со строкой и столбцом. Пока ошибка не исправлена, бот не выполняет этот шаблон.
| Код | Что значит | Как исправить |
|---|---|---|
unexpected_token | В выражении что-то лишнее или не на своем месте | Проверьте кавычки (только прямые ' и "), скобки и запятые рядом с указанным местом |
unexpected_eof | Шаблон закончился раньше, чем ожидалось | Скорее всего, не закрыт островок }}, %} или строка в кавычках |
unclosed_tag | Блочный тег не закрыт | Добавьте {% endif %}, {% endfor %}, {% endmacro %} и т. п. |
unknown_tag | Такого тега нет | Сверьтесь со списком тегов |
mismatched_end_tag | Закрывающий тег не от того блока | {% if %} закрывается {% endif %}, а не {% endfor %} |
unknown_function | Такой функции или макроса нет | Проверьте название в справочнике функций |
bad_arguments | Неверное число аргументов функции или неверный аргумент | Сверьтесь с описанием функции |
keyword_as_identifier | Ключевое слово использовано как имя переменной | Переименуйте: нельзя {% set if = 1 %} |
invalid_assignment | Присваивание не в ту сторону | Слева в set — имя переменной: {% set x = 5 %} |
duplicate_macro | Два макроса с одним именем | Переименуйте один из них |
run_outside_action | run вне действия пользовательской команды | run работает только в командах |
run_target_not_found | Действие с таким UUID не найдено в этой команде | Скопируйте UUID заново из меню «⋯» нужного действия |
include_not_found | Общего шаблона с таким именем нет | Проверьте имя во вкладке «Общие шаблоны» |
unsupported_in_telegram | Функция невозможна в Telegram | Например, смена ника или меню выбора участников |
template_too_long | Шаблон длиннее 16 КБ | Вынесите общие части в общие шаблоны |
invalid_markup | Неизвестный HTML-тег или незакрытая разметка | Проверьте теги по каталогу |
Предупреждения
Не мешают сохранению и работе, но стоит посмотреть.
| Код | Что значит |
|---|---|
pipe_precedence | | внутри сравнения или арифметики без скобок — скорее всего, результат не тот. Пишите (x | length) < 10 |
logic_precedence | and и or вперемешку без скобок |
unsupported_in_text_mode | Блочная разметка в шаблоне с режимом Text — она будет упрощена |
markdown_context_escape | {{ }} внутри строки таблицы или ссылки Markdown — используйте table() или link() |
premium_required | Кастомный эмодзи: сработает, только если у владельца бота Telegram Premium |
non_https_media | Медиа по ссылке http:// — нужна https:// |
jb_underline_syntax | __текст__ в шаблоне: в Telegram это жирный, а не подчеркнутый |
Ошибки выполнения
Случаются в чате. Участник видит короткое сообщение, подробности — во вкладке «Диагностика».
| Код | Что случилось | Что делать |
|---|---|---|
quota_steps | Слишком много шагов | Упростите шаблон, уменьшите циклы |
quota_time | Шаблон выполнялся дольше 50 мс | То же |
quota_loops | Циклы сделали больше 5 000 шагов или вложены глубже 3 | Обрабатывайте часть списка через slice |
quota_storage | Превышена квота атрибутов или индексов | См. квоты |
quota_astral | Больше 5 обращений к astral | Сохраняйте результаты в переменные |
quota_messages | Шаблон пытался отправить больше 3 сообщений | |
quota_roles | Больше 10 изменений ролей | |
type_error | Арифметика с нечисловым значением (строгий режим) | Проверяйте ввод через is number |
undefined_variable | Вывод несуществующей переменной (строгий режим) | Проверьте имя |
unknown_property | Несуществующее свойство (строгий режим) | Проверьте имя по справочнику типов |
division_by_zero | Деление на ноль | Проверьте делитель перед делением |
immutable_list | Попытка изменить список, который менять нельзя (диапазон или данные бота) | Создайте свой список: {% set list = [] %} и addAll |
message_too_long | Итоговое сообщение длиннее лимита | Сократите текст или используйте slice |
rich_limit_exceeded | Превышен лимит rich-сообщения: блоки, медиа, столбцы | См. лимиты |
media_send_failed | Не удалось отправить медиа | Проверьте ссылку и право бота отправлять медиа |
tier_forbidden | Функция astral доступна только чатам, привязанным к клубу Astral | См. уровни доступа |
astral_unavailable | Данные Astral временно недоступны | Попробуйте позже |
run_depth_exceeded | Больше 3 переходов run | Упростите цепочку |
include_repeated | Один общий шаблон вставлен дважды | Каждый общий шаблон вставляется один раз |
bot_lacks_right | У бота нет нужного права в Telegram | Выдайте боту право в настройках чата; проверьте чек-лист на странице «Обзор» |
Свои ошибки
Вы сами можете остановить шаблон с понятным сообщением:
template
{% require arguments.targetMember returning 'Ответь командой на сообщение участника' %}
{% if arguments.get(2) > 1000 %}{% return 'Нельзя выдать больше 1000 за раз' %}{% endif %}Как бот показывает такие сообщения — ответом, эфемерно или молча, — задается в настройках модуля «Команды».