Примеры настройки — Рулетка в комментариях

Предупреждение — ЧИТАТЬ ВСЕМ

Статья приведена лишь для демонстрации возможностей Автопилота и потенциальных применений в будущем.

Если у вас большое сообщество ВКонтакте (от 1000 человек) —
эта инструкция не для вас. Просто закройте её крестиком.
НЕ ПЫТАЙТЕСЬ настраивать «рулетку» у себя в комментариях.
Мы предупредили.

Ниже причины, почему это может отрицательно повлиять на ваше сообщество и продвижение в целом.

На данный момент у ВКонтакте есть ограничения (лимиты), сколько раз в секунду могут вызвать команду все пользователи. Если число вызовов превысит некую цифру (её знает только ВК) — то VK API вернёт ошибку и не будет выполнять вашу команду. Ни сейчас, ни в будущем. Кроме этого, если ВК сочтёт комменты вашего бота однотипными, то будет возвращать ошибку для всех подписчиков.

То есть люди не получат ответа на коммент. И будут писать вам в ЛС сообщества и ругать вас: «Почему раздача призов не работает???? ИСПРАВЬТЕ!!!11».

Также эта механика относится к разряду ресурсоёмких. И тут появляются ещё и ограничения со стороны Автопилота. Очень большое число событий в секунду может замедлить работу сервиса. И опять, как следствие, вы получите недовольных подписчиков. Вам оно надо?

В будущих версиях Автопилота капризы ВК будут обходиться самым гуманным для вас способом (чтобы не платить за выделенные сервера или сторонние сервисы). Следите за новостями.

Подробное видео с демонстрацией (настройка на ходу)

Советую смотреть на скорость 1,5x. Старался объяснять многие моменты по несколько раз. Более компактная инструкция со скринами находится ниже.

Условие задачи

Новички и заказчики, обратите внимание!
Вот так должна выглядеть раскладка всей автоматизации перед тем, как вы начинаете её делать в Автопилоте. Особенно это касается заказчиков, которые пишут пожелания по игре технарю. Считайте, что это пример идеального (почти) технического задания. Чем подробнее напишете — тем больше вероятность, что ваши «хотелки» будут реализованы (а не проигнорированы).

(1) Подписчик пишет слово ИГРАТЬ в комментариях к посту.

Высылаем ему ответный комментарий с картинкой с 3 окошками. В окошках находится один из призов. Разберём ситуацию с тремя призами (их количество ограничено только вашей фантазией: «скидка 10%», «скидка 15%, «скидка 20%».

(2) Те, кто получают 10-10-10, 15-15-15, 20-20-20 — выиграли. Им предлагаем написать в ЛС сообщение РЕКВИЗИТЫ и оплатить товар со скидкой. Либо продолжить игру в комментариях.

(3) Если человек выиграл приз (скидку) и пишет в ЛС слово РЕКВИЗИТЫ:

  • Мы высылаем ссылку на оплату товара, в которой учтена скидка
  • Мы блокируем возможность играть в комментариях. При попытке написать ИГРАТЬ бот напишет подписчику коммент с текстом: «Вы уже забрали ссылку на оплату со скидкой»

(4) Если человек выиграл приз (скидку) и снова пишет ИГРАТЬ:

  • Мы не даём ему заказать товар с этой скидкой по ключевому слову РЕКВИЗИТЫ в ЛС сообщества. Будет отправлена ссылка на оплату товара по полной цене (без скидки).
  • Мы не даём ему выиграть тот же приз. Только другие, если он их ещё не выигрывал.

(5) Разумно ограничить игру — например, не чаще, чем раз в 30 минут. Если между первым и вторым комментом подписчика пройдёт меньше, чем X минут, то ему будет написан ответный комментарий: «Приходите позже»

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

Подготовка

Отрисовка картинок

Вам нужно вручную нарисовать (в Photoshop или Canva) все необходимые варианты распределения призов в окошках. Примеры картинок ниже:

Пример картинки для случая «Проигрыш»
Пример картинки для случая «Проигрыш»
Пример картинки для случая «Выигрыш»
Пример картинки для случая «Выигрыш»

Число всех возможных картинок считается по формуле: число призов ^ число окошек (^ — знак возведения в степень). Например, в нашем случае (3 приза и 3 окошка) максимальное число картинок составит 3³ = 27. Список ниже:

1) 10 10 10
2) 10 10 15
3) 10 10 20
4) 10 15 10
5) 10 15 15
6) 10 15 20
7) 10 20 10
8) 10 20 15
9) 10 20 20

