Задержка выполнения действий (таймер для действий)
Таймер — одно из самых полезных, интересных и навороченных действий Автопилота. Поэтому для удобства использования у этой статьи будет оглавление. Основная часть пунктов — варианты настройки блока (для разных задач и ситуаций)
Также прикрепляю ↑ наглядную видео-инструкцию по настройкам блока.
Важно! Каждый запуск таймера тратит 1 милю, то есть если у вас в команде 5 таймеров, команда израсходует 6 миль (5 таймеров + событие). Будьте внимательны.
Оглавление
Примечание: все названия таймеров условные — чисто для удобства навигации и запоминания.
- Опции действия + Как добавить в команду
- Особенности действия: очевидные и неочевидные нюансы
- Обычная относительная задержка: несколько дней / часов / минут.
- Относительно-конкретная задержка: подождать несколько дней, но до указанного конкретно времени.
- Случайная задержка: подождать рандомное количество минут.
- Календарная задержка: подождать до указанных точных даты и времени.
- Мгновенная задержка: подождать несколько секунд.
- Относительная переменная задержка: подождать количество секунд указанное в переменной.
- Конкретная переменная задержка: подождать до даты и времени, указанных в переменной.
Опции действия
Таймер добавляется в команду как и любое другое действие. В данном случае ответом на вопрос «Что сделать?» будет: «Подождать заданное время».

- 1 — Нажмите на кнопку Создать новое «Действие»
- 2 — Выберите действие «Запустить ТАЙМЕР (подождать)»
Рассмотрим действие подробнее:

1 — Название таймера — важный параметр, который обязательно стоит использовать. Например, можно сделать несколько таймеров с одинаковым или похожим названием. А потом одной командой отменить каждый / любой из них
2 — Режим задержки:
- ЧЕРЕЗ - обычная задержка на несколько дней или часов. Или на несколько дней, до конкретного времени.
- ПО НАСТУПЛЕНИЮ - календарная задержка до конкретных:
даты и времени. - СРАЗУ - мгновенная задержка — на несколько секунд.
3 — Количество дней, через которые выполниться команда.
4 — Тип относительной задержки:
- ЧЕРЕЗ - обычная относительная задержка на заданный отрезок времени.
- ПО НАСТУПЛЕНИЮ - календарная задержка до конкретных даты и времени.
- В ДИАПАЗОНЕ - случайная задержка на рандомное количество минут.
5 / 6 — Часы и минуты для относительной задержки.
7— Сообщество в котором хранится задержка. Можно менять. Влияет на действие «Отменить таймер» а также отображение таймеров в разделе игроки (там показываются таймеры выбранного в разделе сообщества)
8 - Переключатель «универсальный режим» позволяем указывать в полях ввода переменные, например, %sec%
Особенности таймеров Автопилота
- Как и было ранее:
Таймеры с одинаковыми номерами в ОДНОЙ КОМАНДЕ не сработают! Если в одной команде надо несколько таймеров (даже на одинаковое время) добавляйте их РАЗНЫМИ БЛОКАМИ (с разными номерами). - Очередь выполнений.
Таймер сейчас переЗАПУСКАЕТСЯ КАЖДУЮ МИНУТУ (в начале минуты). Даже если выставите больше 30 секунд, задержка может быть от 1 мин. минимум. Это всё в пределах нормы. - Однако, если задержка меньше 30 секунд, то таймер не будет добавлен в очередь. А просто выполнится тем же процессом, просто с перерывом.
- А если время выполнения задано датой / временем из прошлого (например, из переменной), то Автопилот будет воспринимать это как задержку 33 секунды. То есть добавит в очередь. И выполнит в начале следующей минуты после истечения этих 33 секунд.
- Уникальная задержка — 32 секунды. Вместо этого числа будет подставлено случайное число секунд в диапазоне от 0 до 30.
- Если количество времени ожидания - 0 секунд, и минут, и часов, и дней, — то не будет ни задержки ни очереди, а бот просто пропустит действие.
- Если у вас много людей имеют запланированный таймер на одну и ту же минуту, Автопилот попытается растянуть их по времени, с частотой примерно 18 запросов в секунду на одно СООБЩЕСТВО (чтобы обойти лимиты ВК и предотвратить «Ахтунги»).
- Пока не проверялась "скорость рассылки" (как быстро выполнит команды, если у них всех одно и то же время). Но, в теории, должно быть не более 1000 запусков команды в минуту. С другой стороны, уже в разы лучше, чем ничего).
- Название таймера существует для возможности управлять его запусками при помощи специальных действий Автопилота.
- Еще там будьте аккуратны. Если в команде Ахтунг, то есть вероятность что она будет повторяться бесконечно (каждую минуту) начиная с блока таймера. Просьба такого не допускать (пока не сделаю там блокировку от некорректной настройки).
- Что касается «периодического запуска», то ПОЗЖЕ я сделаю специальное СОБЫТИЕ для этого. Ну или действие тоже. В общем отдельные блоки будут. Этот лучше не зацикливать. Может быть Ахтунг!
- Автопилот старается СОХРАНЯТЬ все временные ПЕРЕМЕННЫЕ в рамках команды. Это позволяет делать интересные цепочки сообщений, не запариваясь с сохранением данных в доп. полях.
- Раньше повторный запуск команды, в которой таймер для игрока еще не отработал, просто перезаписал бы таймер. Сейчас после 2-х запусков команда выполнится как положено — дважды.
- Все типы задержек выполняют действия асинхронно с другими действиями. То есть, например, если событие запускает 2 команды одновременно, то их действия будут идти параллельно, каждое со своей задержкой.
Готовы поговорить подробнее о типах?
Обычная относительная задержка:
Ожидает несколько дней + несколько часов часов + несколько минут.

