Поиск по хештегу. Или как отследить удаленный репост

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

Всем привет! Как же отследить, а не удалил ли пользователь репост?

Просто делаем команду на отслеживание поста. Через запрос к API VK.
В данном случае будем отслеживать пост с тегом #автопилот на стене пользователя с ID 542391276.

Теория. Запрос к произвольному методу VK — wall.search

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

Запрос имеет вид:

https://api.vk.com/method/wall.search
?owner_id=ID_пользователя
&query=#Автопилот
&count=100
&v=5.131
&access_token=Ваш_сервисный ключ_доступа
Важно! Метод wall.get имеет свои ограничения — 5000 вызовов в сутки. Будьте внимательны.
Важно! Метод wall.search имеет свои ограничения — 1000 вызовов в сутки. Будьте внимательны.Также имейте в виду, что иногда эти методы могут вести себя некорректно, и, например, не сразу увидеть удаленный репост. В видео показан данный метод.

где:

  • owner_id ID пользователя. (в текущем примере 542391276).
  • count — количество проверяемых записей (макс.100)
  • query — принимает в себе текст для поиска. Например, #Автопилот
  • v — используемая версия VK API
  • access_token — ваш сервисный ключ доступа

Получение сервисного ключа доступа

Сразу к делу! Идем по адресу https://vk.com/apps?act=manage

Добавьте описание
Добавьте описание

и нажимаем «Создать приложение».

Добавьте описание
Добавьте описание

Выбираем «Standalone-приложение», жмем «Подключить»

Далее, переходим в настройки слева.
Нам нужен сервисный ключ доступа.

Поиск по хештегу. Или как отследить удаленный репост, image #3

Права доступа особо ни на что не влияют (для этой настройки). Можете ставить можете не ставить.

Копируем и сохраняем себе сервисный ключ, например:

8fdeca958fdeca958fdeca95c68fb48fb188fde8fdeca95d31b2dcaf00ec763eba9015d 

Сохраняем изменения.

Тестовая команда

Чтобы проверить, что вы получили верный сервисный токен, сначала создадим тестовую команду, а затем её модифицируем для автоматической проверки.

Идем в Автопилот и делаем команду: когда админ пишет в сообщество сообщение есть репост @son_of_sky, то выполняется проверка для того участника, который указан в сообщении.

События:

1) Написал сообщение с текстом содержащим фразу есть репост

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

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

Числовая переменная %mention% больше 0.

Числовая переменная {mention}%content%{/mention} больше 0.

— Переменная %content% подходит под регулярное выражение
\[id\d+\|.+\]|vk\.com\/.+

Раньше для проверки использовались регулярные выражения, их можно увидеть в старых инструкциях. В курсе «Лётная школа» Олександр рекомендует использовать первый или второй варианты. Потому что они простые в использовании и уменьшают количество ошибок. А также поддерживают как классическое упоминание игрока, так и ссылку на его профиль ВКонтакте.

Узнать подробнее о переменной «Упоминание» можно в этом разделе.

В «реакции на невыполнение» условия стоит вставить текст — ругачку:

Вы забыли упомянуть подписчика. Пример: есть репост http:/vk.com/usatnyan

Этот текст придёт админу, если он напишет ключевик, но не укажет человека.

Если такое условие уже есть, находим его через кнопочку «Найти в каталоге»

Пример секции условий.
Пример секции условий.

3) Добавляем условие: «Сотрудник аккаунта», чтобы команду мог запустить только тот сотрудник сообщества, которому мы разрешаем проверять репосты, и не мог запустить случайный человек (если угадает ключевик).

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

4) Через кнопку «Добавить секцию» добавляем событие: «Добавлен в список игроков» для запуска периодической проверки при репосте. Пока достаточно сделать событие и записать его номер. В примере: 1342035

Событие для периодический проверки
Событие для периодический проверки

Важно! Разгрузите ваш Автопилот

Если какой-то блок у вас уже есть, то просто находим нужный блок, нажав на кнопку «Найти в каталоге», либо копируем номер из нужной команды и вставляем в поле ввода.

Действия:

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

  • {array}%content%|2|val|col{/array}
    если числ. переменная {array}%content%|0|count|col{/array} больше 1
  • ИЛИ: #Автопилот
Поиск по хештегу. Или как отследить удаленный репост, image #8

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

есть репост @son_of_sky
есть репост *son_of_sky
есть репост vk.com/son_of_sky

Чтобы команда выполнялась для указанного человека, добавляем действие «Сменить исполнителя». В поле указываем переменную %mention% или {mention}%content%{/mention} — любой из этих вариантов вытащит ID указанного игрока.

Поиск по хештегу. Или как отследить удаленный репост, image #9

3) Отправляем GET/POST запрос на адрес https://api.vk.com/method/wall.search

Поиск по хештегу. Или как отследить удаленный репост, image #10

рассмотрим параметры запроса:

  • owner_id= %vk_id%
  • query = %text%
  • count= 100
  • v= 5.131
  • access_token= Ваш_сервисный_ключ_доступа

Если у пользователя будет найден репост с ключевиком %text%, то мы получим примерно такой ответ:

{"response":{"count":111,"items":[{"id":1970,"from_id":408053834,"owner_id":408053834,"date":1643406060,"post_type":"post","text":"#Автопилот и далее текст

Это JSON-объект с постами, в примере, их 111 штук с данным хештегом. Как работать с JSON можно посмотреть здесь.

4) Оставим для вашего удобства пример добавим переменную %count% со значением:

%response.response.count%
Поиск по хештегу. Или как отследить удаленный репост, image #11

Если переменная %count%больше 0, то репост на месте, иначе его удалили.

Важно! Как написано выше иногда методы могут не срабатывать, и не видеть удаленные посты, имейте это ввиду.

5) Действием: «Сменить исполнителя» меняем исполнителя на %orig_subs_id% на того кто запустил команду, для корректности.

Поиск по хештегу. Или как отследить удаленный репост, image #12

6) Посылаем текст сотрудникам действием: «Отправить сообщение»:

#проверка_репоста
Клиент: %vk_link%
{if}%count%|Пост с %text% в наличии. Количество: %count%|Пост с %text% вероятно удален.{/if}
Поиск по хештегу. Или как отследить удаленный репост, image #13

Собственно, все! Тестируем.

Как выглядит репост:

Поиск по хештегу. Или как отследить удаленный репост, image #14

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

Поиск по хештегу. Или как отследить удаленный репост, image #15

Удаляем репост и проверяем еще раз.

Поиск по хештегу. Или как отследить удаленный репост, image #16

Команда с проверкой репоста через определённое время

Можно проверять, что репост висит через какое-то время после публикации.
Для этого нужно использовать действие: «Запустить таймер»

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

Событие:

Важно! Событие работает только с открытыми профилями ВК. Если профиль закрыт, то ВК не получает данных о стене пользователя. Будьте внимательны.

1) Событие: «Сделал репост» с ID нужного поста. Если нужно реагировать на любой репост, то оставляем там 0

Событие для проверки репостов
Событие для проверки репостов

Действия:

1) Если у вас какой-то конкретный пост, то рекомендуется при репосте отменять таймер одноименным действием. Это сделано специально, чтобы если пользователь сделал несколько репостов, проверка запустилась 1 раз, иначе без отмены таймера у пользователя будет несколько проверок.

Отменяем таймер
Отменяем таймер

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

Запускаем таймер через час
Запускаем таймер через час

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

Запуск проверки репоста
Запуск проверки репоста

Авторы статьи Андрей Горячих и Никита Кузнецов.

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

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