10) 15 10 10
11) 15 10 15
12) 15 10 20
13) 15 15 10
14) 15 15 15
15) 15 15 20
16) 15 20 10
17) 15 20 15
18) 15 20 20

19) 20 10 10
20) 20 10 15
21) 20 10 20
22) 20 15 10
23) 20 15 15
24) 20 15 20
25) 20 20 10
26) 20 20 15
27) 20 20 20

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

Загрузка картинок

Для картинок создал фотоальбом в сообществе и загрузил картинки в него (тогда будут видны всем подписчикам). Если хочется большей скрытности — есть 2 варианта:

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

2) Можно сделать альбом в основном сообществе, затем скрыть весь раздел «Фотографии» в настройках сообщества. Единственный минус: подписчики не будут видеть ни один фотоальбом (но фотографии из него будут доступны по ссылкам).

Далее копируем ссылки вида photo-XXXXX_YYYYY из строки браузера.

Картинки я решил размещать в разделе «Ресурсы». Создал по ресурсу для каждой из ситуаций: «Не выиграл», «Выиграл 10%», «Выиграл 15%», «Выиграл 20%». Ссылки на картинки вставляю в соответствующие ресурсы.

Заказчик нарисовал всего 15 картинок из 27 возможных. Так получилось, что:

  • Ресурс «Не выиграл» содержит 12 картинок — то есть это массив типа col, содержащий 12 элементов, каждый элемент — с новой строки. То есть если человек не выиграл, мы можем показать ему случайную 1 из 12 картинок.
  • Ресурсы с выигрышами — по одной картинке.

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

Примеры настройки — Рулетка в комментариях, image #3

Запоминаю номера ресурсов — пригодятся.

Расчёт вероятности

Главная задача маркетолога — сделать такую движуху в комментариях, чтобы люди не выигрывали сразу же после второго-пятого коммента. То есть у людей должен быть интерес играть ещё, ну а вы не потеряете все призы за первые минуты розыгрыша и не уйдёте в минус. (;

Поэтому важно заложить правильные вероятности выпадения «выигрышных» случаев. Рассмотрим наш пример с 3 призами и 3 окошками.

Первый случай. Что, если не настраивать вероятность специально, а сделать все картинки равновероятными. То есть будем генерировать случайное число от 1 до 27, причём такое число соответствует номеру картинки. В этом случае вероятность выигрыша хоть какого-то приза составит 3/27 (то есть 1/9 или 11,1%), а вероятность проигрыша составит 24/27 (то есть 88,9%).

Второй случай. Что, если привязать свою вероятность к каждому из вариантов. Так, самый «редкий» приз «20%» может выпадать не 1 / 27 раз (3,7%), а реже — скажем, 1%. Остальные чуть чаще.

В общем, расстановка вероятностей зависит от ваших маркетинговых целей. Экспериментируйте или обратитесь за консультацией к специалистам.

Для теста ниже я взял слишком добрую систему (которая слишком поощряет клиентов и делает беднее меня):

  • генерируем рандомное число от 1 до 1000
  • любой невыигрышный результат будет соответствовать числу от 1 до 600 (т.е. во время каждой раскрутки рулетки вероятность проиграть = 600/1000 = 60% — это очень много)
  • выигрыш 10-10-10 соответствует числу от 601 до 850 (вероятность 25%)
  • выигрыш 15-15-15 — числу от 851 до 950 (вероятность 10%)
  • выигрыш 20-20-20 — числу от 951 до 1000 (вероятность 5%)

Структура команды

Сначала я выписал в файл, что должно быть в команде, чтобы работали пункты (1) и (2). Потом начал дополнять ограничениями, чтобы учесть (3), (4) и (5).

Если команда кажется сложной — возможно, так и должно быть. Прочитайте инструкцию до конца, потом вернитесь к началу. Тогда будет понятно, откуда взялись те или иные ограничения.

Команда сделана именно так, чтобы:

  • при эксплуатации в платном Автопилоте она тратила по 1 миле на каждый комментарий (работала экономно)
  • можно было легко добавить новые картинки

Команда 1: Архив списков

Сделаем 4 списка (по научному — 4 синих события «В списке подписчиков»):

  • для тех, кто уже выиграл приз «10%» (человек будет находиться в этом списке, даже если отказался от приза, то есть продолжает крутить рулетку дальше)
  • для тех, кто уже выиграл приз «15%»
  • для тех, кто уже выиграл приз «20%»
  • для тех, кто оплатил и отказался играть дальше

Эта команда не запускается. Она должна быть выключенной.

Запоминаем или записываем номера списков.

ВНИМАНИЕ! У вас будут другие номера списков, событий и действий. Не копируйте их бездумно из скриншотов.
Примеры настройки — Рулетка в комментариях, image #4

Команда 2: Собственно розыгрыш

Событие

Обычное событие «Написал комментарий». Ссылку на пост вставляем в первое поле в самый последний момент (когда всё остальное уже настроено)

Примеры настройки — Рулетка в комментариях, image #5

Условия, разрешающие выполнять команды

(1) Запрещаем играть тем людям, которые выиграли, а потом написали в ЛС ключевик РЕКВИЗИТЫ. В следующих командах будем добавлять этих людей в список Забрал приз (у меня его номер 115985, у вас свой).

Добавляем условие «Уровень списка / количество выполнений». Мы разрешаем данную команду для розыгрыша тем, кого нет в этом списке (у них уровень списка равен 0) и запрещаем тем, кто есть в списке (у них уровень списка 1 или больше, но точно не 0).

Примеры настройки — Рулетка в комментариях, image #6

(2) Запрещаем играть тем людям, которые пишут второй комментарий чаще, чем раз в XX минут / часов. (В реальной рулетке можно поставить и больше.)

Условие «После выполнения прошло». Для теста поставил переключатель «не меньше» и 30 секунд. То есть команда запустится, если второй раз написал через 30, 31, 32… или более секунд после первого раза. А если менее 30 секунд — то подписчик получит ответный комментарий с ругачкой «Приходите позже»

Отслеживаю не выполнение события (писать могут как угодно часто), а выполнение данной команды. В первом поле прописал её номер.

Примеры настройки — Рулетка в комментариях, image #7

Определяем один из четырёх исходов (“блок вероятности”)

(1) Генерируем рандомное число от 1 до 1000 => {rand_range}1-1000{/rand_range} => записываем в переменную %rand_num%

Примеры настройки — Рулетка в комментариях, image #8

(2) В зависимости от значения %rand_num% указываем номер ресурса, откуда будем вызывать одну из картинок => записываем в условную переменную %res_num%

Значения условной переменной следующие:

  • Номер ресурса для 20% (у меня 16746), если:
    — числовая переменная %rand_num% от 951 до 1000,
    — а также подписчик не в списке Выиграл 20% (у меня 115982)
  • Номер ресурса для 15% (у меня 16745), если:
    — числовая переменная %rand_num% от 851 до 950,
    — а также подписчик не в списке Выиграл 15% (у меня 115981)
  • Номер ресурса для 10% (у меня 16744), если:
    — числовая переменная %rand_num% от 601 до 850,
    — а также подписчик не в списке Выиграл 10% (у меня 115980)
  • Номер ресурса для проигрыша (у меня 16743) — во всех остальных случаях. А это случаи:
    а) либо когда выпало число невыигрышное от 1 до 600 (нет выигрыша)
    б) либо когда выпало число выигрышное от 601 до 1000, но подписчик уже есть в списке (ранее выигрывал этот приз, но отказался от него, т.к. продолжает играть)
Примеры настройки — Рулетка в комментариях, image #9

В пакетах условий использовали условия: «Числовая переменная…» и «Уровень списка».

Начинаем проверку именно с главного приза, т.к. если человек выиграл его — то вряд ли откажется от него и продолжит играть для получения менее важных призов.

Такая структура переменной очень удобна. Прописали вероятности только в одном месте — здесь. Далее будем ссылаться только на номера ресурсов, в которых лежат картинки для выигрыша или для проигрыша.

Достаём из ресурса случайную строку — ссылку на картинку

(3) Вызываем ресурс по номеру и получаем основное поле («тело») ресурса => {get}%res_num%{/get} => записываем в переменную %res%

Примеры настройки — Рулетка в комментариях, image #10

