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

B
На сайте с 11.10.2005
Offline
93
4738

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

Кто решал подобные вопросы и как с этим справляетесь?

Скрипт будет полезен, выкладывать его здесь?

nimag
На сайте с 02.02.2007
Offline
146
#1

Полезен, выкладывать!

Замучился руками чистить (знакомства)

Выгодная партнерка по мягкой мебели (5%). МСК, СПБ. https://msk.imeex.ru/partnerskaya-programma-dlya-vebmasterov/
B
На сайте с 11.10.2005
Offline
93
#2
nimag:
Полезен, выкладывать!
Замучился руками чистить (знакомства)

Хорошо, сейчас его еще допилю, за выходные проверю и в понедельник выложу + постараюсь расписать что да как чтобы он работал (ключи от ВК разные получить).

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

veleg
На сайте с 30.01.2011
Offline
142
#3
bukan:


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

Главное чтобы без таких же ошибок был.

Фигачу Телеграм-ботов ( https://teleg.run/veleg )
B
На сайте с 11.10.2005
Offline
93
#4
veleg:
Главное чтобы без таких же ошибок был.

Спасибо. Торопился.

---------- Добавлено 13.01.2017 в 14:43 ----------

Для работы скрипта нужно:

- создать файл рядом со скриптом log.inc

- получить ключ api callback в настройках группы ($confirmation_token)

- получить ключ профиля - администратора группы, для удаления постов ($token_2)

- настроить, пользоваться.

(В ближайшее время напишу статью и распишу поподробнее, как всё это настроить.)

Код:


<?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);




?>
veleg
На сайте с 30.01.2011
Offline
142
#5

Попробуй вставить в quotes, а не в php

jpg 159319.jpg
TF-Studio
На сайте с 17.08.2010
Offline
334
#6

а чем не угодило использование встроенного фильтра стоп-слов?

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
B
На сайте с 11.10.2005
Offline
93
#7
TF-Studio:
а чем не угодило использование встроенного фильтра стоп-слов?

Он работает только на комментарии а на посты не реагирует.

B
На сайте с 11.10.2005
Offline
93
#8

Дополнил текстовкой и описаловом, первый пост подправить не могу (((

Полная инструкция тут - http://www.bubasik.com/skript-php-dlya-vkontakta-avto-udalenie-spama-so-steny-po-api-callback/

Дополнил:

Получить ключ 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 вконтакту с использованием токена аккаунта администратора группы удаляем данный пост.

У кого заработал? Может кто начал использовать для других посетителей форума расскажет как его расширил и использует.

B
На сайте с 11.10.2005
Offline
93
#9

Дополнил функционалом:

Сообщение со стены самоудаляется если пользователь не сделал репост определенной записи.

Работает так:

- Пользователь пишет пост в группу

- Скрипт ищет на его стене ключевые фразы (текст репоста)

- Если не находит, то появляется комментарий к его записи от имени группы что необходимо сделать репост и через 9 секунд запись удалиться

- Через 9 секунд запись удаляется.

Таким способом отсеиваются почти все спаммеры + дополнительная реклама группы.

За такое группу не заблочат?

Если кому надо, выложу код.

A
На сайте с 16.05.2017
Offline
0
#10

bukan, куда вам можно отписать, чтобы пообщаться в пм?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий