Вк бот как сделать 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);
}
Теперь мы можем проверить работу нашего бота. Он должен отвечать на приветствие "Привет" и на вопрос "Как дела?". Все остальные сообщения бот должен игнорировать.