@black_error

Не работает скрипт удаления записей с группы, что я делаю не так?

Доброго времени суток!
Подскажите, пожалуйста, где косяки в коде?
Суть: Скрипт должен чекать новые посты в сообществе и удалять те, где есть "запрещенные слова", которые мы сами прописали в коде. Некий антиспам.

В логе пишет, что пост удален, а по факту - нет.

<?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.50"));

//и извлекаем из ответа его имя
//$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);
?>
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ответы на вопрос 1
@vanya_vahrushev
Получить access_token от своего аккаунта вконтакте не так сложно:

Вам нужно создать Standalone-приложение. С другими работать не будет.
После — переходите по ссылке
https://oauth.vk.com/authorize?client_id=ИД_ВАШЕГО...

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

($token_2 тут его указать) .
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы