Обработка событий

Для того, чтобы обработать какое-то конкретное событие от Callback API, для него необходимо добавить обработчик.

use Fastik1\Vkfast\Api\VkApi;
use Fastik1\Vkfast\Bot\VkBot;
use Fastik1\Vkfast\Bot\Events\MessageNew;

$api = new VkApi('access_token', 5.131);
$bot = new VkBot($api);

$bot->on(MessageNew::class, function (MessageNew $event) {
    // обработка события message_new
});

$bot->run(); // запуск обработки события

Также, возможно передать вместо callback-функции массив с классом и его методом - именно метод указанного класса и будет вызван как callback-функция.

class Handler
{
    public function messageNew(MessageNew $event)
    {
        // обработка события message_new
    }
}

$bot->on(MessageNew::class, [Handler::class, 'messageNew']);

Полезно для разделения кода. Рекомендуется использовать именно такой подход.

Событие confirmation

Как вы знаете, чтобы настроить Callback API приложение на событие confirmation должно вернуть специальный короткий токен, который можно найти в меню настройки Callback API. Но как вернуть этот токен при обработке события? Очень просто. Достаточно внутри callback-функции сделать return с необходимым string или int значением.

Подобно применимо к любым обработчикам, но зачастую, подобное необходимо именно для события confirmation.

use Fastik1\Vkfast\Bot\Events\Confirmation;

class Handler
{
    public function confirmation(Confirmation $event)
    {
        return '1d8fb851' // вернет в браузер вместо базового 'ok' эту строчку и прекратит дальнейшую обработку
    }
}

$bot->on(Confirmation::class, [Handler::class, 'confirmation']);

В случае, если callback-функция возвращает string или int - дальнейшая обработка полностью прекращается и происходит отдача результата в браузер.

Метод run()

Именно этот метод запускает обработку ранее зарегистрированных обработчиков. Без него ничего работать не будет, т.к. мы только зарегистрировали определенные обработчики, но не запустили их обработку.

$bot->run();

// or

$bot->run($rawEvent);

У метода есть единственный аргумент, который принимает сырое событие, которое вы можете самостоятельно передать на обрабортку. По умолчанию библиотека сама получает событие через file_get_contents('php://input')

Last updated