Доступные переменные и функции

Содержание

Чтобы быстро перейти в нужный раздел, нажимайте ссылку ниже

Статические переменные и простые переменные-функции

  • %subs_id%, либо %sid%, либо %vk_id% — ID профиля ВКонтакте подписчика, для которого выполняются текущие действия команды
  • %orig_subs_id% — ID профиля ВКонтакте того подписчика, для которого выполнилось текущее событие. Можно понять, какой подписчик запустил команду в случае, если в команде есть действие «Сменить исполнителя / выполнять для», то есть последующие действия в команде выполняются для указанного другого подписчика.
    Внимание! Переменная будет иметь значение, равное тексту «%orig_subs_id%», если в команде нет действия «Сменить исполнителя / выполнять для».
  • %screen_name% — псевдоним (короткое имя страницы профиля подписчика ВКонтакте). То что в ссылке профиля после → vk.com/
  • %subs_link% или %vk_link% — ссылка на подписчика в виде кликабельного полного имени. Например: Андрей Горячих (в сообщении будет выглядеть также). Если вам нужна ссылка именно как ссылка, используйте следующую конструкцию: vk.com/id%subs_id%
  • %first_name% — имя подписчика (если не записано в профиле, то из ВК)
  • %last_name% — фамилия подписчика (если не записана в профиле, то из ВК)
  • %email% — email подписчика, для которого выполняется текущее событие, берётся из профиля Автопилота.
    Проверить, записан ли актуальный email в профиле Автопилота, можно условием «Есть email». Если подписчик не оставлял актуальный email, то Автопилот подставляет в эту переменную «фиктивное» значение: [email protected], где 123456 — VK ID подписчика.
    Когда подписчик пишет свой актуальный email, его можно сохранить в профиле Автопилота с помощью действия «Обновить профиль Автопилота». После этого он будет выводиться в переменной %email%.
  • %phone% — телефон подписчика, если таковой сохранен в профиле Автопилота.
    Проверить, записан ли телефон в профиле, можно условием «Есть телефон».
  • %note% — скрытое примечание для администратора в карточке подписчика (в Автопилоте)
  • {gender}мужчинам|женщинам{/gender} — возможность отправить разный текст в зависимости от пола подписчика. Просто замените слово мужчинам на текст, который должен увидеть мужчина, а женщинам на текст, который должна увидеть женщина
  • %sex% — пол из профиля или ВК (1 — женский; 2 — мужской; 0 — не указан).
    Пол из профиля Автопилота имеет высший приоритет. Например, у вас в профиле АП стоит мужской пол, а в анкете Вконтакте указан женский. Значит, Автопилот будет считать Вас мужчиной. Можете отредактировать пол через раздел «Игроки» или удалить карточку Игрока, тогда все данные будут браться по умолчанию из ВК.
  • %bdate% — день рождения в формате: 19.8.1982
  • %city% / %country% / %home% - Город / Страна / Родной город (если не указано или скрыто, то вернет 0 — это можно использовать в условных переменных. если нужно)
  • %photo_max% — URL адрес картинки аватарки. Квадратная версия, 400x400px, если пользователь загрузил аватарку позже 2012 года. До 2012 года — может выдавать картинку 200x200, 100x100 или 50x50px.
  • %photo_50% — URL адрес маленькой картинки аватарки (50рх)
  • %pid% — ID партнера пригласившего подписчика. Это поле профиля пользователя в Автопилоте. По умолчанию 0.
  • {ref}count{/ref} — количество приглашенных рефералов. Детали и другие опции переменной в этом разделе.
  • %event_club_id% — ID сообщества, в котором произошло событие
  • %club_id% — ID сообщества, от которого выполняется действие
  • %club_screen_name% — псевдоним сообщества, от которого выполняется действие (короткое имя страницы сообщества). То что в ссылке на сообщество после → vk.com/
  • %is_conv% (сокращение от «is conversation») — показывает, где подписчик написал сообщение: 0 — в ЛС сообщества, 1 — в беседе. С помощью этой переменной можно настроить реакцию на сообщения либо только в ЛС сообщества, либо только в беседе
  • %peer_id% — расширенный вариант предыдущей переменной. Показывает ID «места отправки» сообщения, чтобы бот мог туда ответить. Это значение нужно знать, чтобы отправить сообщение в беседу.
    Если пользователь написал в ЛС сообщества, то %peer_id% = ID пользователя (не более 2 000 000 000).
    Если пользователь написал в беседе, то %peer_id% = ID беседы (от 2 000 000 001 и выше) относительно сообщества-бота, если оно добавлено в беседу с правами не ниже «Доступ к переписке» и для него настроено событие «Написал сообщение». Как запросить значение для беседы — смотрите статью «Бот для бесед ВКонтакте».
  • %from_id% — показывает ID автора сообщения, по которому запустилось событие «Написал сообщение» или «Получил сообщение от админа».
    Если написал пользователь, то %from_id% = ID пользователя.
    Если написал админ от имени сообщества, то %from_id% = ID админа (удобно для мониторинга, какой админ ответил подписчику).
    Важно помнить, что если от имени сообщества приходит рассылка (от Сенлера или интегрированных сервисов, как Планфикс и т.п.), то Автопилот на неё не реагирует и %from_id% узнать невозможно.
  • %current_event% — номер текущего события (которое запустил команду). Если в команде несколько событий, то передадутся параметры того события, которое запустилось последним.
  • %event_count% — количество выполнений текущего события для подписчика (сколько раз произошло)
  • %current_command% — номер текущей команды
  • %command_level% — количество выполнений команды. Сработает ТОЛЬКО, если в событии добавлено условие «Выполнена команда»
  • %id_1% — первый параметр события id_1. Значение зависит от типа события (подробности в этом разделе). Например, для комментария это ID поста, в который добавлен комментарий, аналогично с обсуждениями. Для сообщений — здесь содержится ID вложения.
  • %body_1% — второй параметр события body_1. Значение зависит от типа события (подробности в этом разделе). Например, для сообщения это текст сообщения, для комментария это текст комментария — обычно он совпадает с переменной %content%. Не совпадать может, если, например, подписчик отправляет вам email в ответ на реакцию условия. Либо если другое событие.
  • %body_2% — третий параметр события body_2. Значение зависит от типа события (подробности в этом разделе). Например, для сообщения это ID вложения или товара. Для других событий используется редко. Да и вообще скорее системная переменная.
  • %object_id% — содержит ID сообщения для сообщений, ID комментария для комментариев и записей.
  • {{___}} — сокращает ссылку для возможности учитывать и запоминать переходы по ней. Для сокращения просто вставьте ссылку вместо нижних подчеркиваний ( ___ ). Подробнее в этой статье
  • {num}___{/num} — оставляет только числа в тексте, который между тегами. Параметры данной переменной смотрите в этом разделе
  • {members}rand{/members} — случайный участник сообщества, к которому привязано действие. {members}last{/members} — участник, который вступил в выбранное сообщество последним.
  • %content_len% — количество символов в содержимом события (см. ниже).
    Важно! На данный момент сработает только, если в команде добавлено условие проверяющее количество символов (и при этом находящееся перед использованием переменной). Для остальных случаев используйте конструкцию {text}%content%|len{/text}.
  • %run_time% — время выполнения скрипта сервиса в секундах от начала события до момента записи значения переменной. Нормальное время команды ответ на привет меньше 1 сек. Позволяет проверить скорость работы сервиса.

Уровни (количества запусков) списков, событий или команд

  • {level}000{/level} или {list_level}000{/list_level} — уровень списка 000 (или количество выполнений события 000). Если вторым параметром передать ID какого-то произвольного подписчика, то результатом работы переменной будет уровень списка для указанного подписчика (а не для текущего). Пример: {level}000|123456{/level}. И во втором и в первом параметрах поддерживаются переменные (например, %vk_id%): {level}000|%vk_id%{/level}.
  • {list_count}000{/list_count} — количество участников списка (подписчиков), которые имеют уровень 1 или выше (или с которыми происходило событие 1 или больше раз), где 000 ← номер списка / события. Подробнее, а также том, как указывать уровни — в этом разделе
  • {list}000|sum{/list} — сумма уровней всех участников списка (количеств выполнений события всеми подписчиками). Полезно в геймификации (общее количество денег у игроков, общее количество урона, нанесённое боссу или разрушаемой стене…). Внимание: старый вариант переменной {list_sum}000{/list_sum} НЕ работает.
  • {exec}000|0|%F %T{/exec} — время последнего выполнения списка или команды для текущего подписчика. Подробнее в этом разделе
  • {command_level}000{/command_level} — количество выполнений указанной команды. Вместо 000 укажите номер команды. Аналогично как и в случае с {level} поддерживается второй параметр: {command_level}000|%sid%{/command_level}.
  • {command_count}000{/command_count} — количество участников команды — подписчиков, для которых хотя бы раз выполнялись действия команды. Количество выполнений можно передавать аналогично как уровни списков для переменной {list_count}

Системная информация о блоках (событиях или условиях)

Немного матчасти. В Автопилоте каждое событие может являться списком. Оно подсчитывает количество выполнений для данного подписчика и сохраняет его как уровень списка. Методы работы со списками, событиями и условиями схожи. Далее для краткости будем называть их просто «блок».

Блок в базе данных Автопилота имеет 3 системных параметра:

  • body_1 — основное содержимое блока / название
  • body_2 — вспомогательное содержимое блока / режим
  • id_1 — дополнительный параметр блока

Вы можете получать данные из этих параметров при помощи переменной {list}000{/list}. Результат работы переменной различается в зависимости от типа блока.

  • В первом параметре переменной указываете номер блока
    (в примерах это 000).
  • Второй параметр — тип данных (что именно показывать). Доступны следующие варианты: body , mode ,param. Они разные для разных типов блоков. Ниже примеры:

Для списка № 000:

  • {list}000{/list} или {list}000|body{/list}— название списка. Полезно, чтобы выводить пользователям название того списка, в котором они получили баллы.
  • {list}000|mode{/list} — режим списка (0 — приватный, 1 — публичный)
  • {list}000|param{/list} — отсутствует

Для события «Написал сообщение» № 000:

  • {list}000|body{/list} или просто {list}000{/list} — регулярное выражение, сохраненное в блоке. Даже если вы выбрали опции «содержит» или «равно» Автопилот все равно хранит это как регулярку. Эта переменная незаменима, когда надо взять регулярное выражение из блока события и провести в нём поиск скобочных групп, замену и т.п.
  • {list}000|mode{/list}служебная информация: набор «флагов» через запятую, отвечающих за тип вложения и место написания сообщения. Примеры флагов: 0 — без вложения, 1 — с товаром, 2 — с картинкой, … 13 — с любым вложением, 14 — в беседе.
  • {list}000|param{/list} — ID товара во вложении или ID чата, в котором написано данное сообщение (если это настроено предварительно)

Для событий «Написал комментарий» и «Оставил запись в обсуждении»:

  • {list}000|body{/list} или просто {list}000{/list} — регулярное выражение, под которое должен подходить комментарий / запись в обсуждении при выполнении события.
  • {list}000|param{/list} — ID поста, в котором написан комментарий / ID обсуждения, в котором написано обсуждение

