Добавлен LongPoll. Переработка ядра, переработка сборщика, переработка сообщений.

This commit is contained in:
RedHood
2020-09-26 20:28:13 +10:00
parent 48946d9070
commit ce92d44b8b
15 changed files with 1497 additions and 1079 deletions

View File

@@ -4,64 +4,92 @@ declare(strict_types=1);
namespace VK\Robots;
use VK\Browsers\BrowserAbstract;
use VK\Parsers\Curl;
use Exception;
use VK\API\LongPoll;
use \VK\Browsers\BrowserAbstract,
\VK\API\Methods\Message,
\VK\API\LongPoll;
/**
* Робот: "Группа"
* Робот-группа ВКонтакте
*
* Класс реализовывающий работу от лица группы ВКонтакте
*
* @package Robots
* @author Arsen Mirzaev
* @property LongPoll $longpoll LongPoll-сессия
*
* @method public function message(int $to, string $message, int $mode = 2) Отправить сообщение
* @method public function __set($name, $value) Магический метод-сеттер
* @method public function __get($name) Магический метод-геттер
*
* @package VK\Robots\Group
* @author Arsen Mirzaev <red@hood.su>
*
* @todo Вместо методов реализовать фабрику методов API, как было раньше
*/
class Group extends RobotAbstract
{
/**
* ВКонтакте: тип API
* LongPoll-сессия
*
* @var string
* @var LongPoll
*/
public string $api;
protected LongPoll $longpoll;
/**
* ВКонтакте: активатор мобильной версии
*
* @var bool
* Отправить сообщение
*
* @param int $to Идентификатор получателя
* @param string $message Текст сообщения
* @param int $mode Режим доставки сообщения
*
* @return array
*/
//protected bool $mobile = false;
public function message(int $to, string $message, int $mode = 2): array
{
return Message::put($this, $to, $message, $mode);
}
/**
* ВКонтакте: идентификатор капчи
* Магический метод-сеттер
*
* @var int
* @param mixed $name Название
* @param mixed $value Значение
*
* @see RobotAbstract Модификация наследуемого метода
*
* @return void
*/
//protected int $captcha;
public function postMethod($method, $params = []): BrowserAbstract
public function __set($name, $value): void
{
$browser = __NAMESPACE__ . '\\Browsers\\' . ucfirst($_ENV['BROWSER_TYPE']);
return (new $browser)->post();
parent::__set($name, $value);
if ($name === 'longpoll') {
if ($value instanceof LongPoll) {
$this->longpoll = $value;
} else {
$this->longpoll = new LongPoll($this);
}
}
}
public function longpoll(...$params): LongPoll
/**
* Магический метод-геттер
*
* @param mixed $name Название
*
* @see RobotAbstract Модификация наследуемого метода
*
* @return mixed
*/
public function __get($name)
{
return new LongPoll($this, $params);
}
if (!empty($parent = parent::__get($name))) {
return $parent;
}
public function callback()
{
return new CallBack($this, $params);
}
protected function genToken(): string
{
return 'test';
}
protected function genTokenMobile(string $captcha_key, int $captcha_id): string
{
return 'test 2';
if ($name === 'longpoll') {
if (empty($this->longpoll)) {
$this->longpoll = new LongPoll($this);
}
return $this->longpoll;
}
}
}