Как написать бота для вк на php

Для создание ботов в социальной сети Вконтакте нужно несколько вещей:

  1. Специальный standalone token ;
  2. Токен вашей группы;
  3. Сам скрипт с ботом;
  4. Группа с подключенным сервером и API.

Получение токена

Первым делом необходимо получить standalone token вместе с токеном вашей группы. Для этого переходим в раздел для разработчиков и в " Мои приложения ". Здесь создаем новое приложение. Название приложения можете выбрать любым, главное чтобы оно было Standalone-приложение.

Включите Open API после создания приложения. В него пропишите сайт, с которым будет связано ваше приложение, а также базовый домен. В нашем случае это itProger.com .

После этого необходимо перейти по этой ссылке . Также вы её видите ниже:

Единственное, вам необходимо изменить client_id и установить чтобы оно было равным ID вашего приложения.

Далее вы нажимаете на кнопку Разрешить и после этого получаете токен, который будет записан в ссылке. Копируете токен от знака равенства ( = ) и до амперсанда ( & ).

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

Создание самого бота

Для создания бота нам понадобиться три файла:

  • config — файл служащий исключительно для нас. В нем мы запишем различные настройки и данные, которые сможем в дальнейшем использовать в других файлах;
  • photos — файл для обработки альбома. В этом файле мы будем обрабатывать альбом, получать из него все изображение и записывать их в новый txt файл в специальном формате, который в дальнейшем будем передавать в качестве прикрепленного изображения к сообщению;
  • bot — основной файл с ботом. Здесь мы прописываем обработку данных от пользователя, а также передачу сообщений от бота к пользователю Вконтакте.

Ниже представлены эти три файла. Они полностью готовы и с рабочим кодом. Детальное описание всего что в них происходит вы можете получить из видео.

Детальное описание создания бота на языке PHP под систему Вконтакте:

Последнее что необходимо будет сделать, так это прописать URL адрес скрипта bot.php в группе, в настройках API:

После этого можете написать сообщение в группу и бот будет вам отвечать. Напишите "Фото в студио" и бот пришлет вам случайную фотографию из альбома.


По началу покажется что это не возможно, но поверьте, Вам стоит только начать и все получится. Так как бота мы будем делать на сообществе, нам нужно его создать или использовать уже созданное


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

Далее переходим: Настройки -> Работа с API -> Ключи доступа и создаем ключ со следующими параметрами:
Этого будет достаточно, так как мы будем работать с сообщениями, получаем вот такой большой код (токен)

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

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

Читайте также:  Как отменить платную подписку в плей маркете

Бота мы будем писать на PHP.

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

Создаем файл с расширением .php, например bot.php
Открываем любым редактором и начинаем писать код.
Вместе с исходником, я положу библиотеку, без нее бот работать не будет, библиотека является публичной, ее можно найти на просторах интернета, создана она очень хорошим человеком, скачать ее можно будет только после регистрации на сайте, требую мало, но оно того стоит
Библиотека упрощает работу с кодом и методами API VK.

Подключаем библиотеку:

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


Их нужно заполнить. в кавычках вставляем тот самый длинный код (токен), вторую константу мы пока пропускаем, а в 3 пишем версию API, которую мы будем использовать. Давайте возьмем 5.81. Нам так же нужно указать и ACCESS_KEY его мы берем в сообществе.

В моем случае это: be20ea35 у Вас будет другой, копируем и вставляем во вторую константу. У Вас должно получится вот так:

Продолжаем. Теперь нам нужно создать экземпляр класса работы с api, получить и декодировать JSON пришедший из VK и сообщить VK что мы приняли callback, все это кажется сложным, но на деле все очень просто и понятно.

Получаем следующий код:


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

Теперь можно создать первую команду! Наша команда будет !бот, давайте напишем ее:

Этот код работать не будет, так как мы не создали переменные $id и $message давайте создадим их. Переменные создаем выше строки
if ($data->type == ‘message_new’) <

У нас получается следующий код:

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

Нам понадобиться любой хостинг, на котором будет установлен PHP версии не ниже 5.6, стоимость такого хостинга от 30 рублей и выше, статью о том как работать с хостингом я напишу позже, у меня есть видео ролик по работе с игровым хостингом, скрипт будет работать и там. Видео можете посмотреть ниже

Допустим Вы разобрались с хостингом и готовы установить туда сам скрипт. Заходим на сервер и загружаем туда наш скрипт с ботом VK и библиотеку. Саму библиотеку скачать можно только после регистрации!

Скачиваем архив, туда я так же положил и скрипт, в нем нужно будет заменить лишь токен и строку, которую скрипт возвращает VK и дописать 2 команду при желании, если она Вам будет нужна.


Теперь нужно получить прямую ссылку к скрипту, в моем случае скрипт залит в корень сайта и ссылка выглядит так:

