Перейти к содержимому
Документация
Конструктор модулей

Условия, циклы и ошибки

Управление ходом сценария в Конструкторе модулей Multogram: IF с ветками THEN и ELSE, циклы WHILE, FOR и FOREACH, Break и Continue, Try-Catch и переменная [[_error]], задержка, завершение потока. Как писать условия.

Эти действия — в модуле Логика. Они не делают работу сами, а решают, какие действия выполнятся и сколько раз.

Условие IF

Проверяет условие и выполняет одну из веток: THEN, если оно истинно, ELSE — если нет. Любая ветка может быть пустой.

Как писать условие

ПримерИстинно, когда
[[AuthResult]] == trueфункция вернула true
[[count]] >= 10счётчик не меньше 10
[[status]] != DOWNстатус не равен слову DOWN
[[name]] == "Иван Петров"имя совпадает с текстом в кавычках
[[account]] != ""в переменной что-то есть
[[a]] > 0 and [[b]] > 0оба числа больше нуля
[[x]] == 1 or [[y]] == 1хотя бы одно равно единице
not [[done]]done ложно
  • Сравнения: ==, !=, >, <, >=, <=. Логика: and, or, not — или &&, ||, !.
  • Переменная в условии пишется только как [[name]], ресурс — как {{name}}. Слово без скобок — это просто слово.
  • Текст с пробелами и знаками берите в кавычки.

Значение подставляется со своим типом: число сравнивается как число, текст — как текст.

Циклы

ДействиеКогда использоватьГлавные параметры
FOR LoopПовторить заданное число разНачальный и конечный индекс, переменная индекса (cycleIndex)
FOREACH LoopПройти по каждому элементу спискаСписок ([[items]] или {{targets}}), переменная элемента (currentItem)
WHILE LoopПовторять, пока условие истинноУсловие, предел итераций

Внутри цикла номер шага доступен как [[cycleIndex]], элемент FOREACH — как [[currentItem]] (имена можно поменять). Break выходит из цикла, Continue переходит к следующему шагу.

Предел итераций WHILE

Чтобы сценарий не завис, у WHILE есть Макс. итераций. Пустое поле — остановка с ошибкой после 10 000 итераций при работе модуля и после 1 000 — в тесте. 0 снимает предел: цикл работает, пока условие истинно или задачу не остановят.

Обработка ошибок: Try-Catch

Если действие в ветке TRY завершилось ошибкой, остальные действия этой ветки пропускаются и выполняется ветка CATCH. Текст ошибки в ней — в переменной [[_error]].

TRY:   Send Message  →  Добавить лог «Отправлено»
CATCH: Добавить лог «Не отправлено: [[_error]]»

Без Try-Catch ошибка прерывает выполнение потока, пока её не перехватит Try-Catch выше — в этой функции или в той, что её вызвала. Оборачивайте в Try-Catch всё, что зависит от внешнего мира: Telegram, сеть, файлы.

Результат неудачного действия не записывается

Если действие завершилось ошибкой, его переменная результата не получает значения. Не проверяйте её условием после такого действия — обрабатывайте ошибку в ветке CATCH.

Остальные действия логики

ДействиеЧто делает
DelayПауза в миллисекундах: 1000 — одна секунда. Можно [[переменную]] или {{ресурс}}
Вызвать функцию · ВернутьВыполнить другую функцию и вернуть из неё значение
Установить переменную · Увеличить переменнуюРабота с переменными, в том числе глобальными
End ThreadЗавершить текущий поток
Stop ScenarioОстановить модуль целиком, со всеми потоками

Паузы между действиями Telegram

Однотипные действия подряд — частая причина FloodWait и спамблока. Ставьте Delay между отправками и выносите задержку в ресурс, чтобы её выбирал пользователь.

Обновлено

Файлы cookieПолитика конфиденциальности

Необходимые cookie обеспечивают работу сайта. С вашего согласия — также аналитические, чтобы улучшать сайт, и маркетинговые, чтобы учесть, кто вас пригласил. Выбор можно изменить в любой момент.