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

This package is not auto-updated.

Last update: 2024-04-16 11:42:05 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();