catferq / reactphp-vk
There is no license information available for the latest version (v2.0.1) of this package.
Async VK API client built on top of ReactPHP
v2.0.1
2020-09-21 18:06 UTC
Requires
- php: >=7.4
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- clue/buzz-react: ^2.8.2
- psr/log: ^1.1
- react/react: ^1.0
This package is not auto-updated.
Last update: 2025-03-18 15:47:03 UTC
README
Асинхронный VK API клиент построенный на ReactPHP
composer require catferq/reactphp-vk
Это экспериментальная библиотека. На текущий момент не рекомендуется её использовать в реальных проектах.
Если ты знаком с ReactPHP, то я готов получить по жепке за допущенные ошибки и спорные моменты.
Есть идеи? Пиши в личку.
На данный момент тут реализовано:
- Обращение к API через сгенерированную SDK (5.122)
- Прямые запросы к API
- Система троттлинга, дабы не зафлудить и не получить ошибку #6 (слишком много запросов в секунду)
- Обработчик LongPoll
- Всякие Enum'ы
- Ну ещё мета сгенирировал, чтобы были хоть какие-то подсказки при прямых запросах
Пример обычных запросов через SDK
<?php use ReactPHPVK\Client\AVKClient; use ReactPHPVK\LongPoll\LongPollClient; use React\EventLoop\Factory; require_once __DIR__ . '/vendor/autoload.php'; $accessToken = 'f1a6c1f8f0f1a21f8f0f1a2c6b1ba6c1f8f0f1a2c6b1b11e6'; $loop = Factory::create(); $avk = new AVKClient($loop, $accessToken); $method = $avk->messages()->send(); $method->setMessage('Hello world'); $method->setUserId(283776198); $method->execute()->then( fn ($response) => var_dump($response) ); $loop->run();
Пример обработки LP
<?php use ReactPHPVK\Client\AVKClient; use ReactPHPVK\LongPoll\LongPollClient; use React\EventLoop\Factory; require_once __DIR__ . '/vendor/autoload.php'; $accessToken = 'f1a6c1f8f0f1a21f8f0f1a2c6b1ba6c1f8f0f1a2c6b1b11e6'; $groupId = 185142265; $loop = Factory::create(); $avk = new AVKClient($loop, $accessToken); $lp = new LongPollClient($avk, $groupId); $lp->handle( fn ($update) => var_dump($update) // выведет событие (неожиданно, согласен) ); $loop->run();