копируем ссылку, у вас будет другая, возможно состоящая даже из IP адреса, если используете игровой сервер или хостинг без домена. Возвращаемся к настройкам бота в сообществе и вставляем ссылку:

Выбираем версию API 5.81, указываем ссылку и подтверждаем, если все сделали правильно, VK сообщит нам об этом

Если сейчас написать боту, он не ответит, так как нам нужно включить тип событий:


Этого будет достаточно, что бы бот начал функционировать и отвечать нам. Давайте это проверим:

Читайте также:  Как поделить диск на 2 части


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

Если Вы допустили в коде ошибку, то у Вас появится Ошибка 500, это означает что Вы допустили ошибку в самом коде скрипта:

Данный бот будет работать только с хостингом, запустить с ПК скрипт не получится
(Получится, но это требует особых навыков )

Теперь наш бот отлично функционирует, а значит можно добавлять новые команды, давайте сделаем команду !дата

Создаем переменную $date и записываем в нее текущую дату и время, с помощью PHP функции date(); получаем следующий код

Теперь нам нужно создать саму команду:

Весь исходный код выглядит так:

У нас получилось всего 45 строк кода

Что бы Вы понимали, бот KotOFF и Conference Kot содержит 1761 строку кода! Хотя функционал не самый большой на данный момент.

Давайте проверим работу команды:

Отлично! Все работает. Если данная статья будет интересна, я напишу продолжение и там мы будем создавать новые команды для нашего бота, а пока только вводный курс о создании собственного бота с удобной и очень классной библиотекой, которая помогает упросить код и облегчить работу с методами API. Вместе с Вами учусь и я, ведь я не являюсь программистом и делюсь с вами личным опытом, который я получил совсем недавно.

UPD: Что бы бот отвечал и в беседах нужно заменить частично код, инструкция ниже

Если возникли вопросы или трудности, пишите в комментарии, я с радостью отвечу на них.

На этом у меня все, со временем буду корректировать статью и дополнять ее.

Данный бот отлично подойдет как автоответчик или инструкция (FAQ) для вашего сообщества.

Скачать архив с ботом и библиотекой можно после регистрации на сайте! Регистрация доступна через социальные сети 🙂

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

Подготовка серверной части к подключению

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

  • Бота для отправки мгновенных ответов на поступающие сообщения.
  • Систему автоматической модерации контента.
  • Сервис для сбора и обработки показателей вовлеченности аудитории.

Чтобы начать использовать Callback API, подключите свой сервер в настройках сообщества и выберите типы событий, данные о которых требуется получать (например, новые комментарии и новые фотографии). Когда в сообществе произойдет событие выбранного типа, ВКонтакте отправит на Ваш сервер запрос в формате JSON с основной информацией об объекте, вызвавшем событие (например, добавленный комментарий). Вам больше не нужно делать регулярные запросы к API, чтобы отслеживать обновления — теперь Вы будете получать их мгновенно.

Инструкция по подключению подробно описана в отличной документации для разработчиков ВКонтакте.

Разберем её подробнее, для размещения скрипта чат-бота мы должны иметь функционирующий веб-сервер.

Для работы с callback API ВКонтакте рекомендует использовать протокол https, инструкцию по бесплатному получению сертификата cloudflare и настройки сервера вы сможете найти в статье, которую можно найти в поисковой системе Google по запросу Бесплатный SSL сертификат CloudFlare.

По окончании настройки сервера вы должны иметь рабочий web-сервер, на который мы загрузим скрипт нашего бота.

Читайте также:  Как отследить местоположения телефона на андроиде

Настройка сообщества ВКонтакте

Генерация ключа доступа

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

Далее спустимся в раздел "Работа с API" → "Ключи доступа".

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

В нашем случае нам хватит доступа к сообщениям сообщества.

Сохраним данный ключ, он нам понадобится при настройке backend.

Настройка callback API

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

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

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

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

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

Настройка типов событий

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


Далее спустимся в раздел "Работа с API" → "Типы событий".

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

Настройка backend бота ВКонтакте

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

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

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

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

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

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

После этого, конфигурация сообщества для работы с ботом завершена, теперь, если мы отправим сообщением в сообщество, мы получим ответ.

Реализация приветствия при вступлении в сообщество ВКонтакте

На данном этапе мы уже имеем настроенный сервер и обработчик бота, все возможные события указаны в документации, она хорошо написана, рекомендую с ней ознакомиться.

Мы будем отлавливать событие group_join, для этого в операторе switch создадим новый раздел. Мы не будем рассматривать join_type подробно, так как у нас открытая группа, но вы можете обрабатывать этот параметр на ваше усмотрение.

Полный код обработчика бота ВКонтакте с функцией приветственного сообщения:

Adblock
detector