@Shakirchinskiy

Vk бот api. Метод message.send. Почему бот отправляет много сообщений вместо одного?

Есть бот вконтакте, который должен отправлять сообщения пользователям. Бот их отправляет беспрерывно, доходит до 200 сообщений, даже с условием того что после функции отправки, серверу отдается "ok" . Прилагаю код:
$user_info = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$user_id}&access_token={$token}&v=5.107"));

// Извлекаем из ответа его имя
$user_name = $user_info->response[0]->first_name;

// Отправляемое сообщение
$message = 'Здравствуйте, ' . $user_name . '! Вы запросили привязку данного аккаунта к аккунту на ресурсе SUDRUS. Ваш код подтверждения ' . $code . '. Введите его на сайте, чтобы подтвердить этот метод отправки уведомлений.';

function send($id, $msg, $token, $version){
    $url = 'https://api.vk.com/method/messages.send';
    $params = array(
        'user_id' => $id,
        'message' => $msg,
        'access_token' => $token,
        'v' => $version,
        'random_id' => '0'
    );
    
    $result = file_get_contents($url, false, stream_context_create(array(
        'http' => array(
            'method' => 'POST',
            'header' => 'Content-type: application/x-www-form-urlencoded',
            'content' => http_build_query($params)
        )
    )));
}

send($user_id, $message, $token, $api_version);
         echo 'OK';
  • Вопрос задан
  • 1277 просмотров
Решения вопроса 2
random_id не должен быть 0, это просто рандомное число, которое Вы генерируете сами
Ответ написан
@nightcryst4l
Junior fullstack
Random_id должен быть привязан к ID сообщения, которое вы получили, так как в противном случае при каждом исполнении сценария будет сгенерировано новое число, не совпадающее с первидущим.
Рекомендую сделать что-то вроде random_id=message_id
Выражение можно усложнить, если бот отвечает более, чем одним сообщением.
Message_id можно получить из объекта сообщения, так-же как и ID пользователя.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы