Скрипт php для вконтакта — авто удаление спама со стены по api callback

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

Решил написать на php простенький скрипт для вконтакта:  автоматическое удаление спама (постов) со стены группы по api callback


Для работы скрипта нужно:
- создать файл рядом со скриптом log.inc
- получить ключ api callback в настройках группы ($confirmation_token)
- получить ключ профиля — администратора группы, для удаления постов ($token_2)
- настроить, пользоваться.

Получить ключ api callback от группы:

Заходим в настройки группы > Работы с API > Ключи доступа > Создать ключ

Получить access_token от своего аккаунта вконтакте не так сложно:

Вам нужно создать Standalone-приложение. С другими работать не будет.
После — переходите по ссылке
https://oauth.vk.com/authorize?client_id=ИД_ВАШЕГО_ПРИЛОЖЕНИЯ&scope=notify,friends,photos,offline,wall&redirect_uri=blank.html&display=popup&response_type=token

После этого копируете из адресной строки token (находится между access_token= и &expires_in)

Скрипт работает так: в группу посетитель пишет пост > событие о том что появился пост с его индефикатором и текстом уходит на адрес скрипта по callback api > скрипт принимает параметры и ищет в тексте запрещенные фразы, если нашел > по api вконтакту с использованием токена аккаунта администратора группы удаляем данный пост.

Сам код:

 

Сделал дополнение, которое проверяет на репост заданной записи, если нет репоста то пишется комментарий от имени группы к посту пользователя а потом через 9 секунд пост пользователя удаляется. Код тут — https://pastebin.com/KjbTd1kz

4 thoughts on “Скрипт php для вконтакта — авто удаление спама со стены по api callback

  • 08.10.2017 at 03:10
    Permalink

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

    Reply
    • 16.10.2017 at 15:14
      Permalink

      Да, добавить функцию с проверкой что человек в группе (используя api вконтакте) и если нету его то удалять.

      Reply
  • 21.11.2017 at 17:49
    Permalink

    Все сделал, залил на хостинг, пишет в логах «new message wall — 51180181, 267357, 1 — плохое, удаляем», по факту не удаляет. Пробовал токен из приложения VKAPI, токен из группы, всё равно не удаляет.
    Ещё исправь, что $confirmation_token = ’12345678′; брать из вкладки «настройки сервера», а то долго мучался с этим)

    Reply
    • 24.11.2017 at 08:46
      Permalink

      Вот этот код отвечает за удаление сообщения со стены:


      $token_2 = 'gjfbif5dc887328d4d5d12dgujr9828c5cae6378bc1265416c725d506514744f434a8e6tyhnf56c35ebda';

      $gruppa_id="-1234567";

      //С помощью messages.send и токена сообщества отправляем ответное сообщение
      $request_params = array(
      'owner_id' => $gruppa_id,
      'post_id' => $id_post,
      'access_token' => $token_2,
      'v' => '5.0'
      );

      $get_params = http_build_query($request_params);

      $ch = curl_init( 'https://api.vk.com/method/wall.delete?'. $get_params );
      curl_setopt ( $ch, CURLOPT_HEADER, false );
      curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
      curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
      //curl_setopt ( $ch, CURLOPT_POST, true );
      //curl_setopt ( $ch, CURLOPT_POSTFIELDS, $params );
      $data = curl_exec($ch);
      curl_close($ch);
      //echo $data;

      Попробуйте вручную вбить номер группы (с минусом), номер поста и расскоментировать echo $data дата и посмотреть что выдает вконтакт.
      Код удобно тестировать на сайте пхпфидле.орг

      Reply

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">