Для условий:

  • {list}000|body{/list} или просто {list}000{/list} — реакция на невыполнение

Переменная %content%

Переменная %content% — основное содержимое события.
Разная для разных типов событий:

  • для входящего/исходящего сообщения — текст сообщения;
  • для комментария в посте или обсуждении — текст комментария;
  • для POST/GET-запроса - содержимое переменной content, если она передавалась в запросе;
  • для «добавления в список» — название списка;
  • для опроса — текст первого ответа;
  • для перехода по ссылке - адрес ссылки;
  • для платежа (Оплатил на Яндекс) — название страницы оплаты;
  • для перевода VK Pay — назначение платежа

Есть еще пара особенных переменных:

  • %content_email% — Автопилот пытается найти в содержимом любого события почту и помещает её в эту переменную. Вы можете использовать её в действиях.
  • %content_phone% — Автопилот пытается найти в содержимом любого события номер телефона и помещает её в эту переменную. Вы можете использовать её в действиях.

Шаблоны комбинаций переменных

Для вашего удобства (периодически будут пополняться)

  • @id%subs_id% (%first_name%)/ @id%vk_id% (%first_name%)— упоминание игрока в чатах и в сообществах: в ответных комментариях, простых комментариях и постах. Игроку приходит уведомление в «колокольчик» (в случае простых комментариев и постов — только если игрок вступил в сообщество).
    Выглядит как кликабельная ссылка: Андрей. Если нужно вывести обязательно имя или фамилию (Андрей Горячих), используйте переменные %subs_link% / %vk_link%.
    Если в команде меняется несколько исполнителей, то выведет упоминание текущего исполнителя.
  • {vk}string|%partner_id%|@id%id (%first_name %last_name)||nom{/vk} и {vk}string|%partner_id%|@id%id (%first_name)||nom{/vk} — упоминание любого игрока: Андрей Горячих и Андрей соответственно. Игроку необязательно быть текущим исполнителем команды. Главное указать его VK ID во втором параметре. В этом примере VK ID находится во временной переменной %partner_id%.
  • {vk}string|%screen_name%|%first_name||nom{/vk} — имя текущего игрока из ВК: Андрей соответственно.
  • {vk}string|%screen_name%|%last_name||nom{/vk} — фамилия текущего игрока из ВК: Горячих соответственно. Подробнее в разделе «Вызов простых методов ВК».
  • vk.com/gim%event_club_id%?sel=%subs_id% — ссылка на всю переписку сообщества с пользователем, для которого выполнялась команда
  • vk.com/gim%event_club_id%?sel=%subs_id%&msgid=%object_id% — ссылка на конкретное сообщение, написанное в сообщество
  • vk.com/wall-%event_club_id%_%id_1%— ссылка на пост, для которого запускалось событие «Написал комментарий»
  • https://vk.com/wall%object_owner_id%_%object_id%— ccылка на пост, для которого запускалось событие «Поставил / Отменил лайк»
  • vk.com/wall-%event_club_id%_%object_id% — ссылка на пост, для которого запускалось событие «Создан пост»
  • vk.com/wall-%event_club_id%_%id_1%?reply=%object_id% — ссылка на комментарий написанный пользователем. Её можно отправлять в сообщении внутри команды, которая запустилась событием «Написал комментарий»
  • vk.com/wall-%event_club_id%_%post_id%?reply=%comment_id% — ссылка на «комментарий от сообщества». Её можно отправлять в сообщении внутри команды, после действия «Написан комментарий»
  • vk.com/wall-%event_club_id%_%id_1%?reply=%object_id%&thread=%branch_id% — ссылка на «ответный комментарий». Её можно отправлять в сообщении внутри команды, которая запустилась событием «Получил ответный комментарий»
  • vk.com/topic-%club_id%_%id_1%?post=%object_id% — ссылка на запись в обсуждении (событие «Добавил запись в обсуждении» / «Исправил запись в обсуждении»)
  • https://vk.com/ads?act=office&union_id=%ad_id% — ссылка на рекламное объявление. Её можно отправлять в сообщении внутри команды, которая запустилась событием «Заполнил форму сбора заявок»
  • http://vk.com/poll-%event_club_id%_%id_1% — ссылка на опрос .
    Важно! Если вы проголосовали, то переход по ссылке покажет результаты опроса, иначе выдаст сам опрос.

Условные переменные (доступны не всегда)

Переменная %last_mess_id% доступна только в случае, если в предыдущих действиях отправлялось сообщение подписчику (остальные этой группы доступны всегда. Подробнее в этой статье).

  • %last_mess_id% — ID последнего отправленного ботом сообщения (в рамках выполнения одной текущей команды)
  • %last_read_mess_id% — ID последнего прочитанного пользователем сообщения, которое отправило сообщество.
  • %last_send_mess_id% — ID последнего сообщения, которое отправило сообщество.

Доступные только во время заказа товара (если к входящему сообщению прикреплен товар ВК)

  • %vk_product_id% — ID товара в ВК;
  • %vk_product_price% — цена товара;
  • %vk_old_price% — старая цена товара;
  • %vk_product_title% — название товара;
  • %vk_product_link%ссылка на товар;
  • %payment_link% - ссылка на страницу оплаты данного товара. Формируется автоматически. Для корректной работы должно быть установлено приложение сообщества.

Также для нового перевода VK Pay или события «Оплатил в Prodamus»

  • %vk_product_price% — сумма товара (стоимость покупки);
  • %vk_product_title% — комментарий к переводу (назначение платежа);

Доступные в случае, если событие может содержать вложение. К таким событиям относятся: входящее сообщение, исходящее сообщение от админа, сообщение в беседе, комментарий к посту, запись в обсуждении, новый пост.

%attach_owner_id% — содержит идентификатор владельца вложения (сообщества тут имеют отрицательный ID)

%attach_link% — выдаёт ссылку на первое вложение.
С её помощью можно переслать в ЛС сотруднику вложение из его сообщения/комментария. Для этого вставьте переменную в действие «Написать сообщение» в поле «Добавить вложение». Также можно использовать для загрузки в сообщения секретного контента (видеозаписей, документов), который не видно в сообществе.
Например, для фотографии эта переменная выдаст: photoXXXX_YYYY_ZZZZ. Здесь XXXX — ID владельца фотографии (для подписчика положительное, для сообщества отрицательное), YYYY — ID фотографии, ZZZZ — «ключ доступа к контенту».
Есть особенности: не работает для пересылки в чаты.

%attach_links% — выдаёт ссылки на все вложения, разделённые запятой.

%attach_url% — выдаёт URL ссылки сниппета

%attach_type% — тип вложения. Может принимать следующие значения:

  • none — нет вложений;
  • photo — картинка;
  • sticker - стикер
  • video — видео;
  • doc — документ или gif;
  • market — товар;
  • audio — аудио, музыка;
  • audio_message — голосовое сообщение;
  • link — ссылка на сайт (сниппет) или статья;
  • button — сообщение отправлено нажанием на кнопку;
  • geo — карта с местоположением;
  • vkpay — перевод через VK pay;
  • money — обычный дережный перевод.
  • story

Важно! Учитывается только ПЕРВОЕ вложение. Даже если было отправлено несколько.

Доступны в случае, если команда вызвана событием «Написал сообщение» или «Получил сообщение», если сообщение «отвечает» на другое сообщение (стандартной кнопкой «Ответить»)

  • %reply_message% — текст сообщения, на которое ответили.
  • %reply_message_id% — ID сообщения, на которое ответили.
  • %reply_author% — ID автора сообщения, которое пересылают.
  • %from_id% — ID отправителя (администратора/редактора, который отправил сообщение пользователю от имени сообщества).
  • vk.com/gim%event_club_id%?sel=%subs_id%&msgid=%reply_message_
    id% ↑ пример ссылки на сообщение, на которое ответили от имени сообщества

Доступные в случае, если команда вызвана событием «Получил ответный комментарий» и «Написал комментарий» (в случае, если это ответ на другой комментарий). Работает только для ответов на комментарии пользователей (не сообществ).

  • %event_owner% — ID автора ответа (пользователя ВКонтакте, который опубликовал комментарий-ответ);
  • %reply_to% — ID комментария, на который отвечают;
  • %reply_to_user% — ID пользователя на чей комментарий отвечают;
  • %branch_id%ID ветки комментариев (для формирования ссылки)

Доступны только после выполнения действия «Написан комментарий»

  • %post_id% — ID поста под которым был написан комментарий от имени сообщества.
  • %comment_id%— ID комментария который был написан от имени сообщества.
  • %parent_id% — ID родительского комментария который был написан от имени сообщества.

Доступные для события «Создал пост»

  • %post_type% — тип поста. Имеет 2 возможных значения: post — пост опубликован, suggest — пост добавлен в предложенные (в паблике)

Доступные, если в предыдущем действии внешний ресурс (например GetCourse или amoCRM) передал параметр в ответ на запрос.

  • %api_subs_id% — ID подписчика;
  • %api_deal_id% — ID заказа (сделки);
  • %payment_link% — ссылка на страницу оплаты созданного заказа. Значение этой переменной полученное из запроса в приоритете

Доступные, если одно из предыдущих действий было «Отправить запрос»

  • %request_response% — ответ стороннего сервиса. В виде строки без каких либо преобразований

Дополнительно доступные, если команда запущена событием «Заполнил Форму сбора заявок»

  • %patronymic_name% — отчество подписчика;
  • %phone% — номер телефона подписчика;
  • %age% — возраст;
  • %birthday% — день рождения;
  • %location% — страна и город;
  • %form_id% — порядковый номер формы в приложении;
  • %form_name% — название формы в приложении;
  • %ad_id% — ID рекламного объявления. Может использоваться для формирования ссылки на объявление. Например так → https://vk.com/ads?act=office&union_id=%ad_id%

Переменные доступные только после выполнения действия «Создать /изменить ресурс»

  • %res_id% — ID измененного / нового ресурса.
  • %res_val%— новое значение.

Доступные, если пользователь Оплатил на Яндекс Деньги.

  • %id_1% — какая сумма в рублях указана на странице оплаты (до вычитания комиссии)
  • %yandex_amount% — какая сумма в рублях фактически поступила на привязанный кошелёк (после вычитания комиссии)
  • %yandex_sender% — номер кошелька отправителя. Отобразится только в случае, если подписчик платил со своего кошелька в Яндекс. Останется пустым, если подписчик платил с карты
  • %yandex_notification_type% — метод оплаты. В зависимости от метода будет подставлено одно из значений: Банковская карта или Яндекс.Деньги

Доступные, если используется событие: «Оплатил / сделал перевод»

  • %id_1% — какая сумма в рублях указана на странице оплаты (до вычитания комиссии)
  • %bill_num% — № счета в Автопилоте
  • %bill_title% — Название счета в Автопилоте
  • %bill_sid% —VK ID покупателя
  • %bill_manager% — VK ID менеджера
  • %bill_status% — Статус счета числом
  • %bill_price% — Полная стоимость в счете
  • %bill_amount% — Уже получено на счет
  • %bill_left% — Осталось доплатить по счету
  • %commission% — Комиссия платежной системы
  • %page_id% — Номер страницы
  • %autopilot_id% — Список Автопилота
  • %senler_group_id% — Группа Senler
  • %tag_id% — ID метки диалогов в ВК
  • %course_url% — Ссылочка на курс
  • %product_message% — Сообщение поcле оплаты

