BlackEvilDragon
@BlackEvilDragon
Учусь учиться

Почему не коректно отправляет сообщения (messages.send)?

Вообщем, у меня есть БД, с вопросами и ответами, если мне кто-то написал сообщение в ВК, то я считываю это сообщение, проверяю совпадает ли оно с каким-либо из вопросов и собственно если да, то подставляю под него ответ из своей БД и отправляю..
Все вроде работает, но иногда бывает, что может отправить просто рандомное сообщение рандомному чуваку из тех кто мне писал, не зависимо есть ли прочитанные сообщения и писал ли мне кто-то, никак не могу понять почему так?
Вот код:
<?php

require_once "vk.api.php";
    
define('token', 'e495f5565168873062688ff988a83e5e39a45e3fb2a3ba7344cdb772545e7157a97259af8f1b3d3865932');
$vk = new VK(token);
    
$link = mysqli_connect("localhost","root","","digi") or die("Ошибка " . mysqli_error($link));
    
if (!$link) {
    echo "Ошибка: Невозможно установить соединение с MySQL." . PHP_EOL;
    echo "Код ошибки errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Текст ошибки error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}
 
echo "Соединение с MySQL установлено!" . PHP_EOL;
echo "Информация о сервере: " . mysqli_get_host_info($link) . PHP_EOL;

$messages = $vk->request('messages.get', [
    'count' => '10',
]);
file_get_contents($messages);
    
$resp = $messages['response'];
    
foreach ($resp as $message): 
            
    if (!$message['read_state']) {
        
        $vk->request('account.setOnline');
                
        $query = "SELECT input, output FROM basis";
            
        $result = mysqli_query($link, $query); 
        while ($row = mysqli_fetch_assoc($result)) { 
            if ($message['body'] == $row["input"]) {
                $reading = $vk->request('messages.markAsRead', [
                    'peer_id' => $message['uid'],
                ]);
                $typing = $vk->request('messages.setActivity', [
                    'user_id' => $message['uid'], 
                    'type' => 'typing',
                ]);
                $send = $vk->request('messages.send', [
                    'message' => $row["output"],
                     'uid' => $message['uid'],
                ]);
                file_get_contents($send); //если не писать так, сообщение попросту не отсылается
                }
            }
        }
endforeach;
  • Вопрос задан
  • 316 просмотров
Пригласить эксперта
Ответы на вопрос 1
kirill_782
@kirill_782
Днем я Маринетт
Запишите json объект в файл, как которые бот даёт ответы. Или по возможности перейдите на LongPoll. Или на 5 версию API.
Ответ написан
Ваш ответ на вопрос

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

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