PHP, VK-BOT. Бот отправляет много сообщений в ответ

Делаю бота на php. Вот код:

public function index(){
    $confirmation_token = "de1c2ba1";
    function vk_msg_send($peer_id, $text){
        $access_token = '***';
        $request_params = array(
            'message' => $text,
            'peer_id' => $peer_id,
            'access_token' => $access_token,
            'v' => '5.87'
        );
        $get_params = http_build_query($request_params);
        file_get_contents('https://api.vk.com/method/messages.send?'. $get_params);
    }

    $data = json_decode(file_get_contents('php://input'));
    switch($data->type){
        case 'confirmation':
        echo $confirmation_token;
            break;

        case 'message_new':
            $message_text = $data->object->text;
            $chat_id = $data->object->peer_id;
            // $btn = [
            //  'message' => 'Начать',
            //  'type' => 'text',
            //  'v' => '5.89',
            //  'access_token' => 
            // ];   
            if($message_text == true){
                vk_msg_send($chat_id, 'Привет');
            }
            echo 'ok';
            break;
    }
}

}

Когда я ему пишу одно сообщение. Он начинает отправлять в ответ несколько сообщений "Привет". Наверное я что-то пропустил. Не понимаю почему такое происходит, может кто не будь подскажет в чем дело?


Ответы (1 шт):

Автор решения: markeze
  1. Вы смотрели ошибки в callback? Если не знаете как это делать - Паблик>Управление>Работа с API>Callback API>Запросы>Неудавшиеся
  2. В случае если бот начинает спамить с каким-то промежутком времени(т.е не просто как спам каждую секунду, а спустя рандомное кол-во времени), это скорее всего будет означать, что ВК попросту пытается выполнить скрипт, но в нем находится ошибка, и он будет пытаться выполнить скрипт то тех пор, пока ошибка не будет исправлена, поэтому и заходите в неудавшиеся запросы, для отслеживание этой ошибки.

Ваша ошибка заключается в том, что у вас неверно указан путь к message_new>text и message_new>peer_id, для того, чтобы смотреть полный путь, вы также заходите в "Запросы", но уже смотрите удавшиеся и кликаете по кнопке "Запрос" и там будет находится уже сам массив и уже по нему вы идете для получение нужных вам данных.

$message_text = $data->object->message->text;
$chat_id = $data->object->message->from_id;
→ Ссылка