Статус счета числом передается числом %bill_status%

 0 - новый
1 - завершен
2 - отменен
3 - частично оплачен
4 - в работе

Тип платежной системы передается числом в переменной %body_2%

 0 - любой метод
1 - VK Pay
2 - Prodamus
3 - Fondy
4 - QIWI
5 - UnitPay
6 - InterKassa
7 - Ю.Money
8 - Ю.Касса
9 - Автопилот
10 - School Master
11 - CloudPayments

Доступны в приложении сообщества на СТРАНИЦЕ С РЕЙТИНГОМ списка:

  • %rating_position% — позиция посетителя страницы (текущего подписчика) в общем рейтинге списка.
  • %list_count% — полное количество участников выбранного списка.

Доступные после запуска события: «Посетил страницу»

  • %redirect_url% — Ссылка для перенаправления при переходе. При использовании этого параметра, любые последующие использовать бессмысленно. Ибо они не будут отображаться на странице.
  • %vk_product_price% — Сумма перевода в рублях.
  • %vk_product_title% — Название страницы.
  • %page_banner% — Ссылка на изображение баннера (с окончанием .jpg).
  • %page_desc% — Описание страницы (текст под заголовком).
  • %page_manual% — Инструкции для ручного перевода (блок, который под платежными системами). Если оставить пустым, то блок будет скрыт.
  • %page_button% — Надпись на кнопке. Влияет на каждый их типов кнопок: «Оплатить», «Поделиться», «Подписаться». Не более 25 символов.
  • %page_button_unsubscribe% — Надпись на кнопке «Отписаться».
  • %hide_blocks% — Скрыть один из блоков приложения.
    Возможные значения аналогичны параметру &hide= ↑
  • %page_access% — Доступ к странице. 1 — доступ открыть, 0 — закрыт. Доступно на страницах с типом «Контент»
  • %page_chat_mode% — тип комментариев на странице: 0 — выключен, 1, обычные комментарии, 2 — режим чата, 3 — режим приватных заданий. Доступно на страницах с типом «Контент»
  • а также другие, которые были переданы в виде GET-параметров

Динамическая дата

{date}%d %month %Y|+3 day{/date} или {date}%d %m %Y{/date} — динамическая дата. Возможность вывести текущую (или относительную) дату в любом удобном формате, благодаря переменным.

Параметры по порядку (разделяются символом |):

1) Формат даты (в каком виде выводить). Он формируется вашим произвольным текстом + специальными программными переменными. Таблица доступных переменных для вывода даты. Хотите дату через точку, хотите через тире, хотите только месяц — возможно всё!

2) Смещение даты. Для относительной даты пропишите вторым параметром следующую конструкцию: + или —, нужное число, пробел и название объекта:
sec, min, hour, day, month или year. Автопилот автоматически добавит нужное количество секунд, минут, часов, дней, месяцев или лет к дате.

Пример: этот же день 10 месяцев назад: {date}%d %m %Y|-10 month{/date}. Больше примеров:

Сейчас: {date}%F %T{/date}
Через 5 сек: {date}%F %T |+5 sec{/date}
Через 5 мин: {date}%F %T |+5 min{/date}
Через 5 часов: {date}%F %T |+5 hour{/date}
Через 5 дней: {date}%F %T |+5 day{/date}
Через 5 месяцев: {date}%F %T |+5 month{/date}
Через 5 лет: {date}%F %T |+5 year{/date}
Выведет: 
Сейчас: 2019-05-22 15:50:12
Через 5 сек: 2019-05-22 15:50:17 и т.п.

Чтобы вывести текущую дату, просто не прописывайте второй параметр. Как в этом примере: {date}%d %m %Y{/date} Ну или оставьте там 0 или ничего.

Выражение %month выведет месяц в родительном падеже.

3) Входящее время. По умолчанию текущее время. В этом параметре вы можете передавать конкретное время или день (вместо текущего при помощи переменных (или просто прописав его вручную). Например, если вам необходимо обработать дату, отправленную пользователем и сделать ее числом (перевести в UNIX формат), то переменная может выглядеть так: {date}%s||%content%{/date}.

Пример (вариант) регулярного выражения для даты (для «входящего сообщения» от подписчика): ^[0-9]{2}( |\.|-|\/)[0-9]{2}( |\.|-|\/)[0-9]{4}$.

4) Обратный перевод UNIX в дату. Для обратного перевода UNIX в нормальную дату добавьте 4-й параметр со значением unix.
Пример: {date}%F %T||1562343213|unix{/date}. По умолчанию: string (читает дату как строку введенную человеком).

Время последнего выполнения

{exec}000{/exec} — время последнего выполнения. Переменная умеет работать как с событиями так и с командами. Выводит время, когда текущий подписчик последний раз запускал объект. Доступные параметры:

  • Параметр 1 — «Номер списка/события или команды». Число или переменная.
  • Параметр 2 — «Объект» Если 1, то искать команды с номером из первого параметра, а если 0, то события или списки. По умолчанию: 0.
  • Параметр 3 — «Формат времени». Аналогичен первому параметру переменной «дата». По умолчанию: %s (UNIX-время).

Ссылка на оплату со сроком действия

{payment_link}+3 day{/payment_link} — почти то же самое что и конструкция: %payment_link%&exp={date}%s|+3 day{/date}, только с тем отличием что параметр времени зашифрован в ссылке и его не видно. Параметры переменной разделяются символом |.

  • Параметр 1 — «Сдвиг по времени» идентичный параметру 2 переменной «Динамическая дата» — ± [количество] [day/month/year].
    Например: +3 day или -1 month.
  • Параметр 2 — «Время вместо текущего» идентичный параметру 3 переменной «Динамическая дата». Чтобы пропустить и использовать текущее время, поставьте 0.
  • Параметр 3 — другие GET-параметры ссылки, которые нужно передать. Вы можете подставить сюда параметры собственной страницы. Все параметры, кроме первого, начинаются со знака амперсанда (&) — например, &t=Оплата за вебинар. Внимание: не используйте параметр e, он будет удален из общего списка.

Пример готовых переменных для ссылок на оплату товара, которого нет в разделе «Товары»:

{payment_link}0|0|t=Пожертвование за отличный контент&s=100{/payment_link} — пользователю отправится ссылка без дедлайна (будет доступна для оплаты всегда). При переходе на страницу оплаты пользователь увидит заголовок Пожертвование за отличный контент (указанный в параметре t), цену 100 (указанную в параметре &s) и стандартное изображение (то же, что и для обычной страницы пожертвования). Чтобы не показывать никакое изображение, напишите параметр &i=0.

{payment_link}0|01-12-2018 23:59:59|t=Покупка слона&s=1000{/payment_link} — ссылка перестанет работать после дедлайна (с 02.12.2018, 00:00).

{payment_link}0|01-12-2018 23:59:59|t=Оплата участия в интенсиве&s=1000&exps=2000{/payment_link} — ссылка продолжит работать, но после дедлайна цена повысится и будет равна 2000.

{payment_link}+24 hour|0|t=За курс по автоматизации&s=1000{/payment_link} — ссылка перестанет работать ровно через 24 часа после генерации (т.е. момента, когда эта ссылка выслана подписчику Автопилотом).

{payment_link}+24 hour|0|t=Пожертвование за отличный контент&s=1000&exps=2000{/payment_link} — ссылка продолжить работать, но после дедлайна (ровно через 1 день после генерации) цена будет 2000.

{payment_link}+3 day|0|t=Автопилот&s=1500&i=0{/payment_link} — ссылка на оплату заказа с названием Автопилот, стоимостью 1500 и без изображения, истекает через 3 дня после генерации.

Редко используемая комбинация — когда прописаны первый и второй параметры. В этом случае к моменту времени, указанному в первом параметре, будет прибавлен промежуток времени, указанный во втором параметре:
{payment_link}+24 hour|01-12-2018 23:59:59|t=Оплатить некоторый заказ&s=1000{/payment_link} — ссылка перестанет работать 02 декабря в 23:59:59

СОВЕТ: Чтобы не было глюков с оплатой картой через приложение, не используйте сложных названий товаров (например с кавычками, тире, длинные, и т.д.). Чем длиннее и сложнее название, тем больше шансов что Яндекс не сможет его корректно принять. Примеры хороших названий.

Количество рефералов + узнать партнера

В Автопилоте есть встроенная программа учёта рефералов (тех людей, которые пришли по приглашению данного партнёра). Её суть:

  1. В момент, когда реферал регистрируется, для него запускается действие «Обновить профиль подписчика», которое запишет в его профиль Автопилота переменную %pid%, равную VK ID партнёра, который его пригласил (надо настроить такую команду вручную).
  2. Партнёр может посчитать число своих рефералов, то есть людей, у которых в профиле Автопилота записана переменная %pid%, равная VK ID партнёра ↓

{ref}count{/ref} — простейший пример переменной, возвращающий количество рефералов текущего подписчика (то есть того подписчика, для которого выполняется действие, в которое мы вставили эту переменную).

Её параметры:

  • Тип данных. count — возвращает количество рефералов текущего или указанного партнера. subs — возвращает ID партнера текущего или указанного подписчика.
  • ID подписчика. По умолчанию (если второй параметр не задан) берется текущий подписчик (значение переменной %subs_id%).
Возвращаемые данные: переменная возвращает 0, если ничего не найдено или натуральное число (количество рефералов или ID).

Дальше несколько практических примеров:

  • {ref}count{/ref} — количество рефералов текущего подписчика. То же самое что и {ref}count|%subs_id%{/ref}.
  • {ref}count|{mention}%content%{/mention}{/ref} — количество рефералов упомянутого подписчика (если не хотите чтобы любой подписчик мог узнавать количество любого реферала добавляйте в команду условие «сотрудник аккаунта»).
  • {ref}count|26187274{/ref} — количество рефералов конкретного подписчика а также подписчика из временной переменной:
    {ref}count|%var_123%{/ref}.
  • {ref}subs{/ref} — то же самое, что переменная %pid% — ID партнера текущего подписчика.
  • {ref}subs|26187274{/ref} или {ref}subs|%var_123%{/ref} — ID партнера заданного подписчика или подписчика из переменной (переменная должна быть числовым ID подписчика в ВК).

Количество участников списка + Случайный участник

Переменные могут быть полезны для вывода статистики по событиям или командам одним сообщением.

{list_count}000{/list_count} — количество участников списка — подписчиков, которые имеют уровень 1 или выше (или с которыми происходило событие 1 или больше раз), где 000 ← это номер списка / события.

2) Если нужно выбрать участников определенных уровней, то необходимо добавить 2 параметр (после |). Есть такие варианты форматов значений (конкретные числа указаны исключительно в качестве примера):

  • 3 — равен 3;
  • 1,5,7 — равен любому из указанных значений;
  • 1-7 — в диапазоне от 1 до 7 включительно;

