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

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags

Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

Как сделать бота для VK пишем на PHP

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

Latest commit message
Commit time

README.md

Простое решение для создания бота ВКонтакте.

Чтобы начать создавать своего бота подключите библиотеку, укажите токен сообщества и используемую версию API

require_once ‘vk.php’; $vk = new VK(‘ТокенСДоступомКСообщениямСообщества’, ‘5.131’); $data = json_decode(file_get_contents(‘php://input’));

При первом подключении VK отправит подтверждение и бот отправит ключ CallBack:

if ($data->type == ‘confirmation’) < exit(Ключ CallBack); >

1. Отправка сообщения

Чтобы отправить сообщение пользователю, выполните:

// $peer_id — ID диалога с пользователем (можно использовать $from_id, однако если бот состоит в беседе, то нужно использовать $peer_id) $vk->SendMessage($peer_id, «Текст сообщения»);

Вы также можете прикрепить к сообщению, например, фотографию:

$vk->SendMessage($peer_id, «Текст сообщения», «photo-196997982_457239020»);

Для отправки сообщения более чем одному человеку, используйте:

$vk->SendMessages(«6098838, 291457291, 390511105», «Текст сообщения»);

Где «6098838, 291457291, 390511105» — ID пользователей, которым необходимо отправить сообщение (максимальное количество ID — 100 штук). К сообщениям также можно прикрепить, например, фотографию.

Если Вы хотите отправить сообщения с клавитурой, то выполните:

$vk->SendButton($peer_id, «Текст сообщения», [[$btn]], true);

Где $btn — кнопка, которую необходимо отправить (подробнее про кнопки ниже). После кнопок укажите true или false — параметр, который отвечает за показ inline кнопок. Если указано значение true, то кнопки будут отображаться прямо в сообщении. При значении false кнопки будут находиться под полем ввода.

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

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

$vk->SendButton($peer_id, «Текст сообщения», [[$btn, $btn1, $btn2], [$btn3, $btn4, $btn5]], true);

[$btn, $btn1, $btn2] — Первый ряд кнопок (максиальное количество рядов: 10, а количество кнопок в ряду: 4). Каждый новый ряд указывается в квадратных скобках и отделяется от предыдущего запятой.

Сообщения с клавиатурой также поддерживают прикрепление документов (например, фотографий):

$vk->SendButton($peer_id, «Текст сообщения», [[$btn]], true, «photo-196997982_457239020»);

Для отправки сообщения с кнопкой и вложением (по желанию) сразу нескольким пользователям (до 100 человек), используйте:

$vk->SendUsersButton($user_ids, «Текст сообщения», [[$btn]], true, «photo-196997982_457239020»);

Где $user_ids — список пользователей, которым необходимо отправить сообщения. Пример: 6098838, 291457291, 390511105

Библиотека поддерживает отправку клавиатуры. Поддерживаемые виды кнопок:

  • Text (обычная кнопка с действием или без)
  • Link (кнопка, которая открывает ссылку при нажатии)
  • Location (кнопка, при нажатии на которую пользователь отправляет свою геолокацию)
  • CallBack (кнопка, которая позволяет без отправки сообщения от пользователя получить уведомление о нажатии на кнопку и выполнить необходимое действие)

$button = [«text», [«payload» => «start»], «Текст кнопки», «green»];

Где Payload — действие, которое будет совершено при нажатии на кнопку, green — цвет кнопки. Поддерживаемые цвета:

  • Red (negative, красный цвет)
  • Green (positive, зеленый цвет)
  • White (secondary, белый/серый цвет)
  • Blue (primary, синий цвет)
Еще по теме:  Как удалить рекомендации в ВК сообществ

$button = [«link», «Текст кнопки», «https://vk.com/»];

Кнопка открывает указанную ссылку при нажатии, однако она не способна совершать действия (payload’ы)

$button = [«location»];

Кнопка открывает окно выбора геолокации и отправляет ее боту.

$button = [«callback», [«type» => ‘show_snackbar’, «text» => ‘Привет мир!’], «Текст кнопки», «green»];

Где show_snackbar — тип действия, которое будет совершено при нажатии на кнопку. Доступные варианты:

  • show_snackbar — отображение уведомления (доступно с мобильных устройств)
  • open_link — открыть ссылку. При этом «text» => ‘Привет мир!’ необходимо заменить на «link» => ‘ссылка’
  • open_app — открыть VK Mini App. При этом «text» => ‘Привет мир!’ необходимо заменить на «app_id» => ‘id приложения’, «owner_id» => ‘id владельца’, «hash» => ‘хэш’

Благодаря Payload’ам кнопки не являются бесполезными. Они могут, например, открывать другие меню или выполнять другие команды. После нажатия на кнопку она отправляет запрос с данными, благодаря которым бот и понимает, что была нажата та или иная кнопка:

if (isset($data->object->message->payload)) < $payload = json_decode($data->object->message->payload, true); > else < $payload = null; > $payload = $payload[‘command’];

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

if ($payload == ‘start’) < // code. >

Предположим, что пользователь поставил лайк на запись, а Вы хотите его отблагодарить (необходимо включить: Записи на стене -> Добавление лайка):

if ($data->type == ‘like_add’) < $vk->sendMessage($from_id, «$first_name, спасибо за лайк!»); >

Реакция на репост записи (необходимо включить: Записи на стене -> Репост):

if ($data->type == ‘wall_repost’) < $vk->sendMessage($from_id, «$first_name, спасибо за репост!»); >

Если Вам важен ID поста, который репостнул человек, то он хранится в переменной $post_id. Таким образом можно добавить реакцию на конкретный пост:

if ($data->type == ‘wall_repost’ $post_id == ‘ID поста’) < $vk->sendMessage($from_id, «$first_name, спасибо за репост поста с конкурсом! Теперь ты принимаешь в нем участие!»); >

Реакция на комментарий записи сообщества (необходимо включить: Записи на стене -> Добавление):

if ($data->type == ‘wall_reply_new’) < $vk->sendMessage($from_id, «$first_name, спасибо за комментарий!»); >

About

Простое решение для создания бота ВКонтакте при помощи PHP.

Источник: github.com

Создаем собственного бота VK, подробная инструкция как создать бота VK за 5 минут!

После того как создали сообщество, переходим в настройки

Далее в раздел Сообщения и включаем данную функцию, без нее работать наш бот не будет.

У нас появляется раздел Настройки для бота, переходим в него и включаем, при желании можете активировать возможность добавлять в беседы.

Далее переходим: Настройки -> Работа с API -> Ключи доступа и создаем ключ со следующими параметрами:

Этого будет достаточно, так как мы будем работать с сообщениями, получаем вот такой большой код (токен)

3a5eb7b4f02821c71813ef13ba3d0eccfca127bd1e64d97f077bb3467c31a7808af1bda385230fbbc18db

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

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

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

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

Создаем файл с расширением .php, например bot.php

Открываем любым редактором и начинаем писать код.

Библиотека упрощает работу с кодом и методами API VK.

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

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

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

Обратите внимание, что токен и строка сообщества будет отличаться от вашего!

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

Еще по теме:  Один из указанных параметров отсутствует или недействителен invalid vk cc ссылка в заголовке

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

$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 но для примера оставим как их можно задавать еще!

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

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 рублей и выше, статью о том как работать с хостингом я напишу позже, у меня есть видео ролик по работе с игровым хостингом, скрипт будет работать и там. Видео можете посмотреть ниже

Добавлена статья как залить скрипт на сервер с инструкцией

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

Внимание! У Вас нет прав для просмотра скрытого текста.

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

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

http://qu4.ru/bot.php

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

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

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

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

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

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

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

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

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

$date = date(«d.m.Y H:i»);

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

if ($message == ‘!дата’) < $vk->sendMessage($peer_id, $date); >

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

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;

Источник: kotoff.net

Создание бота Вк на языке PHP — уроки API Вк

Боты стали новой эпохой в соц сетях и мессенджерах. Мы расскажем как создать настоящего бота на PHP, используя API социальной сети Вконтакте.

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

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

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

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

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

https://oauth.vk.com/authorize?client_id=6678654redirect_uri=https://oauth.vk.com/blank.htmlresponse_type=token ).

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

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

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

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

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

$album = ‘https://vk.com/album-113958919_252151167’; $res = parse_url($album); $path = substr($res[‘path’], 6); $arr = explode(‘_’, $path); $owner_id = $arr[0]; $album_id = $arr[1]; $standalone = «ваш standalone токен приложения»; $group_token = ‘ваш токен группы’; $conf = [ ‘standalone’ => $standalone, ‘group_token’ => $group_token, ‘contorm_token’ => ‘eae5d4a2’, ‘mess’ => ‘Фото в студио’, ‘not_command’ => ‘Ничего не понял!’, ‘owner_id’ => $owner_id, ‘album_id’ => $album_id, ‘group_id’ => ‘170785666’, ‘apiurl’ => ‘https://api.vk.com/method/’, ‘path’ => substr($_SERVER[‘PHP_SELF’], 0, -2), ‘photos’ => ‘photos.txt’, ‘temp_link’ => ‘temp_album.txt’, ‘random_id’ => mt_rand(0000000000, 999999999999), ‘v’ => ‘5.50’ ];
unlink($conf[«photos»]); $query = file_get_contents($conf[‘apiurl’].’photos.get?owner_id=’.$conf[‘owner_id’].’v=’.$conf[‘v’].’ $res = json_decode($query, true); foreach($res as $v) < foreach($v[‘items’] as $q) < $result = ‘photo’.$q[‘owner_id’].’_’.$q[‘id’]; file_put_contents($conf[‘photos’], $result.»n», FILE_APPEND | LOCK_EX); >>
require «config.php»; $data = json_decode(file_get_contents(‘php://input’)); $u_id = $data->object->user_id; $mess = $data->object->body; $user_info = json_decode(file_get_contents($conf[‘apiurl’].’users.get?user_id=’.$u_id.’access_token=’.$conf[‘standalone’])); $user_name = $user_info->response[0]->first_name; $temp_link = file($conf[‘temp_link’]); if($temp_link[0] != $album) < file_put_contents($conf[‘temp_link’], $album); require «photos.php»; return true; >switch($data->type) < case ‘confirmation’: echo $conf[‘contorm_token’]; break; case «message_new»: if($mess == $conf[‘mess’]) < $file = file_get_contents($conf[‘photos’]); $photos_all = explode(«n», $file); $myCurl = curl_init(); curl_setopt_array($myCurl, array( CURLOPT_URL =>$conf[‘apiurl’].’messages.send?user_id=’.$u_id.’attachment=’.$photos_all[mt_rand(0, count($photos_all) — 1)].’v=’.$conf[‘v’].’ true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query(array()) )); $response = curl_exec($myCurl); curl_close($myCurl); > else < $myCurl = curl_init(); curl_setopt_array($myCurl, array( CURLOPT_URL =>$conf[‘apiurl’].’messages.send?user_id=’.$u_id.’message=’.urlencode($conf[‘not_command’]).’access_token=’.$conf[‘standalone’], CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query(array()) )); $response = curl_exec($myCurl); curl_close($myCurl); > echo ‘ok’; break; >

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

  • ← Изучение PHP | Основы PHP
  • Урок №3 — Пишем «Hello World!» →

Источник: clip-clap.ru

Рейтинг
( Пока оценок нет )
Загрузка ...