Задержка выполнения действий (таймер для действий)

Таймер — одно из самых полезных, интересных и навороченных действий Автопилота. Поэтому для удобства использования у этой статьи будет оглавление. Основная часть пунктов — варианты настройки блока (для разных задач и ситуаций)

Также прикрепляю ↑ наглядную видео-инструкцию по настройкам блока.

Важно! Каждый запуск таймера тратит 1 милю, то есть если у вас в команде 5 таймеров, команда израсходует 6 миль (5 таймеров + событие). Будьте внимательны.

Оглавление

Примечание: все названия таймеров условные — чисто для удобства навигации и запоминания.

Опции действия

Таймер добавляется в команду как и любое другое действие. В данном случае ответом на вопрос «Что сделать?» будет: «Подождать заданное время».

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

Рассмотрим действие подробнее:

Пример: обычная относительная задержка
Пример: обычная относительная задержка

1 — Название таймера — важный параметр, который обязательно стоит использовать. Например, можно сделать несколько таймеров с одинаковым или похожим названием. А потом одной командой отменить каждый / любой из них

2 — Режим задержки:

  • ЧЕРЕЗ - обычная задержка на несколько дней или часов. Или на несколько дней, до конкретного времени.
  • ПО НАСТУПЛЕНИЮ - календарная задержка до конкретных:
    даты и времени.
  • СРАЗУ - мгновенная задержка — на несколько секунд.

3 — Количество дней, через которые выполниться команда.

4 — Тип относительной задержки:

  • ЧЕРЕЗ - обычная относительная задержка на заданный отрезок времени.
  • ПО НАСТУПЛЕНИЮ - календарная задержка до конкретных даты и времени.
  • В ДИАПАЗОНЕ - случайная задержка на рандомное количество минут.

5 / 6 — Часы и минуты для относительной задержки.

7— Сообщество в котором хранится задержка. Можно менять. Влияет на действие «Отменить таймер» а также отображение таймеров в разделе игроки (там показываются таймеры выбранного в разделе сообщества)

8 - Переключатель «универсальный режим» позволяем указывать в полях ввода переменные, например, %sec%

Особенности таймеров Автопилота

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

Готовы поговорить подробнее о типах?

Обычная относительная задержка:

Ожидает несколько дней + несколько часов часов + несколько минут.

Задержка выполнения действий (таймер для действий), image #3

Относительно-конкретная задержка:

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

Задержка выполнения действий (таймер для действий), image #4

В целом всё очевидно из текста действия ↑ Однако есть нюанс.
Неадекватная настройка всё равно отработает! Со следующей логикой:

  • Если задать количество часов больше чем 23 часа в режиме «по наступлению», то при выполнении будет выполнен пересчет дней!
  • Если задать больше чем 60 минут в режиме «по наступлению», то при выполнении будет выполнен пересчет часов!

Подробнее про это рассказывал ↑ в видео. А ниже пример такой настройки:

Неадекватная настройка таймера
Неадекватная настройка таймера

Случайная задержка:

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

Задержка выполнения действий (таймер для действий), image #6

Календарная задержка:

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

Задержка выполнения действий (таймер для действий), image #7

Мгновенная задержка

Ожидает несколько секунд

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

Пример мгновенной задержки
Пример мгновенной задержки

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

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

Задержка выполнения действий (таймер для действий), image #9

Конкретная переменная задержка:

Ожидает до даты и времени, указанных в переменной. Время может быть указано в в следующих форматах:

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

Пример настройки переменной задержки, где время получаем из второй строки входящего сообщения. Подробная инструкция здесь

Задержка выполнения действий (таймер для действий), image #10

Как правильно проверять задержку

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

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

Еще вариант (для личного теста) сделать сообщения подобного типа:

Задержка выполнения действий (таймер для действий), image #12

Сообщение 1 — ДО таймера:

Название ТАЙМЕРА: %timer%
Сейчас: {date}%F %T{/date}

Сообщение 2 — ПОСЛЕ таймера:

Сработал ТАЙМЕР: %timer%
Время: {date}%F %T{/date}

Такая настройка наглядно покажет вам когда был запущен таймер и когда он отработал. А по названию можно определить какой именно из таймеров отработал.

Важно!
1.
Если вы копируете команду в которой есть таймеры, то не забудьте заменить таймеры копиями.
2. Если вам нужен в команде еще один таймер, то не копируйте действие по номеру, а создавайте новый блок с аналогичными настройками.

Лайфхак про таймеры.

Ваши вопросы можете задать в комментариях к посту статьи.

Вернуться на главную страницу инструкций
4196 views·96 shares