Итого конечная запись может выглядеть так: {list_count}000|1,5,7{/list_count} или так, например: {list_count}000|1-9{/list_count}.

{command_count}000{/command_count} — количество участников команды — подписчиков, для которых хотя бы раз выполнялись действия команды. Количество выполнений или время можно передавать аналогично как для переменной {list_count} - после |.

Примечание: нет смысла использовать в уровнях 0. Например, диапазон 0-7 - это то же самое что и 1-7. А если указать `0`, то количество всегда будет 0. А все потому что уровень 0 — это не участник списка. Не бывает такого что событие / команда ВЫПОЛНЯЛИСЬ, но ровно 0 раз. Минимум 1.

3) Есть еще третий параметр. Это время, после которого происходило событие. Указывается аналогично уровням — диапазоном или первым моментом, после которого учитываются подписчики / исполнители.

Время принимается в формате UNIX. Чтобы конвертировать привычный формат (14:20) в UNIX-формат, используйте переменную:{date}%s|0|14:20{/date}. В примере выше время: сегодня 14:20. Ниже доп. полные примеры

Сегодня запускали событие с № 500: 
{list_count}500|0|{date}%s|0|16:00{/date} - {date}%s|0|23:59{/date}{/list_count} чел.

Количество запустивших ВЧЕРА:
{list_count}500|0|{date}%s|-1 day|00:00{/date} - {date}%s|-1 day|23:59{/date}{/list_count}

Начиная с определенной ДАТЫ:
{list_count}500|0|{date}%s|0|2019-10-26 00:00{/date}{/list_count} 

4) Если в четвертый параметр прописать значение rand_user, то переменная вернет случайного участника списка / события. Пример:
{list_count}000|0|0|rand_user{/list_count}.

Информация из Упоминания

Если какого-то подписчика «упоминают» ВКонтакте в сообщениях в беседе / в комментариях (пишут * или @ и после этого часть ссылки на профиль... или выбирают из списка и оно вставляется само) — то Автопилот может получить VK ID упомянутого подписчика из этого упоминания. Также можно достать VK ID из ссылки https://vk.com/son_of_sky. Всё делается при помощи переменной:

  • %mention%
  • Её более гибкий вариант — {mention}%content%{/mention}. Здесь параметр %content% — текстовая переменная, в которой Автопилот будет искать упоминание человека или прямую ссылку ВК. Что содержит в себе переменная %content%, читайте выше.
  • В качестве переменной можно указать любую другую переменную. Например: {mention}%big_text%{/mention}

В итоге Автопилот достанет из содержимого события (и вернет как значение переменной) ID упомянутого подписчика.

Это может быть полезно для действия «Сменить исполнителя команды».

Также вы можете получить и содержимое, которое находится в скобках упоминания. Для этого добавьте вторым параметром: text.

Имею в виду слово «Сашка» для этого примера: @son_of_sky (Сашка) и «@skyjoom» для этого примера: @skyjoom (упрощенная запись без текста по умолчанию возвращает само упоминание).

Вот так это может выглядеть в конечном итоге:
{mention}%content%|text{/mention}.

P. S. Реагировать на упоминания в событиях можно при помощи этого регулярного выражения: \[id\d+\|.+\]

Либо с помощью условия: числовая переменная %mention% больше 0.

Содержимое ресурса

Переменная {get}000{/get} позволяет получить содержимое (body) ресурса по поисковому запросу. Самый простой вариант использования: вместо 000 просто указывайте системный № (он же ID) ресурса.

Важно!
Содержимое ресурса (body) — имеет ограничение 64000 байт (не символов) .
Примечание ресурса (note) — ограничивается 8000 байт (не символов).

Параметры переменной по порядку:
Разделитель, как всегда |

  • Поисковый запрос (№ или фраза из полей ресурса)
  • По какому именно полю искать. По умолчанию id.
  • Какое поле вывести в конечном результате. По умолчанию body.
  • ID сообщества целым числом (если не задано или равно 0, то будет взято из действия).
  • Режим поиска. По умолчанию выключен. Может принимать значения: equal, array и col. Если equal, то найдет только если вся строка поля ресурса = поисковой фразе на 100%. Если array или col, то среди первых 100 результатов, которые подойдут критериям поиска, будет искать в поле (выбранном для поиска) точное соответствие значению. Но воспринимать поле при этом как массив (список) значений (array — через запятую без пробелов, col — по одному значению в строке — колонкой). Другими словами — это аналог точного вхождения. Регистр не учитывается.

В параметрах 2 и 3 доступны следующие значения:

  • id — номер ресурса;
  • name — название ресурса;
  • body — содержимое ресурса;
  • note — примечание ресурса.

Параметр 4 (режим поиска) Может принимать значения:

  • 0 или — содержится. Находит первый ресурс, который содержит в заданном поле поисковый запрос.
  • equal — равен. Найдет ресурс, у которого выбранное поле на 100% совпадает с поисковым запросом.
  • array — ищет точное соответствие значению. Но воспринимет поле при этом как массив (список) значений. И в итоге найдет ресурс, у которого одно из значений массива = поисковому запросу.
  • col — аналогично как и array, только ищет не элементы массива, а строки (расшифровывается как «колонка»).

Нюанс: array и col ищут среди первых 100 результатов, содержащих поисковый запрос в искомом поле.

ПРИМЕЧАНИЕ: в любом режиме, регистр символов не учитывается при поиске. Другими словами, можно написать маленькими буквами, но найдет и то, что написано большими.

Если ресурс не найден переменная вернет: 0

ПРИМЕРЫ ЗАПРОСОВ:
После // пример результата выполнения

Текстовый ресурс по номеру:

{get}1{/get}  //  Глобальные "ресурсы" общие для всех 'подписчиков'. 

№ (id) числового ресурса и его название по содержимому (в виде числа):

{get}1003|id|body{/get}: {get}1003|name|body{/get}  //  4: Числовой ресурс

Содержимое (число) по слову из примечания и в другом сообществе:

{get}ответ|note|body|41102729{/get}  // 100

Содержимое ресурса по названию Автопилот в другом сообществе:

{get}Автопилот|name|body|183601501{/get}

Содержимое ресурса по названию Автопилот:

{get}Автопилот|name|body{/get}

Случайный билет (содержимое ресурса) по названию, исключая выданные (которые сохраняем в примечаниях подписчика):

{get}Билет {rand_range}1-20|%note%{/rand_range}|name|body{/get} // Баклажан это гриб? Почему?

Примечание по элементу массива, введенному подписчиком (тут список по значению на строку):

{get}%content%|body|note|0|col{/get}

Получение содержимого ресурса с названием Автопилот 2077 в текущем сообществе.
Важно! Если у вас есть три ресурса — Автопилот 2077_1, Автопилот 2077_2, Автопилот 2077, то выдаст содержимое ресурса Автопилот 2077, так как название на 100% совпадает с поисковым запросом.

{get}Автопилот 2077|name|body|%event_club_id%|equal{/get}

Простой метод получения ресурса — переменная %db%

Обзор переменной

Переменная позволяет удобно работать с json-объектами, находящимися в ресурсах.

Переменная поддерживает JSON PATH (получение значения элемента находящегося внутри многомерного массива). То есть, можно внутри через точку прописывать путь к внутренним элементам ресурса. Формат:

%db.первый аргумент.второй аргумент.поле для вывода значений%

Первым аргументом должно быть указано:

  • либо идентификатор (ID) ресурса
  • либо название ресурса.
    Но это сработает только в случае, если в названии нет пробелов, оно состоит только из латинских букв, цифр, и символов: - или _.

Вторым аргументом указываем компонент ресурса, например:

  • title— название
  • body— содержимое
  • note— примечание
  • id— номер (идентификатор)

Допустим, есть ресурс с ID 64343:

Чтобы получить название ресурса — autopilot достаточно прописать %db.64343.title% или %db.autopilot.title%

  • для содержимого: %db.64343.body% или %db.autopilot.body%
  • для примечания: %db.64343.note% или %db.autopilot.note%
  • для ID сообщества: %db.64343.gid% или %db.autopilot.gid%

Если второй аргумент не указан, то будет выведен json всего ресурса.

Если переменная вернет not found, то значит какой-то элемент массива не найден. Какой именно будет написано в начале этой строки. Если строка начинается со слова resource, то это значит что не найден ресурс.

Важно! Переменная кэширует свое значение на время выполнения команды, поэтому ее можно использовать многократно, не боясь перегрузить Автопилот.

Если вы будете обновлять значение ресурса через действие Создать/изменить ресурс и поиск по названию, то важно, чтобы ресурсы имели названия содержащие только цифры, латинские буквы, _ и —

Еще примеры:

1) %db.123% - json всего ресурса с id 123
2) %db.var% - json всего ресурса с названием var

3) %db.var.note% - примечание ресурса
4) %db.var.body% - содержимое

5) %db.game.note.boss% - весь json босса игры (ресурса) game
6) %db.game.note.boss.head.health% - число здоровья головы босса в игре game

Топ подписчиков (рейтинг)

Переменная {users}000{/users} позволяет получить до 30 подписчиков в виде рейтинга (для сообщений ВК) или простого списка (для дальнейшей обработки). Где 000 — это номер списка для которого нужно получить рейтинг.

Параметры переменной по порядку:

  • № списка или события для которого нужно получить рейтинг (число). Поддерживается также возможность указать уровни после двоеточия (после номера списка) c синтаксисом как в list_count:
  • Количество подписчиков в выборке. По умолчанию 10, максимум 30. Однако если написать в начало этого параметра players:, то можно доставать рейтинг только для нескольких указанных через запятую игроков (указывать обязательно VK ID).
  • Тип результатов. rating — рейтинг по уровням списка (количеству выполнений события), last - список последних.
  • Тип данных. vk — расширенный рейтинг — для сообщений ВКонтакте (подходит также для комментариев, постов и бесед),
    simple - список ID через запятую, json — json-массив, dycover — для дин. обложек, json-assoc — асоциативный json-массив (объект).
  • Расширенный режим. Доступно значение ext ( или 1). Если указано, то кроме самих подписчиков или их ID выведет также уровни (или время последней смены уровня). Для простого типа данных (simple) разделитель между ID и дополнительной информацией — : (двоеточие), а время выводится в UNIX формате. Для расширенного типа — значение находится в скобках. По умолчанию 0.

ВНИМАНИЕ!

При использовании расширенного режима, список подписчиков достается 1 раз в 1 секунду. ПРОТИВОПОКАЗАНО использование переменной (в расширенном режиме) более 1 раза в одной команде (или вместе с сложными действиями, типа «Подписать на Senler» или «Одобрить заявку в сообщество»). Потому что может возникнуть ошибка Callback API ВКонтакте из-за таймаута.

ПРИМЕРЫ

Простой рейтинг:
{users}123|10|rating|simple|ext{/users}

Простой список последних (без времени)
{users}123|30|last|simple{/users}

Рейтинг с баллами:
{users}123|10|rating|vk|ext {/users}

Список последних + время выполнения события:
{users}123|10|last|vk|ext {/users}

Результат работы примеров:

Доступные переменные и функции, image #1

Продвинутые возможности (сразу все):

Вывести рейтинг виде асcоциативного массива, отсортированный в порядке увеличения значения уровня, но тольо среди пары выбранных участников. А также исколючить таких, у которых уровень меньше 10 или больше 100: {users}56:10-100|players:26187274,98973626|rating|json-assoc|ext|asc{/users}

Вывод позиции игрока в рейтинге в команде ↓

Позиция исполнителя: {users}123|%vk_id%|position{/users}
Позиция коллеги: {users}123|26187274|position{/users}
где 123 - номер вашего списка.

Важное примечание: функция довольно ресурсозатратная, поэтому просьба использовать не более ОДНОГО РАЗА на КОМАНДУ

Собственные переменные

При использования событий «Упомянут в запросе» или «Перешел по ссылке» вы можете создавать и передавать собственные переменные. Для этого для начала придумайте для каждой уникальное название (латиницей, только буквы и нижние подчеркивания, без пробелов или тире). Например: user_status.

Названия придумывать желательно, но не обязательно. Например, спокойно можно передавать классические UTM-метки (utm_source, utm_medium и т. д.). Главное, чтобы они по минимуму пересекалось с другими переменными, описанными на этой странице (если, конечно, нет обратной цели).

Эти названия используйте при формировании ссылки запроса или ссылки сообщения, как GET-параметр.

А для использования в действиях, достаточно прописать название параметра (которое по сути будет переменной) между двух символов процента (%). Пример: %user_status%.

Пример использования собственной переменной в сообщении.
Пример использования собственной переменной в сообщении.

НЕ РЕКОМЕНДУЕТСЯ использовать такие переменные:
Использование системных переменных может не дать результата или испортить запрос. К таким переменным относятся: s, secret, eid, esecret

Оставить только числа

{num}___{/num} — оставляет только числа в тексте, который между тегами. Имеет всего 2 параметра:

Второй параметр прописывается после символа | (как обычно) и имеет несколько вариантов значений:

  • 0 — (установлен по умолчанию, можно не заполнять) — из обрабатываемого текста останутся только цифры
    Пример: {num}телефон +7(921)123-45-67{/num} вернёт 79211234567
    {num}-500{/num}
    вернет 500 т.е. уберет минус
  • math — из обрабатываемого текста останутся все числа, а также простые математические символы: )(.+-*/
    Пример: {num}выражение (10+2)/6.23|math{/num} вернёт (10+2)/6.23
    {num}-1987|math{/num}
    останется -1987
  • list — останутся только числа и запятые (точки вырезаются,но если запятых несколько, то все будут оставлены).
    Пример: {num}10 попугаев,3 собачки, 20 кур|list{/num} вернет 10,3,20
  • float — останутся только числа и точки (запятые вырезаются!). А потом оставит только одно число с одной плавающей точкой. Если в тексте точка встретится второй раз, то она и весь текст справа от неё удалится
    Пример: {num}10.35 км и 2.35 см|float{/num} вернет 10.352
  • human —вернет числа в удобочитаемом формате.
    Пример: {num}23463748328|human{/num} вернет23 463 748 328

Есть еще третий параметр: comma — вместо . оставляет запятые: ,.

Математические операции

С помощью функции {math}__{/math} можно проводить простейшие расчёты — баллов для игроков, стоимости продукта с учётом скидки… Её альтернативные названия в статьях: «калькулятор», «переменная математика»

{math} 10+10 {/math} — пример записи (отобразит 20)

Внутри тегов вырезаются все лишние символы (буквы и т.п.), кроме цифр, точек десятичных дробей и символов математических операций (подобно другой переменной {num}__{/num})

Поддерживаются следующие простые математические операции:

  • + сложение,
  • вычитание,
  • * умножение,
  • / деление,
  • () скобки (до 10 уровней вложенности).
  • . разделитель целой и дробной части десятичных дробей

Главная фишка в том, что внутри можно прописывать любые другие переменные. А потом эту переменную например вставить внутрь ссылки на оплату. Подробнее на примерах:

{math}100-(4+4) * (2*(3 eur + (1+1+2-2)))+2*10/ 5{/math} — пример сложного арифметического выражения. Вернет 24.

{math}%content%+10{/math} — использование в расчетах введенного подписчиком числа. Например, если подписчик напишет в сообщении: я набрал в тесте 12 баллов, то результатом вычисления выражения выше будет 12 + 10 = 22. Обратите внимание: необязательно писать {num}%content%{/num}. Переменная {math} самостоятельно удаляет все символы, кроме чисел и указанных выше знаков

{math}%vk_product_price%*0.8{/math} — цена со скидкой 20%.

{payment_link}|0|&s={math}%vk_product_price% - {list_level}111{/list_level}*100{/math}{/payment_link} — ссылка на оплату со скидкой «по 100 руб за каждый полученный балл» (для списка 111)!!!

Это пример, как можно автоматизировать поощрение за выполнение заданий, если в вашем тренинге внедрена геймификация.

{math} 100/3 | 0 {/math} — второй (опциональный) параметр — количество знаков после точки (для не целых чисел). По умолчанию 4. И обычно 100/3 вернет 33.3333, но в если записать как в примере, то получится 33.

{math}{reg}%content%~~\d~~all~~+{/reg}{/math} — сумма цифр, например, даты рождения введенной пользователем. Например, 03.12.1982 вернет 26.

Ниже пример чат-калькулятора, созданного на Автопилоте

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

Склонение слов после числительных

%number% {case} %number%|число|числа|чисел{/case} — переменная выбирает один из вариантов слова в зависимости от поступающего числа. Имеет всегда фиксированный набор параметров — 4 шт. (по порядку):

  • Переменная, в значении которой находится число.
  • Слово для чисел с 1 в конце (кроме 11).
  • Слово для чисел с 2, 3 или 4 в конце (кроме 12, 13, 14).
  • Слово для всех остальных случаев.

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

Работа с массивами

Массивами в Автопилоте называются:

  • Списки значений (любых числовых или текстовых выражений), разделенные запятыми
    Пример 1: красный,зелёный,оранжевый,коричневый
    Пример 2: 4,8,15,16,23,42
  • Списки значений в столбик (по одному значению на строку)
    Пример:
    картофель сырой
    помидоры
    туалетная бумага
    бутылка кефира
    полбатона
  • Списки значений, разделённых произвольными разделителями
    Пример 1: uno dos tres cuatro, здесь разделитель — пробел
    Пример 2: хали;гали;паратрупер, здесь разделитель — точка с запятой

Чаще всего массивы используются в ресурсах

Для получения элементов массива или общей информации по нему используйте переменную: {array}___{/array}, где вместо ___ пропишите ваш «массив» целиком или переменную, содержащую массив.

Дальше параметры по порядку (разделяются символом |).

1) Сам массив. Например, в виде переменной. В примерах будем считать, что переменная %array% содержит массив значений списком, а переменная %cols% — массив строк (колонку / столбец). Пример: {array}%array%{/array}

2) Какое значение / порядковый номер получить. Будет понятно после просмотра примеров ниже. В некоторых случаях нужно оставлять 0. Простой пример: {array}%array%|2{/array} — получит значение второго элемента.

3) Функция / Операция с массивом. Возможные значения:

  • val — (по умолчанию) — достать значение по порядковому номеру (не путать с «ключом элемента» в программировании). Пример: {array}%array%|1|val{/array} — достанет значение первого элемента массива. Если не найдено, будет 0. Для того, чтобы получить первую строку допишите последним параметром col вот так {array}%array%|1|val|col{/array}
  • num — достать порядковый номер элемента имея его значение(вернет только номер первого найденного элемента). Пример: {array}%array%|Первый элемент|num{/array} — в случае с массивом Первый элемент,Второй,Третий вернет 1. Если элемент не найден, вернет 0 (это позволит также проверять наличие элемента в массиве).
    Нюанс: если в массиве есть строки с однаковым значением:
    Первый элемент
    Первый элемент
    Первый элемент
    то функция {array}%array%|Первый элемент|num|col{/array}вернет 1 — номер первой найденной строки.
  • val-contain— выдаcт значение по неточному соответствию.
    Пример: {array}один,два,три,четыре,пять|три|val-contain{/array} вернёт три
    Пример: {array}%array%|три|val-contain|col{/array} вернёт строку массива %array% в которой содержится слово три по неточному соответствию.
  • num-contain— выдаст первый найденный номер элемента по неточному соотвествию.
    Пример: {array}один,два,три,четыре,пять|три|num-contain{/array} вернёт 3
    Важная особенность: поддерживаются массивы меньше 1000 элементов.
    Пример: {array}%array%|три|num-contain|col{/array} вернёт номер строки массива %array% в которой содержится слово три по неточному соответствию.
  • num-reg— выдает первый найденный номер элемента который соответствует регулярному выражению (поддерживаются переменные Автопилота и регулярные выражения)
    Пример: {array}один,два,три,четыре,пять|^три$|num-reg{/array} вернёт 3
    Пример: {array}%array%|^три$|num-reg|col{/array} вернёт номер строки массива %array% в которой слово три подходит под регулярное выражение
  • reg-num— находит первый найденный номер элемента в котором лежит регулярное выражение (поддерживаются переменные Автопилота и регулярные выражения)
    Пример: {array}один,два,три,четыре,пять|^три$|reg-num{/array} вернёт 3
    Пример: {array}%array%|^три$|reg-num|col{/array} вернёт номер строки массива %array% в которой слово триподходит под регулярное выражение
  • diff— расхождение массивов удаляет из исходного массива элементы, которые находятся в массиве 2 (указанном в параметре 2)
    Пример 1: {array}один,два,три,четыре,пять|два,четыре|diff{/array}
    вернёт: один, три, пять
    Пример 2: {array}один/два/три/три/четыре|один/три/пять/семь|diff|/{/array} вернёт два/четыре
  • Пример 2: {array}%new_array%|%new_array%|diff|col{/array} вернёт расхождение строк в массиве 2.
  • count — количество всех элементов массива.
    Пример подсчета количества элементов:{array}%array%|0|count{/array}
    Пример подсчета количества строк:{array}%array%|0|count|col{/array}
  • slice — достает N элементов из массива. Количество элементов берется из второго параметра.
    Пример 1: {array}один,два,три,четыре,пять,два|3|slice{/array}
    вернёт 3 первых элемента массива: один, два, три
    Пример 2: {array}один,два,три,четыре,пять,два|-2|slice{/array}
    вернёт 2 последних элемента массива: пять, два
    Пример 3: {array}%array%|3|slice|col{/array}
    вернёт 3 строки массива %array%
  • add — добавить элемент (или несколько) в массив. Добавляет элементы, которые берет из второго параметра. Пример: {array}%array%|семь,восемь|add{/array}
    Пример 3:{array}%array1%|%array2%|add|col{/array}добавит все строки массива %array1%в строковый массив %array2%параметр colуказывает что информация в массиве записана в виде строк
  • json — преобразует массив из первого параметра в json-объект. Синтаксис: {array}%array%|0|json{/array}
    Пример 1: {array}один,два,три,четыре,пять|0|json{/array}
    преобразует массив в json: ["один","два","три","четыре","пять"]
  • rand — перемешивает массив случайным образом и возвращает новый массив.
    Пример: {array}%array%|0|rand{/array} если второй параметр с 0 заменить на 1, то результатом функции будет ОДНО значение среди списка значений, выбранное случайным образом (другими словами: такая функция достает случайное значение)

Пример 1: {array}один,два,три,четыре,пять|1|rand{/array}
вернет случайный элемент: четыре
Пример 2: {array}один,два,три,четыре,пять|2|rand{/array}
вернёт 2 случайных элемента: два, пять
Пример 3:{array}%array%|1|rand|col{/array}вернет одну случайную строку

  • unique — оставляет только уникальные значения элементов массива. Пример: {array}%array%|0|unique{/array}
    Пример: {array}%new_array%|0|unique|col{/array} — оставляет только уникальные значения строк
    Важно! Не используйте тег <br> внутри {array}%old_array%<br>%new_array%|0|unique|col{/array}

Если нужно получить уникальные значения строк 2 массивов %old_array% %new_array% используем пример ниже:

{array}%old_array%
%new_array%|0|unique|col{/array}
  • sort — сортирует массив в прямом порядке. Например, функция вернет 1,2,3,4,5
  • rsort — сортирует массив в обратном порядке. Функция вернет вернет 5,4,3,2,1

Пример: Допустим, у вас массив 1,2,3,4,5и вам нужно найти минимальный и максимальный элемент массива.
Сначала считаем количество элементов через %count%= {array}%array%|0|count{/array}

Прямой Массив: {array}%array%|0|sort{/array}
Получить максимальное число в массиве: {array}%array%|%count%|val{/array}
Обратный массив: {array}%array%|0|rsort{/array}
Получить минимальное число в массиве: {array}%array%|1|val{/array} 

Результат:

Доступные переменные и функции, image #5

Например, у вас задача: отсортировать массив слов (записаны в содержимом ресурса) в алфавитном порядке:

яблоко,йогурт,ананас,кактус,яблоко

Для этого сначала получаем ресурс в переменную %array%

Например по номеру: {get}123456{/get} - где 123456номер ресурса, либо по названию {get}Мой массив|name|body{/get}с помощью функции:

 {array}%array%|0|sort{/array}
Доступные переменные и функции, image #6

Если данные записаны построчно, то их сортируем с добавлением параметра col

 {array}%array%|0|sort|col{/array}

4)Тип разделителя массива. array — массив (список) значений через запятую. Стоит по умолчанию (то есть можно не указывать, если это ваш случай). col — массив строк (столбик). Пример:
{array}%cols%|0|count|col{/array}.

5)Значение для замены или удаление элемента. Если написать сюда значение del (а в параметре № 3 при этом будет val или num), то переменная вернет входящий массив, но без найденного элемента. А если написать любой другой текст, то найденное значение будет заменено на этот текст (и аналогично возвращен обработанный массив).

Но также вы можете прописать любой другой разделитель (не содержащий |, конечно, ибо это разделитель параметров переменной). Можно целые наборы символов или фразы.

Важно! Пробелы при этом учитываются!
Пример №1: {array}один;два;три;четыре;пять|3|val|;{/array} вернёт три

Пример №2: Замена элементов в массиве:

  • Поиск по значению и замена
    {array}один,два,три,четыре,пять|два|num|array|ДВУШКА{/array}
  • Поиск по номеру и замена
    {array}один,два,три,четыре,пять|5|val|array|ПЯТИШКА{/array}

Пример №3: Удаление элемента массива по номеру:

  • {array}один,два,три,четыре,пять|1|val|array|del{/array}

вернёт массив без первого элемента: два,три,четыре,пять

Значение элемента многомерного массива

Для продвинутых!

Программистам: тут многомерный ассоциативный массив - это ближе к «объекту» (ООП).

Если какой-то сервис передает данные в JSON (или как POST, но в виде многомерного массива), то вы можете получить значение элемента одного из дочерних уровней с помощью подобной конструкции:
{get_var}contact.vk.id{/get_var}.

Пример многомерного JSON объекта для выражения выше:
{
contact"
;: { "name&qu
ot;: "Андрей",
"phone": "8985123
4567
&
quot;, "vk": {"id":1234567,"club":12345} }, }

Подробнее о том, как прописывать и о том какие еще есть параметры:

  • Параметр 1 — Путь к элементу. В качестве разделителя уровней используйте точку: ., например: contact.vk.id. Это значит, что vk внутри contact, а id внутри vk.
  • Параметр 2 — из каких данных получать значение. Параметр принимает константы: post (по умолчанию) — данные из POST запроса (но если не найдет первый уровень в POST, то поищет в JSON input); json — искать исключительно в JSON input, get — искать исключительно среди GET-параметров. Также доступны значения: array или col — это если значение поступает необработанным списком (массивом)
  • Параметр 3 — если нужно обработать не входящие параметры события (из тех, что выше), а что-то конкретное. Например, ответ от действия (переменная %response%).
  • Параметр 4 — как обработать, если значение окажется не строкой, а массивом или объектом. Принимает значения: json (по умолчанию) — преобразует в JSON объект; list — список значений через запятую.

Пример готовой переменной для получения статуса ответа от Senler (используем дополнительные параметры переменной):
{get_var}success|json|%response%{/get_var}.

Автопилот умеет запускать события для подписчиков, ID которых находится где-то внутри многомерного массива. Подробнее по ссылке.

Если сервис не найдет какой либо уровень переменная вместо значения выведет текст типа: varname not found (где varname — это название уровня).

Переменная %request%

%request%— это уникальная переменная, которая поддерживает входящий запрос от сторонних сайтов (ВК, Senler и т.д.). Она поддерживает JSON PATH (получение значения элемента находящегося внутри многомерного массива). То есть, можно внутри через точку прописывать путь к внутренним элементам.

Для переменной обязательно надо прописывать название массива входящих данных запроса (разные типы запросов передают данные в разные массивы). Есть ТРИ типа данных:

  • %request.input%- обычно ВК или Senler так отправляют данные.
  • %request.get%— параметры ссылки для событий «Перешел по ссылке» или «Посетил страницу».
  • %request.post% - параметры запросов из большинства платежных систем или других сервисов.

Чтобы определить в каком масиве данных находятся нужные вам данные, сначала отправьте себе сообщение с текстом: Запрос: %request%. И там уже самостоятельно определите путь и основной массив. И дальше формируйте основную переменную через путь к ней. Пример получения переменной Senler с названием test из запроса от бота: %request.input.object.variables.test%.

Работа с JSON объектами (асоциативными массивами)

Обзор функции

Пример JSON: Предположим, временная переменная
%json% = {"user":{"id":123,"name&quot;:"Андрей"},"club":123456}. Это классический JSON объект. Покажу на нём большинство примеров.

Функция для работы с JSON выглядит так:
{json}json-текст|аргументы|функция|значение/параметры{/json}.
Теперь подробнее про каждую из опций.

1) JSON-текст должен быть валидным JSON. В противном случае значения свойств будут равны null, а функции обработки будут возвращать пустую строку (последнее может поменяться со временем).

2) Аргументы зависят от функции. В большинстве случаев это JSON-path (как в предыдущем разделе). Например,
достанем ID пользователя: {json}%json%|user.id{/json}.

3) Название функции, которую нужно выполнить с JSON (полный список функций с примерами смотрите ниже). По умолчанию: get — достать значение свойства по указанному пути.

4) Новое значение или Дополнительные параметры. Некоторые функции могут иметь вспомогательные параметры. Например: направление сортировки. Другие — принимают вторым аргументом новое значение.

Список функций для работы с JSON на примерах:

Весь массив:

  • 0 — get — {json}%json%{/json} — просто вернет исходную строку
  • 1 — get — {json}%json%|user.name{/json} — достаем значение свойства (в данном примере «Имя подписчика»). Синоним: {json}%json%|user.name|get{/json}. Результат: значение или json.
  • 2 — set — {json}%json%|user.name|set|Андрей{/json} — установить новое значение свойства (в данном примере — сменить «Имя подписчика»). Результат: новый объект. В данном примере:
    {"user":{"id":123,"name&quot;:"Андрей"},"club":123456}.
  • 3 — del — {json}%json%|club|del{/json} — удалить свойство (вместе с названием). Результат: новый объект, без удаленного свойства. В данном примере: {"user":{"id":123,"name":"Андрей"}.
  • 4 —push — {json}%json%|user.name|push|Андрей{/json}— закидывает элемент в конец массива. Результат: новый объект с добавленным элементом массива. В данном примере: {"user":{"id":123,";name":["Юля","Андрей"]}}. Важно! Если Аргумент не найден, то элемент будет записан в корень JSON — объекта.
  • 6 — count — подсчет количества элементов внутри JSON.
    Пример 1 : {json}%json_array%||count{/json} — количество элементов в объекте
    Пример 2 : {json}%json_array%|1|count{/json} — количество элементов в объекте
    Пример 3 : {json}test||count{/json} — количество элементов в строке
  • 7 — human — преобразование JSON — объекта в человекопонятный вид. Примеры работы с функцией смотрите в статье.
  • 8 — sort — {json}%json_array%|level|sort|desc{/json} — работает только с массивом простых JSON объектов. Сортирует массив по числовому значению одного из свойств, которое должно находиться в каждом из объектов на первом уровне! Последний аргумент — порядок сортировки. desc — обратный порядок, asc — прямой порядок (по умаолчанию). Подробнее на примерах:

Временная переменная %json_array% =

[{"id":1,"name":"Юля","level":2},{"id":3,"name":"Андрей","level":3},{"id":2,"name":"Лера","level":1}]

1) Рейтинг игроков по уровню (level):
%json_new% = {json}%json_array%|level|sort|desc{/json}.

Сообщение:

Рейтинг игроков:
1) {json}%json_new%|0.name{/json} ({json}%json_new%|0.level{/json})
2) {json}%json_new%|1.name{/json} ({json}%json_new%|1.level{/json})
3) {json}%json_new%|2.name{/json} ({json}%json_new%|2.level{/json})

Результат:

Рейтинг игроков:
1) Андрей(3)
2) Юля(2)
3) Лера(1)

2) Отсортировать по ID:
%json_new% = {json}%json_array%|id|sort{/json}.

Сообщение (выводим несколько первых строчек в сообщении):

{json}%json_list%|0.id{/json}: {json}%json_list%|0.name{/json} ({json}%json_list%|0.level{/json})
{json}%json_list%|1.id{/json}: {json}%json_list%|1.name{/json} ({json}%json_list%|1.level{/json})
{json}%json_list%|2.id{/json}: {json}%json_list%|2.name{/json} ({json}%json_list%|2.level{/json})

Результат:

Список игроков:
1: Юля(2)
2: Лера(1)
3: Андрей(3)

Переменная %response% — ответ от стороннего сайта.

%response%— это уникальная переменная, которая содержит в себе ответ сервера от сторонних сайтов (ВК, Senler и т.д.). Она поддерживает JSON PATH (получение значения элемента находящегося внутри многомерного массива). То есть, можно внутри через точку прописывать путь к внутренним элементам.

