Найти в Дзене
Taipan

Как сделать бота Вконтакте с нуля?

Всем привет, сегодня я расскажу как создать игрового бота Вконтакте. Важным моментом в работе бота сообщества являются ответы на пользовательские сообщения и различные события, для того, чтобы мы могли взаимодействовать с пользователем от имени сообщества, нам необходимо создать специальный ключ. Для этого перейдем во вкладку "Управление сообществом". Теперь мы должны связать наш сервер и сообщество, для этого мы должны указать данные нашего сервера и создать секретный ключ. Для этого нам необходимо перейти в раздел управления сообщества и спуститься во вкладку "Работа с API". Введем секретный ключ и нажимаем «Сохранить», после мы должны получить соответствующее уведомление о успешной установке ключа. Кнопку «Подтвердить» напротив поля с адресом сервера не нажимаем.
Заданный Вами секретный ключ будет передаваться с каждым уведомлением от сервера в отдельном поле secret. Это позволит Вам достоверно определять, что уведомление пришло именно от нашего сервера.
Также мы должны з

Всем привет, сегодня я расскажу как создать игрового бота Вконтакте.

Важным моментом в работе бота сообщества являются ответы на пользовательские сообщения и различные события, для того, чтобы мы могли взаимодействовать с пользователем от имени сообщества, нам необходимо создать специальный ключ. Для этого перейдем во вкладку "Управление сообществом".

Для создания ключа необходимо нажать "Создать ключ" и выбрать необходимые права, которые мы предоставим нашему боту.
Для создания ключа необходимо нажать "Создать ключ" и выбрать необходимые права, которые мы предоставим нашему боту.
Сохраним данный ключ, он нам понадобится при настройке backend.
Сохраним данный ключ, он нам понадобится при настройке backend.

Теперь мы должны связать наш сервер и сообщество, для этого мы должны указать данные нашего сервера и создать секретный ключ. Для этого нам необходимо перейти в раздел управления сообщества и спуститься во вкладку "Работа с API".

-4

Введем секретный ключ и нажимаем «Сохранить», после мы должны получить соответствующее уведомление о успешной установке ключа. Кнопку «Подтвердить» напротив поля с адресом сервера не нажимаем.
Заданный Вами секретный ключ будет передаваться с каждым уведомлением от сервера в отдельном поле secret. Это позволит Вам достоверно определять, что уведомление пришло именно от нашего сервера.

-5

Также мы должны запомнить код, который должен вернуть сервер, запишите его, он нам понадобится при настройке backend.

-6
-7

Установите необходимые пункты в данном разделе.

Следующим этапом мы должны создать специальный скрипт, который будем принимать запросы от callback API вконтакте и определенным образом реагировать на события. Создадим, например, php-скрипт handler.php, адрес к этом скрипту, после настройки backend, мы должны указать в настройках сообщества.

Обратите внимание на значения следующих переменных:

$confirmationToken $token $secretKey

В confirmationToken хранится код, которые сервер должен вернуть, в нашем случае:

004eec27

token хранит в себе ключ доступа, который мы генерировали в главе «Генерация ключа доступа»

secretKey мы задавали в разделе управления сообщества callback API. Итоговый код выглядит следующим образом (handler.php):

<?php if (!isset($_REQUEST)) { return; } //Строка для подтверждения адреса сервера из настроек Callback API
$confirmationToken = '004eec27'; //Ключ доступа сообщества $token = 'Ваш ключ'; // Secret key
$secretKey = 'testSecureKey'; //Получаем и декодируем уведомление $data = json_decode(file_get_contents('php://input')); // проверяем secretKey
if(strcmp($data->secret, $secretKey) !== 0 && strcmp($data->type, 'confirmation') !== 0) return; //Проверяем, что находится в поле "type" switch ($data->type) { //Если это уведомление для подтверждения адреса сервера...
case 'confirmation': //...отправляем строку для подтверждения адреса echo $confirmationToken;
break; //Если это уведомление о новом сообщении...
case 'message_new': //...получаем id его автора
$userId = $data->object->user_id; //затем с помощью users.get получаем данные об авторе
$userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0")); //и извлекаем из ответа его имя $user_name = $userInfo->response[0]->first_name; //С помощью messages.send и токена сообщества отправляем ответное сообщение
$request_params = array( 'message' => "{$user_name}, ваше сообщение зарегистрировано!<br>". "Мы постараемся ответить в ближайшее время.", 'user_id' => $userId, 'access_token' => $token, 'v' => '5.0' );
$get_params = http_build_query($request_params); file_get_contents('https://api.vk.com/method/messages.send?' . $get_params); //Возвращаем "ok" серверу Callback API
echo('ok');
break; // Если это уведомление о вступлении в группу case 'group_join': //...получаем id нового участника
$userId = $data->object->user_id; //затем с помощью users.get получаем данные об авторе
$userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0")); //и извлекаем из ответа его имя $user_name = $userInfo->response[0]->first_name; //С помощью messages.send и токена сообщества отправляем ответное сообщение
$request_params = array( 'message' => "Добро пожаловать в наше сообщество , {$user_name}!<br>" . "Если у Вас возникнут вопросы, то вы всегда можете обратиться к администраторам сообщества.<br>" . "Их контакты можно найти в соответсвующем разделе группы.<br>" . "Успехов в учёбе!", 'user_id' => $userId, 'access_token' => $token, 'v' => '5.0' );
get_params = http_build_query($request_params); file_get_contents('https://api.vk.com/method/messages.send?' . $get_params); //Возвращаем "ok" серверу Callback API
echo('ok');
break;
}
?>

После того как вы загрузите код, вы должны вернуться в раздел «Управление сообществом» → «Работа с API» → «Callback API», ввести адрес до скрипта и нажать «Подтвердить»

-8

На этом всё, успехов в создании!!!
Следите за новостями, скоро расскажу как сделать игрового бота Вконтакте.