KOTOFF.NET
  • Главная
  • Пользователи
  • Контакты
  • Статистика
  • Правила
  • О нас
  • Вход / Регистрация

Как создать бота Вконтакте с кнопками (keyboard)

Статьи / PHP


В этой статье мы рассмотрим как просто и быстро создать кнопки для управления ботом. Кнопки упрощают использование бота и делают управление им удобнее, чем писать текстовые команды.
Требования:
PHP +5.6
VK API v5.126

Статья обновлена до последней версии API 5.126 на сегодняшний день.

Мы будем использовать библиотеку для работы с API VK, скачать ее можете ниже
simplevk-master.rar

Загружаем папку с файлами на сервер, туда же где будем создавать файл, для работы бота нужен будет сервер, для начала можете использовать бесплатный, на сайте есть статья как запустить вк бота на бесплатном хостинге

Создаем файл с названием bot.php в том же месте, где лежит наша библиотека и начинаем писать следующий код. 

<?php

require_once('simplevk-master/autoload.php');

use DigitalStar\vk_api\VK_api as vk_api; // Основной класс

const VK_KEY = "b48c23e7e4aa9c7c02f61a51aff85b90e59a4c52567f8604***74a9a82b2ccf8258f9b938095be8c5e9d";  // Токен сообщества
const ACCESS_KEY = "be20ea35";  // Тот самый ключ из сообщества 
const VERSION = "5.126"; // Версия API VK

$vk = vk_api::create(VK_KEY, VERSION)->setConfirm(ACCESS_KEY);
// ТУТ НАШИ КНОПКИ ===

$btn_1 = $vk->buttonText('Кнопка 1', 'green', ['command' => 'btn_1']);
$btn_2 = $vk->buttonText('Кнопка 2', 'blue', ['command' => 'btn_2']);
$btn_3 = $vk->buttonText('Кнопка 3', 'red', ['command' => 'btn_3']);
$btn_4 = $vk->buttonText('Кнопка 4', 'white', ['command' => 'btn_4']);

// ===================

$vk->initVars($peer_id, $message, $payload, $vk_id, $type, $data); // Инициализация переменных. Проще говоря библиотека сама создает нужные переменные, а в качестве примера ниже привели как бы пришлось писать переменные без инициализапции

// ====== Наши переменные ============
//$peer_id = $data->object->peer_id;// Узнаем ID пользователя, кто написал нам
//$message = $data->object->text; // Само сообщение от пользователя
// ====== *************** ============


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

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

$btn_1 = $vk->buttonText('Кнопка 1', 'green', ['command' => 'btn_1']);
$btn_2 = $vk->buttonText('Кнопка 2', 'blue', ['command' => 'btn_2']);
$btn_3 = $vk->buttonText('Кнопка 3', 'red', ['command' => 'btn_3']);
$btn_4 = $vk->buttonText('Кнопка 4', 'white', ['command' => 'btn_4']);


Рассмотрим их подробнее. 
$btn_1 — Название переменной, далее вызываем функцию из библиотеки и пишем параметры = $vk->buttonText('Кнопка 1', 'green', ['command' => 'btn_1']); btn_1 название кнопки, «Кнопка 1» любой текст в кнопке, может повторятся, «green» цвет кнопки, всего доступно 4 варианта:
green — Зеленый
blue — Синий
red — Красный
white — Белый
Теперь давайте вызовем кнопки и посмотрим как они смотрятся. Создаем проверку события на новое сообщение:


if ($data->type == 'message_new') { // Создаем проверку на новое сообщение и вызываем кнопки

        $vk->sendButton($peer_id, "Вот список кнопок, выбирайте :-)", [[$btn_1, $btn_2, $btn_3, $btn_4]]);
    
        }


Проверим работу в Вконтакте


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

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

if ($data->type == 'message_new') { // Создаем проверку на новое сообщение и вызываем кнопки

    if ($message == 'Начать') {
        $vk->sendButton($peer_id, "Вот список кнопок, выбирайте :-)", [[$btn_1, $btn_2, $btn_3, $btn_4]]);
    }

        }



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


if ($data->type == 'message_new') { // Создаем проверку на новое сообщение и вызываем кнопки


    if ($message == 'Начать') {
        $vk->sendButton($peer_id, "Вот список кнопок, выбирайте :-)", [[$btn_1, $btn_2, $btn_3, $btn_4]]);
    }



    if (isset($data->object->payload)) {  //получаем payload
        $payload = json_decode($data->object->payload, True);
    } else {
        $payload = null;
    }
    $payload = $payload['command'];




// Теперь пишем действия с кнопками
    if ($payload == 'btn_1')
        $vk->sendMessage($peer_id, "Вы выбрали первую кнопку, любой ответ на это событие");
    if ($payload == 'btn_2')
        $vk->sendMessage($peer_id, "Вы выбрали вторую кнопку, любой ответ на это событие");
    if ($payload == 'btn_3')
        $vk->sendMessage($peer_id, "Вы выбрали третью кнопку, любой ответ на это событие");
    if ($payload == 'btn_4')
        $vk->sendMessage($peer_id, "Вы выбрали четвертую кнопку, любой ответ на это событие");

    if ($message == 'Отключить')
        $vk->sendButton($peer_id, "Кнопки скрыты, снова вызвать их, отправьте Начать, Ваш ID $vk_id", [[]]);


        }