(4) Определяем число строк в ресурсе => {array}%res%|0|count|col{/array} => записываем в переменную %res_strings%

Примеры настройки — Рулетка в комментариях, image #11

(5) Генерируем рандомное число от 1 до %res_strings% (выбираем случайным образом любую строку ресурса) => {rand_range}1-%res_strings%{/rand_range} => записываем в переменную %string_num%

Примеры настройки — Рулетка в комментариях, image #12

(6) Вызываем переменную %res% (теперь это массив строк), запрашиваем номер строки и получаем значение строки => {array}%res%|%string_num%|val|col{/array} => записываем в переменную %string_val%

Примеры настройки — Рулетка в комментариях, image #13

Формируем текст сообщения

(7) В зависимости от значения %res_num% указываем текст => записываем в условную переменную %text%

Значение переменной сформируем так:

— Текст с поздравлением — если договорились, что тащим картинку из ресурса для одного из выигрышей, то есть числовая переменная %res_num% принимает значения от Номер ресурса для 10% до Номер ресурса для 20%:

@id%subs_id% (%first_name%), вы выиграли!<br>Пишите РЕКВИЗИТЫ в ЛС, чтобы получить ссылку на оплату со скидкой.<br>Если вы отказываетесь от выигранной скидки и хотите выиграть больше -- пишите ИГРАТЬ в новом комментарии

— Текст с огорчением — во всех остальных случаях:

@id%subs_id% (%first_name%), вы не выиграли, попробуйте ещё

Примеры настройки — Рулетка в комментариях, image #14

(8) Отправляем ответный комментарий с текстом из переменной%text% и вложением из переменной %string_val%

Примеры настройки — Рулетка в комментариях, image #15

Добавляем человека в список тех, кто уже выигрывал этот приз

Сначала определим в условной переменной, в какой список будем записывать человека (в зависимости от условий).
А потом запишем в список с номером, взятым из этой переменной.

(9) В зависимости от ситуации, то есть значения ресурса %res_num% указываем номер списка победителей => записываем в условную переменную %win_list%

Примеры настройки — Рулетка в комментариях, image #16

(10) Добавляем человека в список с номером %win_list% и ставим уровень 1

Примеры настройки — Рулетка в комментариях, image #17

(11) Чтобы отладить команду (проверить, что всё работает как надо), я отправляю себе отладочное сообщение:

Примеры настройки — Рулетка в комментариях, image #18

Команда 3: Заказ товара со скидкой через ЛС ВК

Событие

1) Событие «Написал сообщение» с текстом равным реквизиты

Примеры настройки — Рулетка в комментариях, image #19

Рекомендую добавить условие:

  • уровень списка 115982 равен 0
  • уровень списка 115983 равен 0
  • уровень списка 115984 равен 0

Нажать «Если не», затем «Еще» и в реакции на невыполнение ввести текст, например:

Оплатить по полной стоимости можно тут:
{payment_link}0|0|t=Оформление слона&s=10000{/payment_link}
Вы пока не выиграли скидку. Чтобы её получить, примите участие в розыгрыше в этом посте:
Ссылка на Ваш пост с игрой.
Примеры настройки — Рулетка в комментариях, image #20

Это условие дает вариант игроку, который не участвует в розыгрыше, купить товар сразу.

Действия

1) В зависимости от уровня списка формируем цену со скидкой и записываем в условную переменную %price%

Примеры настройки — Рулетка в комментариях, image #21

2) Отправляем сообщение игроку со текстом и ссылкой. Например,

Вот ваша ссылка, спешите оформить заказ (а то в течение 24 часов ваш слон убежит)
{payment_link}+24 hour|0|t=Оформление слона&s=%price%&exps=10000{/payment_link}
Примеры настройки — Рулетка в комментариях, image #22

3) Добавляем игрока в список 115985и устанавливаем значение 1. Т.е. устанавливаем флаг, что игрок уже получил приз.

Примеры настройки — Рулетка в комментариях, image #23

4) Отправляем сообщение администратору со хештегом и ссылкой на игрока. Например,

#РУЛЕТКА_ЗАКАЗ_ТОВАРА
Кто: %vk_link%
Какой заказ: %price%
Примеры настройки — Рулетка в комментариях, image #24

Задать вопрос, оставить замечание или пожелание (или просто лайкнуть инструкцию) можно в этом посте.

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