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
→ Ссылка
- Вы смотрели ошибки в callback? Если не знаете как это делать - Паблик>Управление>Работа с API>Callback API>Запросы>Неудавшиеся
- В случае если бот начинает спамить с каким-то промежутком времени(т.е не просто как спам каждую секунду, а спустя рандомное кол-во времени), это скорее всего будет означать, что ВК попросту пытается выполнить скрипт, но в нем находится ошибка, и он будет пытаться выполнить скрипт то тех пор, пока ошибка не будет исправлена, поэтому и заходите в неудавшиеся запросы, для отслеживание этой ошибки.
Ваша ошибка заключается в том, что у вас неверно указан путь к message_new>text и message_new>peer_id, для того, чтобы смотреть полный путь, вы также заходите в "Запросы", но уже смотрите удавшиеся и кликаете по кнопке "Запрос" и там будет находится уже сам массив и уже по нему вы идете для получение нужных вам данных.
$message_text = $data->object->message->text;
$chat_id = $data->object->message->from_id;