Skip to content

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

License

Notifications You must be signed in to change notification settings

LukasAndreano/VKBotAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

VKBotAPI v1.2

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

Настройка

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

<?php 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 кнопки будут находиться под полем ввода.

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

$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

2. Клавиатуры

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

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

Кнопка: Text

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

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

  • Red (negative, красный цвет)
  • Green (positive, зеленый цвет)
  • White (secondary, белый/серый цвет)
  • Blue (primary, синий цвет)

Кнопка: Link

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

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

Кнопка: Location

$button = ["location"];

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

Кнопка: Callback

$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" => 'хэш'

3. Payload'ы

Благодаря 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.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages