Работа с клавиатурой

Все методы находятся в vk_api модуле.

ВАЖНО! Если у параметра в методе указано значение по умолчанию, значит этот параметр не обязательный

Методы

  • buttonText($text, $color, $payload = null) - Обычная кнопка

    • $color - цвет кнопки, может принимать 4 значения: white, blue, green, red
    • $payload - полезная нагрузка кнопки, которая возвращается на сервер при нажатии. может принимать null или ассоциативный Юмассив(причем даже с несколькими значениями, например можно даже запихивать кнопки в кнопки)
  • buttonApp($text, $app_id, $owner_id = null, $hash = null, $payload = null) - кнопка открытия vk apps приложения

    • $app_id - id приложения
    • $owner_id - id группы. Нужен в том случае, когда приложение нужно запустить от лица группы, например VkCoin или PixelBattle
    • $hash - хэш для навигации в приложении, будет передан в url приложения после символа #. Можно открывать сразу нужные страниицы
    • $payload - идентичен как и в первом методе
  • buttonLocation($payload = null) - кнопка отправки текущего местонахождение. Результат приходит в обычном messages_new

    • $payload - идентичен как и в первом методе
  • buttonPayToGroup($group_id, $amount, $description = null, $data = null, $payload = null) - оплата товара. Платеж приходит в группу. Данная кнопка занимает всю ширину строки

    • $group_id - id группы, в которую придет платеж. Можно даже чужую. Но в настройках группы должны быть активированы платежи
    • $amount - целове число в рублях.
    • $description - описание платежа
    • $data - словарь с произвольными параметрами. Пока еще не понял, зачем он нужен
    • $payload - идентичен как и в первом методе
  • buttonPayToUser($user_id, $amount, $description = null, $payload = null) - оплата товара. Платеж приходит пользователю. Данная кнопка занимает всю ширину строки

    • $user_id - id пользователя, которому придет платеж. Возможно нужно иметь vk pay кошелек, чтобы принимать.
    • $amount - целове число в рублях
    • $description - описание платежа
    • $payload - идентичен как и в первом методе
  • buttonDonateToGroup($group_id, $payload = null) - нефиксированный перевод группе. Думаю применяется для донатов или покупки внутриигровой валюты в необходимом количестве. Данная кнопка занимает всю ширину строки

    • $group_id - id группы, в которую придет платеж. Можно даже чужую. Но в настройках группы должны быть активированы платежи
    • $payload - идентичен как и в первом методе
  • buttonDonateToUser($user_id, $payload = null) - нефиксированный перевод пользователю. Думаю применяется для донатов или покупки внутриигровой валюты в необходимом количестве. Данная кнопка занимает всю ширину строки

    • $user_id - id пользователя, которому придет платеж. Возможно нужно иметь vk pay кошелек, чтобы принимать
    • $payload - идентичен как и в первом методе

Пример создания и отправки кнопок:

Кнопки - это массив с массивами. Если во внутреннем массиве 1 переменная, значит она занимает всю строку. Если N - то они делят строку на равные части, но не более 4 в одной строке.

$vk = vk_api::create(VK_KEY, '5.101');
$location = $vk->buttonLocation();
$app = $vk->buttonApp('Играть', 6840293);
$pay_user = $vk->buttonPayToUser(89846036, 100, 'Оплата покупки',['command' => 'pay']);
$text1 = $vk->buttonText('Negative', 'red', ['color' => 'red']);
$text2 = $vk->buttonText('Positive', 'green', ['color' => 'green']);
$text3 = $vk->buttonText('Primary', 'blue', ['olololo' => 'ebobo?', 'color' => 'green']);
$text4 = $vk->buttonText('Secondary', 'white');

$vk->sendButton(89846036, 'Лови кнопки', [[$location],[$app],[$pay_user],[$text1, $text2, $text3, $text4]]);

Данный пример выведет такие кнопки
example

Удаление кнопок (клавиатуры) из диалога:

Обращаем ваше внимание, что если передать параметр $one_time = True (см. отправка клавиатуры), клавиатура исчезнет после нажатия на одну из кнопок.
Для того, что-бы вручную выключить клавиатуру, нужно выполнить следующий запрос:

$id // ID пользователя
$message // Сообщение, отправляемое при удалении клавиатуры
$vk->sendButton($id, $message);