Относительно-конкретная задержка:
Ожидает несколько дней, но до указанного конкретно времени.

В целом всё очевидно из текста действия ↑ Однако есть нюанс.
Неадекватная настройка всё равно отработает! Со следующей логикой:
- Если задать количество часов больше чем 23 часа в режиме «по наступлению», то при выполнении будет выполнен пересчет дней!
- Если задать больше чем 60 минут в режиме «по наступлению», то при выполнении будет выполнен пересчет часов!
Подробнее про это рассказывал ↑ в видео. А ниже пример такой настройки:

Случайная задержка:
Ожидает рандомное количество минут в указанном диапазоне.
Поддерживаются переменные.

Календарная задержка:
Ожидает до точной даты и точного времени выбранных при помощи календарика. Переменные поддерживаются, но в не в «Удобном режиме», а в «Универсальном» (иконка переключения режима в блоке справа сверху). А в прочем, читайте дальше и всё увидите :)

Мгновенная задержка
Ожидает несколько секунд
Обычно используется вместе с блоком Имитировать набор текста или для каких-то системных нужд. Ключевая особенность - не записывает действия в очередь, а выполняет сразу.

Относительная переменная задержка:
Ожидает столько секунд сколько задано в переменной.

Конкретная переменная задержка:
Ожидает до даты и времени, указанных в переменной. Время может быть указано в в следующих форматах:
- UNIX. Например при помощи функции:
{date}%s||%content%{/date}
- Стандартный формат год спереди:
ГГГГ-ММ-ДД ЧЧ:ММ
- Стандартный формат год сзади:
ДД.ММ.ГГГГ ЧЧ:ММ
- Без указания времени:
ГГГГ-ММ-ДД
(время тогда будет — полночь — 00:00) - Без указания даты:
ЧЧ:ММ
(в таком случае дата считается — сегодня). Если надо поправить чтобы ждало следующего наступления этого времени, пишите в комментариях к посту инструкции, допилю.
Пример настройки переменной задержки, где время получаем из второй строки входящего сообщения. Подробная инструкция здесь

Как правильно проверять задержку
После запуска таймера в разделе «Игроки / Клиенты» в профиле игрока создается запись с подробной информацией про запущенный таймер:
- Ссылкой на команду
- Названием таймера
- И датой выполнения таймера

Примечание: если профиля нету, можно легко его создать используя ссылку на Аккаунт игрока ВКонтакте, либо с помощью действия «Обновить профиль», либо «Изменить поле профиля игрока».
Еще вариант (для личного теста) сделать сообщения подобного типа:

Сообщение 1 — ДО таймера:
Название ТАЙМЕРА: %timer%
Сейчас: {date}%F %T{/date}
Сообщение 2 — ПОСЛЕ таймера:
Сработал ТАЙМЕР: %timer%
Время: {date}%F %T{/date}
Такая настройка наглядно покажет вам когда был запущен таймер и когда он отработал. А по названию можно определить какой именно из таймеров отработал.
Важно!
1. Если вы копируете команду в которой есть таймеры, то не забудьте заменить таймеры копиями.
2. Если вам нужен в команде еще один таймер, то не копируйте действие по номеру, а создавайте новый блок с аналогичными настройками.
Ваши вопросы можете задать в комментариях к посту статьи.
Вернуться на главную страницу инструкций