По началу покажется что это не возможно, но поверьте, Вам стоит только начать и все получится. Так как бота мы будем делать на сообществе, нам нужно его создать или использовать уже созданное
После того как создали сообщество, переходим в настройки
Далее в раздел Сообщения и включаем данную функцию, без нее работать наш бот не будет.
У нас появляется раздел Настройки для бота, переходим в него и включаем, при желании можете активировать возможность добавлять в беседы.
Далее переходим: Настройки -> Работа с API -> Ключи доступа и создаем ключ со следующими параметрами:
Этого будет достаточно, так как мы будем работать с сообщениями, получаем вот такой большой код (токен)
Данный токен сообщать другим пользователям нельзя, иначе Вы рискуете потерять доступ к своему сообществу, в моем случае после написания статьи я его удалю и он станет не активный. Сохраните токен в блокноте, он нам пригодится.
С настройками сообщества пока закончим, но в данный раздел нам нужно будет еще вернутся, теперь приступаем к написанию кода для нашего будущего бота. Конечно в данной статье я не буду показывать основные функции своего бота, а лишь небольшую часть, остальное Вы сможете сделать сами при желании, это лишь начальный этап создания бота, учитывайте это.
Бота мы будем писать на PHP.
Для удобства написания кода, я рекомендую скачать Sublime Text, один из лучших редакторов, самое главное удобный и практичный.
Создаем файл с расширением .php, например bot.php
Открываем любым редактором и начинаем писать код.
Вместе с исходником, я положу библиотеку, без нее бот работать не будет, библиотека является публичной, ее можно найти на просторах интернета, создана она очень хорошим человеком, скачать ее можно будет только после регистрации на сайте, требую мало, но оно того стоит
Библиотека упрощает работу с кодом и методами API VK.
Подключаем библиотеку:
<?php
require_once('simplevk-master/autoload.php');
use DigitalStar\vk_api\VK_api as vk_api; // Основной класс
Теперь создаем константы, они нужны для удобства
Их нужно заполнить. в кавычках вставляем тот самый длинный код (токен), вторую константу мы пока пропускаем, а в 3 пишем версию API, которую мы будем использовать. Давайте возьмем 5.81. Нам так же нужно указать и ACCESS_KEY его мы берем в сообществе.
В моем случае это: be20ea35 у Вас будет другой, копируем и вставляем во вторую константу. У Вас должно получится вот так:
<?php
require_once('simplevk-master/autoload.php');
use DigitalStar\vk_api\VK_api as vk_api; // Основной класс
const VK_KEY = "3a5eb7b4f02821c71813ef13ba3d0eccfca127bd1e64d97f077bb3467c31a7808af1bda385230fbbc18db"; // Токен сообщества
const ACCESS_KEY = "be20ea35"; // Тот самый ключ из сообщества
const VERSION = "5.126"; // Версия API VK
Продолжаем. Теперь нам нужно создать экземпляр класса работы с api, получить и декодировать JSON пришедший из VK и сообщить VK что мы приняли callback, все это кажется сложным, но на деле все очень просто и понятно.
Получаем следующий код:
$vk = vk_api::create(VK_KEY, VERSION)->setConfirm(ACCESS_KEY);
$vk->initVars($peer_id, $message, $payload, $vk_id, $type, $data); // Инициализация переменных
Теперь приступаем к самому интересному, обработке сообщений и созданию команд. Для начала нам нужно получить объект новых сообщений, для его дальнейшей обработки:
if ($data->type == 'message_new') {
}
Теперь можно создать первую команду! Наша команда будет !бот, давайте напишем ее:
if ($data->type == 'message_new') {
if ($message == '!бот') {
$vk->sendMessage($peer_id, "Привет :-)"); // Отправляем ответ
}
}
Этот код работать не будет, так как мы не создали переменные $id и $message давайте создадим их. Переменные создаем выше строки
if ($data->type == 'message_new') {
$id = $data->object->from_id; // Узнаем ID пользователя, кто написал нам
$message = $data->object->text; // Само сообщение от пользователя
Статья обновлена 17.12.2020
Теперь часть переменных инициализируется в функции InitVars но для примера оставим как их можно задавать еще!
У нас получается следующий код:
<?php
require_once('simplevk-master/autoload.php');
use DigitalStar\vk_api\VK_api as vk_api; // Основной класс
const VK_KEY = "3a5eb7b4f02821c71813ef13ba3d0eccfca127bd1e64d97f077bb3467c31a7808af1bda385230fbbc18db"; // Токен сообщества
const ACCESS_KEY = "be20ea35"; // Тот самый ключ из сообщества
const VERSION = "5.126"; // Версия API VK
$vk = vk_api::create(VK_KEY, VERSION)->setConfirm(ACCESS_KEY);
$vk->initVars($peer_id, $message, $payload, $vk_id, $type, $data); // Инициализация переменных
// ====== Наши переменные ============
$vk_id = $data->object->from_id; // Узнаем ID пользователя, кто написал нам
$message = $data->object->text; // Само сообщение от пользователя
// ====== *************** ============
if ($data->type == 'message_new') {
if ($message == '!бот') {
$vk->sendMessage($peer_id, "Привет :-)");
}
}
Это уже полностью рабочий бот, Вы уже можете его запустить, давайте это и сделаем, потом вернемся в код и напишем еще 1 команду.
Нам понадобиться любой хостинг, на котором будет установлен PHP версии не ниже 5.6, стоимость такого хостинга от 30 рублей и выше, статью о том как работать с хостингом я напишу позже, у меня есть видео ролик по работе с игровым хостингом, скрипт будет работать и там. Видео можете посмотреть ниже
Загружаем скрипты на бесплатный хостинг с PHP и MySQL. Подойдет для скриптов бота ВК
Допустим Вы разобрались с хостингом и готовы установить туда сам скрипт. Заходим на сервер и загружаем туда наш скрипт с ботом VK и библиотеку. Саму библиотеку скачать можно только после регистрации!
Скачиваем архив, туда я так же положил и скрипт, в нем нужно будет заменить лишь токен и строку, которую скрипт возвращает VK и дописать 2 команду при желании, если она Вам будет нужна.
Теперь нужно получить прямую ссылку к скрипту, в моем случае скрипт залит в корень сайта и ссылка выглядит так:
копируем ссылку, у вас будет другая, возможно состоящая даже из IP адреса, если используете игровой сервер или хостинг без домена. Возвращаемся к настройкам бота в сообществе и вставляем ссылку:
Выбираем версию API 5.126, указываем ссылку и подтверждаем, если все сделали правильно, VK сообщит нам об этом
Если сейчас написать боту, он не ответит, так как нам нужно включить тип событий:
Этого будет достаточно, что бы бот начал функционировать и отвечать нам. Давайте это проверим:
Если бот ответил, значит Вы сделали все правильно, если нет, проверьте код еще раз и убедитесь что скрипт работает, проверить можно просто перейдя по ссылке к самому скрипту
Если Вы допустили в коде ошибку, то у Вас появится Ошибка 500, это означает что Вы допустили ошибку в самом коде скрипта:
Данный бот будет работать только с хостингом, запустить с ПК скрипт не получится
(Получится, но это требует особых навыков )
Теперь наш бот отлично функционирует, а значит можно добавлять новые команды, давайте сделаем команду !дата
Создаем переменную $date и записываем в нее текущую дату и время, с помощью PHP функции date(); получаем следующий код
$date = date("d.m.Y H:i");
Теперь нам нужно создать саму команду:
if ($message == '!дата') {
$vk->sendMessage($peer_id, $date);
}
Весь исходный код выглядит так:
<?php
require_once('simplevk-master/autoload.php');
use DigitalStar\vk_api\VK_api as vk_api; // Основной класс
const VK_KEY = "3a5eb7b4f02821c71813ef13ba3d0eccfca127bd1e64d97f077bb3467c31a7808af1bda385230fbbc18db"; // Токен сообщества
const ACCESS_KEY = "be20ea35"; // Тот самый ключ из сообщества
const VERSION = "5.126"; // Версия API VK
$vk = vk_api::create(VK_KEY, VERSION)->setConfirm(ACCESS_KEY);
$vk->initVars($peer_id, $message, $payload, $vk_id, $type, $data); // Инициализация переменных
// ====== Наши переменные ============
$vk_id = $data->object->from_id; // Узнаем ID пользователя, кто написал нам
$message = $data->object->text; // Само сообщение от пользователя
$date = date("d.m.Y H:i");
// ====== *************** ============
if ($data->type == 'message_new') {
if ($message == '!бот') {
$vk->sendMessage($peer_id, "Привет :-)");
}
if ($message == '!дата') {
$vk->sendMessage($peer_id, $date);
}
}
У нас получилось всего 37 строк кода
Что бы Вы понимали, бот KotOFF и Conference Kot содержит 1761 строку кода! Хотя функционал не самый большой на данный момент.
Давайте проверим работу команды:
Отлично! Все работает. Если данная статья будет интересна, я напишу продолжение и там мы будем создавать новые команды для нашего бота, а пока только вводный курс о создании собственного бота с удобной и очень классной библиотекой, которая помогает упросить код и облегчить работу с методами API. Вместе с Вами учусь и я, ведь я не являюсь программистом и делюсь с вами личным опытом, который я получил совсем недавно.
UPD: Что бы бот отвечал и в беседах нужно заменить частично код, инструкция ниже
Где:
$id = $data->object->from_id;
Заменить на
$id = $data->object->from_id;
$peer_id = $data->object->peer_id;
Далее заменить:
$vk->sendMessage($id, "Привет :-)");
На
$vk->sendMessage($peer_id, "Привет :-)");
Если возникли вопросы или трудности, пишите в комментарии, я с радостью отвечу на них.
На этом у меня все, со временем буду корректировать статью и дополнять ее.
Данный бот отлично подойдет как автоответчик или инструкция (FAQ) для вашего сообщества.
Скачать архив с ботом и библиотекой можно после регистрации на сайте! Регистрация доступна через социальные сети :)
Рекомендуем размещать скрипты на таких хостингах: firstvds
СТАТЬЯ ОБНОВЛЕНА 17.12.20 ДЛЯ ПОДДЕРЖКИ ПОСЛЕДНИХ ВЕРСИЙ АПИ ВК 5.131
Нашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст нажмите CTRL+Enter