Как реагировать на комментарии только в постах с нужным хэштегом

Видеодемонстрация настройки

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

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

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

Команда 1 - Запоминаем посты

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

Событие:

1) Для реакции на создание поста добавляем событие «Создан пост» с текстом содержащим ничего, для реакции на создание любого поста.

2) Для того, чтобы реагировать только на опубликованные посты, а не все, которые вам предлагают подписчики добавляем условие:
переменная %post_type% совпадает с post

Пример события и условия
Пример события и условия

Действие:

1) Для того, чтобы Автопилот «запомнил» ID поста (он меняется при публикации) его необходимо записать в ресурс действием «Создать / изменить ресурс» с названием Посты Автопилота и в содержимое добавить элементы массива, т.е. переменную %object_id%, которая будет содержать в себе ID вышедшего поста.

Как реагировать на комментарии только в постах с нужным хэштегом, image #2

Расшифровка команды: Если пользователь создал пост с любым текстом (хоть тегом #автопилот), то будет изменен (или создан) ресурс с названием «Посты Автопилота» (название конечно же может быть любое) в содержимое которого будет записан ID созданного поста (переменная %object_id%) как дополнительный элемент массива. Напоминаю, что «массив» — это список ID через запятую.

Другими словами: мы создаем список через запятую (массив) постов с определенными хэштегами. Для возможности в дальнейшем проверять номера (ID) этих постов. Делается это по той причине, что ВК уведомлении о новом комментарии не присылает текст поста. Только в уведомлении о новом посте.

Команда 2 - Реагируем на коммент

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

Событие:

1) Для реакции на комментарий пользователя добавляем событие «Написал комментарий» под постом (убираем ID поста) с текстом содержащим ничего. Это все делается специально, для того, чтобы Автопилот реагировал на комментарий под любым постом.

Пример события
Пример события

Условия:

2) Условие Числовая переменная равна. Здесь переменная непростая, поэтому на нем остановимся поподробнее. Во-первых, из статьи про переменные понятно что ID поста, к которому написан комментарий содержится в переменной %id_1%.

Наша задача понять находится ли этот ID в содержимом ресурса, созданного ранее. У нас это ресурс с названием «Посты Автопилота».

Специальной функцией получаем содержимое этого ресурса:
{get}Посты Автопилота|name|body{/get}. Расшифровка: найти ресурс (get) с названием (name) равным «Посты Автопилота» и получить его содержимое (body).

Но это еще не все. Надеюсь, вы еще помните, что содержимое там в виде массива. Поэтому для обработки массива воспользуемся другой динамической переменной — {array}.

В примерах находим возможность получить номер элемента массива по значению этого элемента: {array}%array%|Элемент массива|num{/array}. А также то, что итоговое значение номера «0» — это то же самое, что «номер не найден»

Вместо Элемент массива вставим ID поста — %id_1%. Вместо %array% вставим массив айдишек постов. А это, как помните, переменная:
{get}Посты Автопилота|name|body{/get}.

В итоге получится:

{array}{get}Посты Автопилота|name|body{/get}|%id_1%|num{/array}

Именно это я и вставил в условие числовая переменная. Оно должно быть больше 0, т.е. ID поста есть в ресурсе.

На этапе тестирования, рекомендую добавить «реакцию на невыполнение» в условие. Которая будет срабатывать если условие не выполнилось. И писать вам об этом в личку от имени вашего сообщества. Рекомендую также туда прописать переменную. Чтобы сразу понимать ее значение. А лучше как-то так

Номер поста: %id_1%
Содержимое ресурса: {get}Посты Автопилота|name|body{/get}
Номер элемента массива: {array}{get}Посты Автопилота|name|body{/get}|%id_1%|num{/array}
Условие для реакции только на разрешенные посты. Реакция на невыполнение только в момент тестирования
Условие для реакции только на разрешенные посты. Реакция на невыполнение только в момент тестирования

3) Для реакции на комментарий только один раз необходимо добавить условие
переменная {json}%player.post%|%id_1%{/json} содержит not found

Поясню: здесь с помощью функции {json} мы проверяем, что поле игрока %player.post% не содержит %id_1%, т.е. игрок еще не писал комментарий под нужным постом. Как работать с функцией {json} можно смотреть тут

Условие которое блокирует выполнение команды
Условие которое блокирует выполнение команды

Опционально: Если необходимо реагировать на изменение комментария дублируем секцию, нажав на Еще → Дублировать секцию.
Открепляем событие «Написал комментарий» добавляем событие «Исправил комментарий»

Открепляем условие (или заменяем копией) и создаем условие:
числовая переменная {json}%player.post%|%id_1%{/json}равна 1
Т.е. мы будем позволять исправлять комментарий один раз, если надо больше, то просто измените значение.

Пример условия
Пример условия
Условие для редактирования комментария один раз
Условие для редактирования комментария один раз

Действия:

Важно! ОБЯЗАТЕЛЬНО ПРОЧТИТЕ ИНСТРУКЦИЮ ПРО НАПИСАНИЕ КОММЕНТАРИЕВ! ИНАЧЕ ДЕЙСТВИЕ РАБОТАТЬ НЕ БУДЕТ!!!

1) Дальнейшие действия могут быть любыми. Дальше осталось добавить действие. Им может быть например действие Написать комментарий. Которое сразу в комментариях ответит человеку на его слова.

В действии ID поста оставьте в значении %post_id%. В «Еще → Больше опций блока» впишите переменную %object_id% в поле «Ответить на комментарий».

Текст может быть любым. У нас для примера:

Ура, %first_name%, все работает.
Пример настройки действия
Пример настройки действия

2) Чтобы не позволить пользователю написать еще раз комментарий, поле профиля игрока post.%id_1%увеличиваем на 1
Как работать с полями игрока прочитайте пожалуйста в этой инструкции.

Пример действия
Пример действия

Думаем о будущем

Тонкость этой схемы в том, что содержимое ресурса умещает только 64000 символов. Поэтому если у вас очень много таких постов, все могут не влезть в какой-то момент. Поэтому спустя несколько сотен постов, стоит сменить название ресурса в командах на новое. Например «Посты Автопилота 2».

Думаем о нюансах

Особенности редактирования поста

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

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

Но выход конечно же есть. К тому же элементарный. В таком случае админу достаточно прописать айди нового поста в ресурс в конец после запятой. Да, просто руками. Если не знали, в ссылке на пост ID поста — это последнее число. Например, в ссылке: vk.com/wall-41103148_4556 ID поста 4556.

Тестировать обязательно!

Обязательно делаем несколько постов которые должны сработать (2-3 минимум), а также несколько, которые не должны (хотя бы 1).

Пример работы настройки
Пример работы настройки

Комменты успешно сработали. Проверим что у нас с ресурсом:

Как реагировать на комментарии только в постах с нужным хэштегом, image #11

Все отлично. В ресурсе несколько айдишек постов через запятую.

Статью при поддержке Олександра написал Андрей Горячих

Если у вас остались вопросы, можете писать в комментариях к этому посту. Или поставить там 💙 лайк, если все супер.

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