Giter Site home page Giter Site logo

alliline / vkbotapi Goto Github PK

View Code? Open in Web Editor NEW

This project forked from lukasandreano/vkbotapi

0.0 1.0 0.0 69 KB

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

License: MIT License

PHP 100.00%

vkbotapi's Introduction

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, спасибо за комментарий!");
}

vkbotapi's People

Contributors

lukasandreano avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.