Любое действие в Автопилоте содержит в себе %response%
Например, %response% от действия «Подписать на рассылку в Senler», вернет при успехе {"success&quot;:true}

Следовательно: выводя себе эту переменную ответ сервиса вы можете тестировать, что именно возвращает вам сторонний сервис и оперативно устранять ошибки при тестировании.

Важно! %response%перезаписывается при любом запросе на сторонний сайт (ВК это тоже сторонний сайт). Например, действие: «Отправить сообщение» перезапишет %response%

Если нужно сохранить ответ сервера для дальнейшей обработки, то сохраните %response%после вызова действия, во временную переменную.

Работа с текстом.

Краткое описание: {text}исходный текст|функция|аргумент 1|арг. 2{/text}.
Ниже подробнее про каждую из доступных функций. В примерах исхдный текст заменен на переменную %text%.

  • len — Посчитать количество символов
    {text}%text%|len{/text}
  • rawОчистить от html-тегов:
    {text}%text%|raw{/text}
  • cut — Достать подстроку из текста / обрезать:
    {text}%text%|cut|10{/text} — Обрезать до 10 символов
    {text}%text%|cut|10|5{/text} — 10 символов начиная с пятого
  • replaceЗаменить текст другим текстом:
    {text}%text%|replace|сервисами рассылок|конструкторами ботов{/text}
  • ireplace — или Заменить без учёта регистра символов:
    {text}%text%|ireplace|чат-бот|Автопилот{/text}
  • upper — Написать весь текст в верхнем регистре (большими буквами)
    {text}%text%|upper{/text}
  • lower — Написать весь текст в нижнем регистре (маленькими буквами)
    {text}%text%|lower{/text}

При обрезке:

  • Арг. 3 — макс. длина финальной строки (до скольки символов обрезать)
  • Аргумент 4 — сколько символов обрезать с начала строки.

При замене подстроки:

  • Аргумент 3 — какой текст заменять
  • Аргумент 4 — на что заменять

При замене аргументы чуствительны к пробелам. То есть, если вы напишите
чат-бот (пробел, чат-бот, пробел), то в предложении У меня есть чат-бот. ничего заменено не будет!

Результат поиска при помощи регулярного выражения

Или просто переменная «Регулярка» (так будем между собой называть).

Например, {reg}%content% ~~\d+~~ 0{/reg} — найдет число в тексте. И выведетв действие вместо переменной. 1) Сразу обращаю ваше внимание на то, что переменная имеет необычный разделитель: ~~ вместо привычного |. Это связано с тем, что символ | в регулярных выражениях это логическо «ИЛИ».

Быстро понять что такое регулярки можно из этой статьи

2) Вторая важная особенность: лучше избегать пробелов между значениями и разделителями. Они могут быть восприняты как часть строки. Детали позже.

3) Создавать регулярку обязательно на ↓ сайте https://regex101.com.

Корректная настройка сервиса для создания регулярных выражений.
Корректная настройка сервиса для создания регулярных выражений.

Подробное объяснение +демонстрация работы примеров:

Пример работы с переменными. И объяснение на видео. P. S. Там в начале еще старый разделитель.

4) Детально про каждый параметр переменной по порядку (разделяются ~~).

  • (1) Исходный текст. Текст, внутри которого необходимо найти нужную часть. Может быть любой переменной начального уровня (те которые с %__% вокруг названия). Ее можно создать самому (ссылка ↑ выше) либо использовать готовые (см. начало этой статьи).
  • (2) Регулярное выражение. Всё, что в обычном коде между символами /. Или то, что вы сформируете поле регулярки на сайте regex101.com. Просто копируйте из поля и вставляйте в переменную. Избегайте пробелов, иначе они будут восприняты как часть регулярного выражения. Правильные примеры: {reg}%content%~~\d+{/reg}, {reg}%content%~~\d+~~0{/reg}.
  • (3) Индекс «скобочной группы» и тип поиска. По умолчанию: 0. Может быть числом или начинаться с all. Если второе, то вернет ВСЕ значения в виде текстового массива. Детали там ниже ↓ .
  • (4) Текст для замены, если в пар. 3 указано число (неважно какое, все равно будет вести себя как 0, если задать этот параметр), то ВЕСЬ найденный текст выражения будет ЗАМЕНЕН на текст, который прописан в данном 4-м параметре. При чем заменены будут ВСЕ совпадения заданного регулярного выражения в исходном тексте.
    ВАЖНО! Параметр считается заданным, если в переменную добавлен 3-й по счету разделитель ~~. То есть, даже если вы пропишите после ~~ значения: 0 или ничего: , то сервис именно на это и заменит исходник.
  • (5) Разделитель массива, если параметр 3 начинается с all. Значит, если не число а all, то в параметр 4 вы можете прописать разделитель элементов массива (по умолчанию запятая: ,). То есть: да, этот параметр принимает разные значения в зависимости от значения предыдущего. Если вам нужен перенос строки внутри разделителя (например для создания оформленных текстовых чеклистов), используйте тег <br>. Он будет автоматически заменен на перенос при выводе результата.

Поиск скобочной группы

В регулярках есть так называемые «скобочные группы с захватом». Неплохая статья про такие группы на этом сайте. Вы можете искать большое выражение, а вывести только его небольшую конкретную часть. Для этого его надо обернуть в обычные скобки (). Если вам нужна такая «группа символов», укажите в параметре № 3 ее номер. На сайте regex101.com вы можете наглядно увидеть какой именно номер вам указывать.

Пример выделения группы символов.
Пример выделения группы символов.

Несколько практических примеров (исходный текст тот что на картинке). Переменная {reg}%content%~~\d(\d)~~0{/reg} вернет вам значение 12, а переменная {reg}%content%~~\d(\d)~~1{/reg}2.

Примечание: Параметр № 3 игнорируется если, в нем написано число и + используется параметр 4 (замена всех вхождений на заданный текст).

Однако этот параметр более сложный. И в него можно записать не только число, но и слово all. Тогда переменная вернет массив всех найденных значений (через запятую или с указанным разделителем в параметре № 4).

Для вывода массива скобочных групп определенного номера группы достаточно в параметре 3 после all прописать нужное число. Например: all-1

Наглядные примеры настроек переменной:

Исходный текст:

Немного текста с числом [123] в квадратных скобках и другим числом без них: 567

Примеры переменных и результаты их работы

- Число в квадратных скобках: {reg}%content%~~\[\d+\]~~0{/reg}
Результат: [123]
________
- Число, что внутри кв. скобок: {reg}%content%~~\[(\d+)\]~~1{/reg}
Результат: 123
________
- Второе число: {reg}%content%~~[^\d]+(\d+)[^\d]+(\d+)~~2{/reg}
Результат: 567
________
- Слово больше 9 букв: {reg}%content%~~\w{9,}~~0{/reg}
Результат: квадратных
________
- Заменить все слова на точки: {reg}%content%~~[а-ю]+~~0~~.{/reg}
Результат: . . . . [123] . . . . . . . .: 567
________
- Массив чисел из текста: {reg}%content%~~\d+~~all~~,{/reg}
Результат: 123,567
________
- Вторая цифра из каждого числа: {reg}%content%~~\d(\d)~~all-1~~;{/reg}
Результат: 2;6

Напоминаю еще раз, что научиться создавать регулярки (хотя бы простые) вы можете по этой статье. Чтобы создать регулярку для этой переменной обязательно пользуйтесь этим ресурсом!

Еще примерчики:

1) Для «команды пользователя» в беседе: перевести 200 @son_of_sky.

Название "команды": 
Переменная: {reg}%content%~~(перевести|украсть) (\d+) \[id(\d+)\|(.+)\]~~1{/reg}
Результат: перевести
___________
Сумма перевода: 
Переменная: {reg}%content%~~(перевести|украсть) (\d+) \[id(\d+)\|(.+)\]~~2{/reg}
Результат: 200
____________
ID получателя: 
Переменная: {reg}%content%~~(перевести|украсть) (\d+) \[id(\d+)\|(.+)\]~~3{/reg}
Результат: 26187274
____________

Случайный текст

{rand}текст 1|текст 2|текст 3|текст 4{/rand} - динамическая переменная rand позволяет выбрать случайным образом один из вариантов текста и отправить его подписчику. Варианты текста разделяются знаком |. При этом использование этого знака внутри тегов {rand}___{/rand} не как разделителя недопустимо. Просто сервис все равно сделает его разделителем.

Количество символов и строк в вариантах при этом не имеет значения.

Имейте в виду что выбор ответа на 100% случайный. То есть, например, при повторении вопроса, ответы не запоминаются. И один и тот же ответ может повториться случайное количество раз.

Случайное число в диапазоне

{rand_range}1-5{/rand_range} — возвращает случайное натуральное (целое) число выбранное в указанном диапазоне от меньшего к большему. Диапазон указывается через знак -. Обе границы диапазона вводить обязательно, иначе сервис вернет первое число (или 0 или 1, если переданы не числа).

Если после | передать второй параметр (в виде списка чисел через запятую без пробелов), то эти числа будут исключены из возможных вариантов. Например, если написать {rand_range}1-30|2,3,5,8,13,21{/rand_range}, то числа 2,3,5 и т.п. никогда не выпадут. Или, если они в примечании, можно записать так: {rand_range}1-30|%note%{/rand_range}.

ВАЖНО! Второй параметр автоматически игнорируется, если в диапазоне больше 1000 значений. Например для 1-1000 или 30000-31000 будет работать, а вот для 1-1100 уже нет. Вы же не собираетесь, например, больше 1000 однотипных билетов создавать :-)

Также есть третий параметр — тип списка. Список может быть как через запятую так и в столбик. Чтобы в столбик, нужно передать последним параметром значение col (по умолчанию: list).

Функция {fields} для полей игрока

Данная функция позволяет передавать значение поля с помощью переменных.

Важно! Если вы напишите название поля с большой буквы, то Автопилот автоматически его преобразует в маленькие буквы.
Функция{fields}autopilot{/fields} абсолютно идентична переменной %player.autopilot%

Формат функции:

{fields}Название поля|аргумент функции|поиск по диапазону значений{/fields}

Здесь:

  • Название поля
  • Аргумент функции: (count, sum).
    count для вывода количества игроков с этим полем, sum ддя вывода суммы всех значений
  • Поиск по диапазону значений

Если вы будете искать число, то в функции добавляем 4 аргумент num
По умолчанию ищет часть значения, если нужно точное совпадение, то в функции добавляем 4 аргумент equal

Примеры будут ниже (достаем значение из поля Autopilot, но название поля можно указать переменной: %autopilot%):

Значение поля Autopilot: {fields}autopilot{/fields}
Количество человек с заданным полем: {fields}Autopilot|count{/fields}
Сумма всех значений заданного поля всех игроков: {fields}Autopilot|sum{/fields}
Сумма всех конр. значений: {fields}Autopilot|sum|Значение|equal{/fields} = 24
Количество диапазона значений (от 3 до 12): {fields}autopilot|count|3-12|num{/fields}
Количество диапазона значений (до 12): {fields}autopilot|count|-12|num{/fields}
Количество диапазона значений (от 3): {fields}autopilot|count|3-|num{/fields}

Функция {page} для удобной работы с страницами:

Функция {page} позволяет удобно работать со страницами Автопилота.

Важно! Если страница с искомым названием не будет найдена, то Автопилот ее создаст.
Синтаксис простой:

{page}Название страницы|параметр для выдачи{/page}

Ниже вам готовые примеры:

Страницы товаров:
Айди: {page}Страница товара{/page}
Доп поле (переменная) страницы: {page}Страница товара|autopilot_id{/page}
Цена: {page}Страница товара|price{/page}
Сообщение после оплаты: {page}Страница товара|message{/page} (не поддерживаются переменные страницы)
Поиск страницы по ID (обычный):  {page}Номер страницы|title|id{/page}
Поиск страницы по ID (умный): {page}Номер страницы|title{/page}
Принудительный поиск по названию: {page}Номер страницы|id|title{/page}
Страницы курсов
Списки которые имеют доступ: {page}Страница курса|list{/page}
Режим чата: {page}Страница курса|chat{/page}

Особенности поиска:

  • Обычный поиск ищет страницу по ID
  • Умный поиск сначала ищет страницу по ID, если не находит, то ищет по названию, а если не найдет, то ее создает
  • Поиск по названию ищет странцу по названию, если ее нет, то создаст

Функция {senler} для работы с переменными Senler

Важно! Для работы действия у вас обязательно должна быть настроена
Интеграция с сервисом рассылок Senler.

Чтобы отредактировать значение переменной (предварительно обработав его, например увеличив как число), необходимо сначала получить это значение.

Это можно сделать, например при помощи конструкции:
{senler}vars.autopilot{/senler}, где вместо autopilot подставьте название вашей переменной(именно так, как она называется в боте Senler). Подробнее об этом в этом разделе.
Важно! Если вы в боте называли переменную autopilot, а получаете ее значение {senler}vars.Autopilot{/senler}то получите ошибку т.к. переменной Autopilotв боте нет(с заглавной буквы). Пример работы с переменными дан ниже:

Для запроса или редактирования глобальной переменной нужно передать значение так:
{senler}autopilot|global{/senler}— где autopilot — имя переменной, а global— параметр который указывает на то, что идет запрос глобальной переменной.

Полезные переменные:

Пользовательская: {senler}vars.autopilot{/senler}

Синоним польз. перем.: {senler}autopilot|subscriber{/senler}

Глобальная: {senler}autopilot|global{/senler}

Глобальные переменные: {senler}all|global{/senler}

Переменные подписчика:{senler}all|subscriber{/senler}

Все данные подписчика:{senler}all{/senler}

Простые условные переменные-функции

Или формирование переменной в зависимости от условия. Годятся для простых проверок. Очень удобно вставить их в сообщение или комментарий, чтобы написать вариативный текст. При этом не надо создавать отдельный блок переменной в команде, что сокращает размер сложных команд (чисто визуально). Для более сложных проверок есть отдельный блок "Временная условная переменная" с мощными возможностями.

Синтаксис: {if}числовое условие|Текст_если_больше_0|Текст_если_0_или_меньше{/if}

Эта функция имеет три аргумента:

1) Проверяемое условие. Должно быть числовой переменной.
2) Выводимый текст, если в условии — число > 0.
3) Выводимый текст, если в условии — число = 0 или меньше.

Позже в условие могут быть добавлены операторы сравнения.

Простой пример
{if}%success%| ✅ Ура, получилось!| Увы, не получилось 😟 {/if}

Вывод игроку сообщения о прогрессе в марафоне с заданиями
Для фиксации выполнения каждого задания используется отдельный список — здесь это 12345 и 12346. Раньше для каждой такой строчки приходилось добавлять отдельный блок «Временная условная переменная».
{if}{level}12345{/level}|❌ Задание 1 выполнено|❌ Задание 1 не выполнено{/if} {if}{level}12346{/level}|❌ Задание 2 выполнено|❌ Задание 2 не выполнено{/if}

Вывод фраз при определённых условиях
Говорим о скидке только партнёрам, для которых переменная %is_partner% > 0, и не выводим всем остальным:
{if}%is_partner%|Спасибо, что поддержали пост. Вы получаете скидку 500 рублей.|{/if}

Говорим о пробном доступе только людям, для которых переменная %access_open% > 0, и не выводим «обычным людям»:
{if}%access_open%|Вы получаете пробный доступ в группу. Для этого перейдите по ссылке: https://vk.com/skyautome|{/if}

Кодирование/декодирование ссылки

Функция предназначена для кодирования/ декодирования строк, поскольку в GET-запросах не поддерживается кириллица и пробелы. Имеет следующий формат:

{url}функция|аргумент{/url}  

где первым параметром следует указать encode— для кодирования строки, либо decode — для декодирования строки. Вторым параметром указывается текст который будет преобразован.

Простой пример:
Если мы отправим, например, ссылку skyjoom.com/blog?article=58&title=Формирование Запросато VK «отрежет» часть ссылки в запросе и ссылка поломается, но чтобы этого не произошло, воспользуемся функцией {url}encode|Формирование Запроса{/url}

Полная ссылка может выглядеть так: skyjoom.com/blog?article=58&title={url}encode|Формирование Запроса{/url} и после применения {url} ссылка точно не поломается и будет функционировать корректно. Для декодирования строк укажите первым параметром {decode}

Кодирование строк и хеш

Для получения md5 хеша строки используйте выражение:

{hash}md5|%string%{/hash}

где, %string% — ваша собственная временная переменная, содержащая строку, хеш которой нужно получить. Например, это может быть полезно для интеграци Робокассой.

Для получения sha1 хеша строки используйте выражение:

{hash}sha1|%string%{/hash}

Для кодирования в формат MIME base64 есть такая функция:

{encode}%string%{/encode}

А для декодирования:

{decode}%string%{/decode}

где, %string% — всё еще ваша временная переменная.

Период времени

{period}000{/period} — человекопонятный период времени

Иногда необходимо вывести пописчику человекопонятный период времени. Сколько прошло времени или сколько осталось ждать. Для этого сначала найдите разницу в секундах разных дат UNIX формате:

Простой пример:
{math}1562343191-1561997591{/math}

Полный пример ↓
сколько прошло секунд с момента записи времени в переменную %old_date% до сейчас:
{math}{date}%s{/date}-%old_date%{/math}

А потом используйте эту разницу непосредственно в данной переменной. Например: {period}18300{/period} — вернет: 5 часов 5 мин.

Полный пример с той же временной переменной %old_date%:
{period}{math}{date}%s{/date}-%old_date%{/math}{/period}

Еще пример: Период для Золушки (сколько часов осталось до полуночи)

До полуночи осталось: {period}{math}{date}%s||23:59:59{/date}-{date}%s{/date}{/math}{/period}

ВАЖНО! Переменная сложная (для программы), поэтому не рекомендую использовать ее часто или на высоконагруженных командах.

Данные акаунта

Это используется редко, поэтому покажу сразу на примерах:

Баланс: {account}balance{/account} руб.  
Дата и время истечения тарифа: {account}expire{/account}
Потрачено миль за месяц: {account}miles{/account}
ID парнера, который привел владельца аккаунта в Автопилот: {account}partner{/account}

Вызов простых методов ВК

Краткий синтаксис:
{vk}функция|массив ID через запятую|аргументы|разделитель|падеж имени{/vk}

  • Функция —тут всё понятно. что делать
  • Основной аргумент. Если первый аргумент cc — то здесь ссылка. Если другой аргумент — то здесь массив идентификаторов (или screen_name) через запятую без пробелов.
  • Дополнительные аргументы.
  • Разделитель. Используется в функции обработки строк по шаблону. По умолчанию — перенос строки.
  • Падеж имени и фамилии (если функция предполагает получение имени игрока). Варианты расписаны тут: https://dev.vk.com/ru/method/users.get

1) Сокращение ссылки через vk.cc.

Просто скопируйте один из примеров и вставьте ссылку на место второго параметра (после |, выделено жирным).

{vk}cc|https://skyjoom.com/blog{/vk}, {vk}cc|%link%{/vk}

2) Получение данных профиля виде JSON-массиве

Достать данные троих первых игроков из рейтинга № 56:
{vk}users|{users}56|3{/users}|site,screen_name{/vk}

Параметр 3 — список доп. полей (fields) из этого метода: vk.com/dev/users.get
Параметр 4 — игрорируется.
Параметр 5 — варианты падежа имени и фамили. Значения берутся оттуда же.

3) Массово обработать всех пользователей по шаблону строки (до 100 человек)

{vk}string|usatnyan,408053834|У @id%id (%first_name) в профиле статус: %status|<br><br>|gen{/vk}

В строке поддерживаются переменные в виде %название_поля, которые будут автоматически заменены на соотвествующие значения полей ВК.

4) Еще пример: Массово получить имена в другом падеже:

Подарок для {vk}string|usatnyan,gurovausi|%first_name| и |gen{/vk}

5) Получить данные сообщества (или нескольких сразу):

{vk}clubs|%club_id%|market,description,status,site,contacts{/vk}

Если резуьтат работы такой переменной записывать в функции, то в следующем действии можно сделать например так:

Данные сообщества: 
Название: %response.0.name%
Ссылка: vk.com/%response.0.screen_name%
Закрытое: %response.0.is_closed%
Статус: %response.0.status%
Обращаться к {vk}string|%response.0.contacts.0.user_id% |%first_name||dat{/vk}

Естественно, последующие действия могут перезаписать переменную %response%. Поэтому там уже нужно будет пользоваться функцией json, если будет необходимость достать еще какие-то данные.

6) Получить имя, фамилию из ВКонтакте

{vk}string|%vk_id%|%first_name|nom{/vk}
{vk}string|%vk_id%|%last_name|nom{/vk}

7) Проверка закрытый ли профиль (если 1 - закрыт)

Проверка закрытый ли профиль.
{vk}string|%vk_id%|%is_closed|nom{/vk}

Порядок обработки переменных

Сначала обрабатываются все статические переменные. Это те которые с подобным синтаксисом: %some_var%. Здесь переменные профилей подписчиков, GET/ POST — параметры, метки, %payment_link%, некоторые системные переменные и т. п.

Дальше сверху вниз (выше = раньше) будут идти группы динамических переменных (те, что с параметрами). ВАЖНО! Переменные ОДНОЙ ГРУППЫ НЕЛЬЗЯ смешивать (вкладывать друг в друга). Например, запись:
{gender}{num} пол 1{/num}{/gender} вернет ошибку или просто не сработает.

  • get_var, exec, gc, senler, account;
  • gender, num, mention, reg;
  • date, rand, rand_range;
  • list_level, level, list_count, command_count, users, members, ref;
  • get;
  • array,text, json;
  • math;
  • case,period;
  • payment_link, vk;
  • if, encode, decode, url;
  • {{https://skyjoom.com}} — это сокращение ссылки.
Вернуться на главную страницу инструкций
38819 views·856 shares