Универсальная команда на лайк / дизлайк поста
Сегодня мы научимся делать механику, которая позволяет ставить лайк только один раз под всеми постами и реагировать на дизлайк (снятие лайка)
Вы можете возразить: «Что там сложного? Событие «поставил лайк» с типом пост и указать идентификатор поста»

Да, а если у вас 10, 15 постов. Конечно, можно скопировать команду, заменив идентификаторы постов, добавить условие «Выполнена команда» 0
ровно 0
раз, но это не наш метод.

Для начала в разделе «Списки игроков для VK» делаем список для начисления баллов. В примере список с типом рейтинг и номером: 1604839
Важно! Номер события у вас будет другой, также вы можете сделать список этим событием в выключенной команде.

Команда «Начисление баллов за лайк поста»
Важно! В примере мы будем реагировать на лайки с типом пост
, но помните, что использование этого события может нарушать правила ВКонтакте для ботов. В частности обратите внимание на п. 3!
Используя это событие вы берете всю ответственность за возможную блокировку своего сообщество на себя.
Событие:
1) Для реакции на лайк поста используем событие «Поставил лайк» с типом пост
и любым идентификатором для реакции на лайк любого поста.

2) Для реакции только на те посты, на которые еще не было лайка, добавляем условие функция {json}%player.post_likes%|%object_id%{/json}
содержит not found

т.е. в поле игрока post_likes
(название может быть любым удобным вам), нет свойства с идентификатором поста %object_id%
Важно! На этапе тестирования вы можете в реакции на невыполнение можно выводить текст (для этого пользователь должен разрешить диалог с вашим сообществом, согласно Азбуке рассылок ВК)
Действия:
1) Для того, чтобы записать в поле игрока идентификатор поста под которым поставлен лайк, добавляем действие «Изменить поле профиля игрока» с названием post_likes.%object_id%
и значением равным 1

2) Для начисления баллов добавим действие: «Добавлен в список» 1604839
и уровень увеличен на 1
т.е. за лайк поста мы будем давать один балл.

3) Для сохранения количества баллов запишем их во временную переменную %ball%
= {level}1604839{/level}

4) Опционально действием: «Отправить сообщение» отправляем данные игроку:
%first_name%, у вас %ball% {case} %ball%|балл|балла|баллов{/case}

Здесь в зависимости от переменной %ball%
выводит игроку текст с количеством баллов Подробности про функцию {case} есть в документации.
Команда «Дизлайк поста»
Важно! В примере ниже показано 2 варианта. Жесткий — за убирание лайка списываются все баллы, и мягкий — просто вычитаем необходимоек колличество баллов. Какой вариант использовать решайте сами.
1) Для реакции на отмену лайка поста используем событие «Поставил лайк» с переключателем «Отменил лайк»
типом пост
и любым идентификатором для реакции на отмену лайка любого поста.

2) Для реакции только на те посты, на которые был лайк, добавляем условие функция {json}%player.post_likes%|%object_id%{/json}
содержит not found
и нажимаем «Если не», то есть, в поле игрока post_likes
(название может быть любым удобным вам), есть свойство с идентификатором поста %object_id%

Действия:
1) Для того, чтобы записать в поле игрока идентификатор поста под которым снят лайк, добавляем действие «Изменить поле профиля игрока» с названием post_likes.%object_id%
и значением равным 1

2) Опционально: для полного обнуления баллов добавим действие «Отменить событие / Команду (Удалить из списка)» со списком1604839
т.е. за отмену лайка списываем все баллы.

3) Для уменьшения баллов добавим действие: «Добавлен в список» 1604839
и уровень уменьшен на 1
т.е. за снятия лайка поста мы будем снимать один балл.

Следующие два блока с записью количества баллов в переменную и вывод пользователю вы можете скопировать из предыдущей команды по номеру действия, либо вообще их не использовать.
4) Для сохранения количества баллов запишем их во временную переменную %ball%
= {level}1604839{/level}

5) Опционально действием: «Отправить сообщение» отправляем данные игроку:
%first_name%, у вас %ball% {case} %ball%|балл|балла|баллов{/case}

Здесь в зависимости от переменной %ball%
выводит игроку текст с количеством баллов Подробности про функцию {case} есть в документации.
Тестируем.




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