STOP-SPAM-VK -скрипт/модуль для удаления спама в группе вконтакте

Всем примет. Наверно у многих есть свои личные группы вконтакте, и вероятно все столкнулись с проблемой заспамлености стены, если она открыта для публикации.
 
У меня есть своя такая группа «БАРАХОЛКА« сами понимаете, пестрит различными товарами, а все интернет торговцы пытаются всунуть как можно чаще туда свой товар, и тем самым при 9к подписчиков, частотность спама в моей группе достигает рекордов. Исходя из этого я начал гуглить, и о боги, да есть готовый вариант. И я конечно же делюсь им с вами.

Для работы скрипта нужно:
— создать файл рядом со скриптом 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 вконтакту с использованием токена аккаунта администратора группы удаляем данный пост.

<?php
//set_time_limit(10800);
//Header(‘Content-Type: text/html; charset=utf-8′);

$cache_file_log=»log.inc»;

$today = date(«H:i:s d-m-Y»);

$log_text = «$today proverka»;
if (!isset($_REQUEST)) { 
return; 
}

//Строка для подтверждения адреса сервера из настроек Callback API 
$confirmation_token = ’12345678′;

//Получаем и декодируем уведомление 
$data = json_decode(file_get_contents(‘php://input’));

//Проверяем, что находится в поле «type» 
switch ($data->type) { 
//Если это уведомление для подтверждения адреса сервера… 
case ‘confirmation’: 
//…отправляем строку для подтверждения адреса 
echo $confirmation_token;
$log_text = «$today confirmation»;
break;

//Если это уведомление о новом сообщении на стене… 
case ‘wall_post_new’: 
//…получаем id его автора 
$user_id = $data->object->from_id;

$id_post = $data->object->id;
$text_post = $data->object->text; 
//затем с помощью users.get получаем данные об авторе 
//$user_info = json_decode(file_get_contents(«https://api.vk.com/method/users.get?user_ids={$user_id}&v=5.0″));

//и извлекаем из ответа его имя 
//$user_name = $user_info->response[0]->first_name;

//заисываем лог
$log_text = «$today new message wall — $user_id, $id_post, $text_post»;

//проверяем есть ли плохое слово в тексте и если есть то удаляем пост

$bad_word = «секс,порно,размером,безoткaзный,paзвеcти,тeлочкy,мeтод,пeнис,оргазм,нaсилуeт,постоянного партнера,имeть,развратная,чпокнул,встречусь с симпатичным,любовника,очень хочется,повиртим,трах,пенис,член,ceкc,сeкc,куни,cекc,члeн,cекс»;
$bad_word_massiv = explode(«,», $bad_word);
$bad_word_count=count($bad_word_massiv);
$text_post = mb_strtolower($text_post, ‘UTF-8′);

$nashli_plohoe_slovo = «»;
for($i=0;$i<$bad_word_count;$i++) {
if ( strstr($text_post, $bad_word_massiv[$i]) ) {$nashli_plohoe_slovo=»1″;}
}

//если длина поста меньше 6 символов
if ( strlen(utf8_decode($text_post))<6 ) {$nashli_plohoe_slovo=»1″;}

if ($nashli_plohoe_slovo==»1″) {

//echo «нашли плохое слово»;
//Ключ доступа сообщества 
$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;
$log_text = «$today new message wall — $user_id, $id_post, $text_post — плохое, удаляем»;
}

//if ( strstr($text_post, $bad_word) ) {echo «нашли плохое слово»;} else {echo «не нашли»;}

//Возвращаем «ok» серверу Callback API 
echo(‘ok’);

break; 
}

//записываем лог
$fp=fopen(«$cache_file_log»,»a»); 
fwrite($fp, «\\r\\n» . «$log_text»); 
fclose($fp);

?>

Ну вот как бы и все.
Не знаю кто автор данного скрипта, но ему огромное спасибо за реализацию.
СТОП СПАМУ  laughing

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

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