Сразу же сделали и скрытие кнопок по команде Отключить, кнопок может быть сколько угодно, отображать на странице за раз можно 10 кнопок, используя кнопки можно сделать переход в разные разделы и быстрое обращение к боту, исходник с библиотекой можете скачать в самом низу. 
Для того что бы выставить кнопки столбцом, а не в ряд, нужно:
Заменить:
$vk->sendButton($peer_id, "Вот список кнопок, выбирайте :-)", [[$btn_1, $btn_2, $btn_3, $btn_4]]);
на
$vk->sendButton($peer_id, "Вот список кнопок, выбирайте :-)", [[$btn_1], [$btn_2], [$btn_3], [$btn_4]]);
Получаем вот такой вариант:

Вид кнопок может быть разным, что бы разместить 1 кнопку в столбец, 2 и 3 в строку, а 4 тоже в столбец, нужно взять в квадратные скобки 2 и 3 кнопки

$vk->sendButton($peer_id, "Вот список кнопок, выбирайте :-)", [[$btn_1, [$btn_2, $btn_3], $btn_4]]);



Я думаю с этим все понятно, дальше быстро пробежимся по запуску бота, не смотря на то, что на сайте уже есть статья на эту тему. 
Созданные файлы мы загружаем на хостинг, советую выделить для этого 100 рублей, цена 1 пачки сигарет, ну или 2 шоколадки :) покупаем готовый хостинг, если не нужна база данных в будущем, то стоимость падает в 2 раза, до 40 рублей
hostline
Это стоимость на HostLine.ru

Переходим в ISPManager прямо из личного кабинета

Далее выбираем наш сайт, HostLine создает автоматически домен 3 уровня, и переходим в каталог 

И закачиваем наши 2 файла 


Теперь перейдя по нашему домену, в моем случае это http://vh328199.hostline.su/bot.php, если домен не отвечает, нужно немного подождать, пока ваш провайдер не начнет его видеть, обычно это занимает не более 24 часов.


Теперь эту ссылку вставляем в настройки VK API самой группы

И не забывайте включить Тип событий на входящие сообщения 


На этом все, задавайте свои вопросы в комментарии, обязательно ответим на них.
keyboard_bot.rar
Новость отредактировал: Сергей Котов - 23-03-2021, 18:03
Причина: Статья обновлена до последней версии API 5.126 на момент редактирования.
  • Сергей Котов
  • 01.04.2019
  • 41 701
  • 49
Создание бота ВК на inline кнопках и обновление на версию API 5.103+ подробная инструкция и примеры
Создание бота ВК на inline кнопках и обновление на версию API 5.103+ подробная инструкция и примеры
2-11-2019, 06:01, Статьи / PHP
Создаем собственного бота VK, подробная инструкция как создать бота VK за 5 минут!
Создаем собственного бота VK, подробная инструкция как создать бота VK за 5 минут!
16-01-2019, 06:02, Статьи / PHP
Скрипт исключения из беседы VK и не только, написанный на PHP
Скрипт исключения из беседы VK и не только, написанный на PHP
21-02-2019, 04:04, Статьи / PHP
Подключение к базе данных MySQL и работа с ней. Используем ее для ботов VK
Подключение к базе данных MySQL и работа с ней. Используем ее для ботов VK
5-04-2019, 20:16, Статьи / PHP
{login}

Твой комментарий..

Заказывай!
Разработка ботов на заказ, любой сложности, обращаться:
 VK KOTOFF.net - Сообщество, в личные сообщения или по контактам указанным там 
 mail: [email protected]

Рекламный блок
  • Новости
  • Платная категория
  • Блог
  • Игры
  • Обновления
  • Программы
  • Статьи
    • PHP
    • Python
    • JS
  • Дизайн
    • PSD исходники
  • DLE
    • Шаблоны
    • Модули
    • Хаки
  • Магазин
    • Скрипты
Комментарии
Создание простого Telegram-бота с клавиатурой и inline-кнопками [Часть 2]
Класс, хорошая тема
Динамическая обложка для группы ВК, последний подписчик, топ комментатор и прочее
Как отключить вывод результата cron в папку modules/cron в Open Server? Крон запускает несколько
Динамическая обложка для группы ВК, последний подписчик, топ комментатор и прочее
Планируете ли вернуться к динамической обложке?
Скрипт для скачивания видео с YouTube на PHP
Уже не работает.
Авторизация на сайте с помощью ВК, простой и понятный способ на PHP!
Страница для авторизации http://oauth.vk.com/authorize - не существует. Метод не актуален
Все комментарии..
Полный список последних комментариев
Лучшие новости
Всего публикаций: 111
Добавлено за сутки: +0
Записей в блоге: 1
Добавлено за сутки: +0
Комментариев: 935
Добавлено за сутки: +0
Пользователей: 4124
Добавлено за сутки: +0
Полная статистика..
Подробная статистика сайта
Loading...

Нашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст нажмите CTRL+Enter

Полезные ссылки
  • О проекте
  • Наши контакты
  • Администрация
  • Рекламные материалы
  • Идеи и предложения
  • Ответы на вопросы
Информация
  • Условия сделки
  • Способы оплаты
  • Поддержка / F.A.Q
  • Онлайн документация
  • Статистика сайта
  • Список пользователей
Услуги/Работа
  • Разработка ботов ВК
  • Обновление проекта
  • Консультация/поддержка
KOTOFF.net

Copyright © Footer 2019-2023. All right reserved.
KOTOFF.net - Уроки по PHP, SQL, IT новости
Быстрый вход

Используйте социальные сети для быстрой регистрации и авторизации.

Google
ВКонтакте
Яндекс
Mail.ru
Создать аккаунт / Регистрация
Авторизация

Я забыл свой пароль