В конструкторе ботов обновилась логика обработки циклов и лимитов выполнения сценариев. Это изменение помогает избежать бесконечного выполнения блоков и зависаний чатов.
Как теперь работает выполнение сценария
Во время работы сценария система проверяет три условия:
- Есть ли следующий блок для выполнения.
- Не превышено ли время выполнения – максимум 200 секунд подряд.
- Не превышено ли количество выполненных блоков подряд – максимум 10 000 блоков.
Если сценарий выполняется слишком долго (достигнут лимит 200 секунд), выполнение приостанавливается на 10 минут.
На это время чат считается на паузе – бот не реагирует на сообщения.
После 10 минут сценарий возобновляется с того места, где остановился.
Подсчёт времени начинается заново, но общее количество выполненных блоков продолжает суммироваться.
Процесс повторяется, пока не достигнут общий лимит 10 000 блоков.
После этого выполнение сценария автоматически завершается.
Что важно знать
- Если внутри цикла есть блоки паузы или ожидания, время, указанное в этих блоках, не учитывается при подсчёте лимита.
- Если вы удалите проблемный блок (например, бесконечный цикл) и пересохраните сценарий, выполнение завершится после ближайшей 10-минутной паузы.
- Если хотите прервать выполнение сценария раньше, используйте команду
/clearall
.
Это полностью отменит отложенную задачу, и бот больше не продолжит выполнение сценария.
Пример
Если сценарий выполняет 1000 блоков за 200 секунд, потом ждёт 10 минут и запускается снова, – то общее количество блоков будет постепенно увеличиваться:
1000 → 2000 → 3000 → … пока не достигнет 10 000. После этого выполнение сценария в чате завершится.
Если сценарий завис
Если бот перестал отвечать и в логах видно, что сценарий на паузе, значит:
- сработал лимит времени (200 секунд),
- бот ожидает 10 минут перед возобновлением.
Чтобы решить проблему:
- Найдите бесконечный цикл или блок, вызывающий повторное выполнение.
- Удалите или измените этот блок.
- Сохраните сценарий.
- Дождитесь окончания паузы – выполнение завершится автоматически, либо выполните
/clearall
, чтобы завершить сценарий сразу.
Логи
Если сценарий приостановился или завершился из-за лимитов, информация об этом отобразится в Журнале событий.
В логах чата выведены записи о срабатывании лимита времени (200 секунд):
и количества блоков (10 000):