Вк бот как сделать php

В этой статье мы рассмотрим, как использовать PHP для создания бота Вконтакте с примером кода. Вы научитесь подключать бота к Вконтакте, отправлять и получать сообщения от пользователей.

Создание бота на PHP для платформы ВКонтакте очень простое. Для этого нам понадобится только пара функций встроенного модуля для работы с API ВКонтакте. В первую очередь, создайте приложение для ВКонтакте и получите ключ доступа. Далее нам понадобятся следующие несколько функций:

Функция авторизации

Эта функция используется для авторизации пользователя и получения access_token для доступа к API ВКонтакте. Для этого нам понадобится вызвать функцию vk_auth() с параметрами приложения:


function vk_auth($app_id, $app_secret, $auth_url) {
  // Запрос авторизации пользователя
  $request_params = array(
    'client_id' => $app_id,
    'redirect_uri' => $auth_url,
    'response_type' => 'code'
  );
  // Формируем ссылку для авторизации
  $auth_link = 'https://oauth.vk.com/authorize?' . http_build_query($request_params);
  // Редиректим пользователя на страницу авторизации
  header("Location: $auth_link");
}

Так же нам понадобится функция для получения access_token. Она принимает параметры приложения, а так же параметр code, который передается при авторизации пользователя:


function vk_get_token($app_id, $app_secret, $auth_code) {
  // Формируем запрос на получение access_token
  $params = array(
    'client_id' => $app_id,
    'client_secret' => $app_secret,
    'code' => $auth_code,
    'redirect_uri' => ''
  );
  // Отправляем запрос
  $token = json_decode(file_get_contents('https://oauth.vk.com/access_token?' . http_build_query($params)), true);
  return $token;
}

Теперь мы можем получать доступ к API ВКонтакте и начать создавать бота. Для начала нам понадобится функция, которая будет отвечать на полученные сообщения и отправлять ответные сообщения. Для этого нам понадобится вызвать функцию vk_send_message() с необходимыми параметрами:


function vk_send_message($access_token, $message, $user_id) {
  // Формируем параметры для запроса
  $params = array(
    'access_token' => $access_token,
    'message' => $message,
    'user_id' => $user_id
  );
  // Отправляем запрос на отправку сообщения
  file_get_contents('https://api.vk.com/method/messages.send?' . http_build_query($params));
}

Теперь нам нужно написать основную функцию, которая будет принимать входящие сообщения и отправлять ответы. Для этого нам нужно вызвать функцию vk_get_updates() с необходимыми параметрами:


function vk_get_updates($access_token, $offset = 0) {
  // Формируем параметры для запроса
  $params = array(
    'access_token' => $access_token,
    'offset' => $offset
  );
  // Отправляем запрос на получение обновлений
  $updates = json_decode(file_get_contents('https://api.vk.com/method/messages.getUpdates?' . http_build_query($params)), true);
  return $updates;
}

Теперь мы можем писать основную функцию бота, которая будет принимать входящие сообщения и отправлять ответы. Для этого нам нужно вызвать функции vk_get_updates() и vk_send_message(), а так же реализовать логику бота, которая будет обрабатывать входящие сообщения и формировать ответы:


function vk_bot($access_token, $offset = 0) {
  // Получаем обновления
  $updates = vk_get_updates($access_token, $offset);
  // Обрабатываем входящие сообщения
  foreach($updates['response'] as $update) {
    // Получаем данные о пользователе
    $user_id = $update['user_id'];
    $message = $update['body'];
    // Формируем ответ
    $response = '';
    switch($message) {
      case 'Привет':
        $response = 'Привет!';
        break;
      case 'Как дела?':
        $response = 'Хорошо';
        break;
    }
    // Отправляем ответ
    vk_send_message($access_token, $response, $user_id);
    // Увеличиваем смещение
    $offset = $update['id'];
  }
  // Возвращаем смещение
  return $offset;
}

Теперь наш бот готов к работе. Для того чтобы запустить его, нам нужно вызвать функцию vk_bot(), передав ей access_token и начальное смещение:


$access_token = 'xxx';
$offset = 0;
while(true) {
  $offset = vk_bot($access_token, $offset);
}

Теперь мы можем проверить работу нашего бота. Он должен отвечать на приветствие "Привет" и на вопрос "Как дела?". Все остальные сообщения бот должен игнорировать.

Ответы (0)