Какое-то старое говно не помню
This commit is contained in:
parent
64a88c9f4e
commit
07ace039c9
|
@ -14,11 +14,6 @@
|
||||||
"email": "red@hood.su",
|
"email": "red@hood.su",
|
||||||
"homepage": "https://hood.su/mirzaev",
|
"homepage": "https://hood.su/mirzaev",
|
||||||
"role": "Programmer"
|
"role": "Programmer"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Konstantin Tarashchansky Eleno-Borisovich",
|
|
||||||
"homepage": "https://hood.su/flower_studios",
|
|
||||||
"role": "Programmer"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,6 +5,7 @@ declare(strict_types=1);
|
||||||
namespace mirzaev\vk\api;
|
namespace mirzaev\vk\api;
|
||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
|
|
||||||
use mirzaev\vk\core,
|
use mirzaev\vk\core,
|
||||||
mirzaev\vk\robots\robot;
|
mirzaev\vk\robots\robot;
|
||||||
|
|
||||||
|
|
|
@ -45,13 +45,13 @@ final class messages extends method
|
||||||
* Конструктор
|
* Конструктор
|
||||||
*
|
*
|
||||||
* @param robot $robot Робот
|
* @param robot $robot Робот
|
||||||
|
* @param int|string|array|null $destination Получатель
|
||||||
* @param string|null $text Текст
|
* @param string|null $text Текст
|
||||||
* @param int|string|array $destination = null
|
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
protected robot $robot,
|
protected robot $robot,
|
||||||
protected string|null $text = null,
|
int|string|array|null $destination = null,
|
||||||
int|string|array $destination = null
|
protected string|null $text = null
|
||||||
) {
|
) {
|
||||||
if (isset($this->text, $destination)) {
|
if (isset($this->text, $destination)) {
|
||||||
// Быстрая отправка
|
// Быстрая отправка
|
||||||
|
@ -106,15 +106,15 @@ final class messages extends method
|
||||||
/**
|
/**
|
||||||
* Отправить сообщение
|
* Отправить сообщение
|
||||||
*
|
*
|
||||||
* @param int|string|array $destination Получатель
|
|
||||||
*
|
|
||||||
* @see https://vk.com/dev/messages.send
|
* @see https://vk.com/dev/messages.send
|
||||||
*
|
*
|
||||||
* @return array Ответ сервера
|
* @param int|string|array|null $destination Получатель
|
||||||
|
*
|
||||||
|
* @return int|array Идентификатор успешно отправленного сообщения или ответ сервера (подразумевается ошибка)
|
||||||
*
|
*
|
||||||
* @todo Написать обработчик ошибок возвращаемых ВКонтакте
|
* @todo Написать обработчик ошибок возвращаемых ВКонтакте
|
||||||
*/
|
*/
|
||||||
public function send(int|string|array $destination): array
|
public function send(int|string|array|null $destination): int|array
|
||||||
{
|
{
|
||||||
// Идентификатор
|
// Идентификатор
|
||||||
$random_id = time();
|
$random_id = time();
|
||||||
|
@ -128,29 +128,32 @@ final class messages extends method
|
||||||
$this->robot->api->reinit();
|
$this->robot->api->reinit();
|
||||||
|
|
||||||
// Цель отправки
|
// Цель отправки
|
||||||
$this->robot->api->chooseDestination($destination);
|
$this->robot->api->destination($destination);
|
||||||
|
|
||||||
// Идентификатор сообщения
|
// Инициализация идентификатора (защита от повторных отправок) в настройках API
|
||||||
$this->robot->api['random_id'] = $random_id;
|
$this->robot->api['random_id'] = $random_id;
|
||||||
|
|
||||||
// Текст
|
// Инициализация текста в настройках API
|
||||||
$this->robot->api['message'] = $this->text;
|
$this->robot->api['message'] = $this->text;
|
||||||
|
|
||||||
// Пересылаемые сообщения
|
// Пересылаемые сообщения
|
||||||
if (!empty($this->forwardMessages)) {
|
if (!empty($this->forwardMessages)) {
|
||||||
|
|
||||||
|
// Инициализация пересылаемых сообщений в настройках API
|
||||||
$this->robot->api['forward_messages'] = implode(',', $this->forwardMessages);
|
$this->robot->api['forward_messages'] = implode(',', $this->forwardMessages);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ответные сообщения
|
// Ответные сообщения
|
||||||
if (isset($this->ReplyMessage)) {
|
if (isset($this->ReplyMessage)) {
|
||||||
|
|
||||||
|
// Инициализация идентификатора сообщения на которое обрабатывается ответ в настройках API
|
||||||
$this->robot->api['reply_to'] = $this->ReplyMessage;
|
$this->robot->api['reply_to'] = $this->ReplyMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Вложения
|
// Вложения
|
||||||
if ( isset($this->data) && $this->__get('data') !== []) { // !empty($this->data->data) почемуто не работает
|
if (isset($this->data) && $this->__get('data') !== []) { // !empty($this->data->data) почемуто не работает
|
||||||
|
|
||||||
|
// Инициализация вложений в настройках API
|
||||||
$this->robot->api['attachment'] = implode(',', $this->__get('data'));
|
$this->robot->api['attachment'] = implode(',', $this->__get('data'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,12 +4,12 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace mirzaev\vk\api;
|
namespace mirzaev\vk\api;
|
||||||
|
|
||||||
use mirzaev\vk\robots\robot;
|
|
||||||
|
|
||||||
use Throwable;
|
use Throwable;
|
||||||
use Exception;
|
use Exception;
|
||||||
use ArrayAccess;
|
use ArrayAccess;
|
||||||
|
|
||||||
|
use mirzaev\vk\robots\robot;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Настройки соединения с API
|
* Настройки соединения с API
|
||||||
*
|
*
|
||||||
|
@ -79,19 +79,52 @@ class settings implements ArrayAccess
|
||||||
/**
|
/**
|
||||||
* Реинициализация
|
* Реинициализация
|
||||||
*
|
*
|
||||||
* @var float $version Версия API (переопределять не рекомендуется)
|
* @param bool $purge Полная очистка
|
||||||
*/
|
*/
|
||||||
public function reinit(string $version = null): self
|
public function reinit(bool $purge = false): self
|
||||||
{
|
{
|
||||||
// Буфер
|
// Реинициализация
|
||||||
$version = $version ?? $this->settings['v'] ?? null;
|
|
||||||
|
|
||||||
// Деинициализация
|
|
||||||
$this->settings = [];
|
|
||||||
|
|
||||||
// Инициализация
|
|
||||||
try {
|
try {
|
||||||
$this->_init($version);
|
if ($purge) {
|
||||||
|
// Полная очистка
|
||||||
|
|
||||||
|
// Очистка
|
||||||
|
$this->settings = [];
|
||||||
|
} else {
|
||||||
|
// Инициализация буфера
|
||||||
|
$buffer = [];
|
||||||
|
|
||||||
|
if (isset($this->settings['v'])) {
|
||||||
|
// Найдена версия API (подразумевается использование робота-группы)
|
||||||
|
|
||||||
|
// Запись в буфер
|
||||||
|
$buffer['v'] = $this->settings['v'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($this->settings['access_token'])) {
|
||||||
|
// Найден ключ группы (подразумевается использование робота-группы)
|
||||||
|
|
||||||
|
// Запись в буфер
|
||||||
|
$buffer['access_token'] = $this->settings['access_token'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($this->settings['group_id'])) {
|
||||||
|
// Найден идентификатор группы (подразумевается использование робота-группы)
|
||||||
|
|
||||||
|
// Запись в буфер
|
||||||
|
$buffer['group_id'] = $this->settings['group_id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($this->settings['user_id'])) {
|
||||||
|
// Найден идентификатор пользователя (подразумевается использование робота-пользователя)
|
||||||
|
|
||||||
|
// Запись в буфер
|
||||||
|
$buffer['user_id'] = $this->settings['user_id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Перенос данных из буфера
|
||||||
|
$this->settings = $buffer;
|
||||||
|
}
|
||||||
} catch (Throwable $t) {
|
} catch (Throwable $t) {
|
||||||
throw new Exception('Не удалось инициализировать API', 500, $t->getPrevious());
|
throw new Exception('Не удалось инициализировать API', 500, $t->getPrevious());
|
||||||
}
|
}
|
||||||
|
@ -106,9 +139,6 @@ class settings implements ArrayAccess
|
||||||
*/
|
*/
|
||||||
protected function _init(string $version = self::VK_API_VERSION_DEFAULT): self
|
protected function _init(string $version = self::VK_API_VERSION_DEFAULT): self
|
||||||
{
|
{
|
||||||
// Ключ
|
|
||||||
$this->settings['access_token'] = $this->robot->key;
|
|
||||||
|
|
||||||
// Версия API
|
// Версия API
|
||||||
$this->settings['v'] = $version;
|
$this->settings['v'] = $version;
|
||||||
|
|
||||||
|
@ -116,7 +146,7 @@ class settings implements ArrayAccess
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Определить и записать получателя
|
* Инициализация получателя
|
||||||
*
|
*
|
||||||
* @see mirzaev\vk\api\methods\messages Сообщения
|
* @see mirzaev\vk\api\methods\messages Сообщения
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -8,7 +8,7 @@ use mirzaev\vk\robots\robot;
|
||||||
use mirzaev\vk\traits\singleton;
|
use mirzaev\vk\traits\singleton;
|
||||||
use mirzaev\vk\loggers\jasmo;
|
use mirzaev\vk\loggers\jasmo;
|
||||||
|
|
||||||
use Exception;
|
use exception;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ядро
|
* Ядро
|
||||||
|
@ -95,7 +95,7 @@ final class core
|
||||||
// Инициализация уникального идентификатора сессии
|
// Инициализация уникального идентификатора сессии
|
||||||
|
|
||||||
$session = count($this->read($id));
|
$session = count($this->read($id));
|
||||||
} catch (Exception $e) {
|
} catch (exception $e) {
|
||||||
if ($e->getCode() === 404) {
|
if ($e->getCode() === 404) {
|
||||||
// Робота или сессии не существует
|
// Робота или сессии не существует
|
||||||
|
|
||||||
|
@ -139,13 +139,13 @@ final class core
|
||||||
return $this->registry[$id][$session];
|
return $this->registry[$id][$session];
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Exception("Сессия $session робота с идентификатором $id не найдена", 404);
|
throw new exception("Сессия $session робота с идентификатором $id не найдена", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->registry[$id];
|
return $this->registry[$id];
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
throw new Exception("Робот с идентификатором $id не найден", 404);
|
throw new exception("Робот с идентификатором $id не найден", 404);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -185,7 +185,7 @@ final class core
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Exception("Сессия $session робота с идентификатором $id не найдена", 404);
|
throw new exception("Сессия $session робота с идентификатором $id не найдена", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Вычитание из счётчика количества сессий робота
|
// Вычитание из счётчика количества сессий робота
|
||||||
|
@ -197,7 +197,7 @@ final class core
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Exception("Робот с идентификатором $id не найден", 404);
|
throw new exception("Робот с идентификатором $id не найден", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Полная очистка
|
// Полная очистка
|
||||||
|
@ -207,31 +207,32 @@ final class core
|
||||||
/**
|
/**
|
||||||
* Записать свойство
|
* Записать свойство
|
||||||
*
|
*
|
||||||
* @param mixed $name Название
|
* @param string $name Название
|
||||||
* @param mixed $value Значение
|
* @param mixed $value Значение
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function __set(mixed $name, mixed $value): void
|
public function __set(string $name, mixed $value): void
|
||||||
{
|
{
|
||||||
match ($name) {
|
match ($name) {
|
||||||
'timezone' => !isset($this->timezone) ? $this->timezone = $value : throw new Exception('Запрещено переопределять часовой пояс', 500),
|
'timezone' => !isset($this->timezone) ? $this->timezone = $value : throw new exception('Запрещено переопределять часовой пояс', 500),
|
||||||
'path_root' => !isset($this->path_root) ? $this->path_root = $value : throw new Exception('Запрещено переопределять корневой каталог', 500),
|
'path_root' => !isset($this->path_root) ? $this->path_root = $value : throw new exception('Запрещено переопределять корневой каталог', 500),
|
||||||
'path_logs' => !isset($this->path_logs) ? $this->path_logs = $value : throw new Exception('Запрещено переопределять каталог журналов', 500),
|
'path_logs' => !isset($this->path_logs) ? $this->path_logs = $value : throw new exception('Запрещено переопределять каталог журналов', 500),
|
||||||
'path_temp' => !isset($this->path_temp) ? $this->path_temp = $value : throw new Exception('Запрещено переопределять каталог временных файлов', 500)
|
'path_temp' => !isset($this->path_temp) ? $this->path_temp = $value : throw new exception('Запрещено переопределять каталог временных файлов', 500),
|
||||||
|
default => throw new exception("Свойство $name не обнаружено", 404)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Прочитать свойство
|
* Прочитать свойство
|
||||||
*
|
*
|
||||||
* Значение по умолчанию, есле не задано
|
* Записывает значение по умолчанию, если свойство не инициализировано
|
||||||
*
|
*
|
||||||
* @param mixed $name Название
|
* @param mixed $name Название
|
||||||
*
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function __get(mixed $name): mixed
|
public function __get(string $name): mixed
|
||||||
{
|
{
|
||||||
return match ($name) {
|
return match ($name) {
|
||||||
'robots' => $this->robots,
|
'robots' => $this->robots,
|
||||||
|
@ -239,7 +240,7 @@ final class core
|
||||||
'path_root' => $this->path_root ?? $this->path_root = dirname(__DIR__),
|
'path_root' => $this->path_root ?? $this->path_root = dirname(__DIR__),
|
||||||
'path_logs' => $this->path_logs ?? $this->path_logs = $this->__get('path_root') . '/logs',
|
'path_logs' => $this->path_logs ?? $this->path_logs = $this->__get('path_root') . '/logs',
|
||||||
'path_temp' => $this->path_temp ?? $this->path_temp = $this->__get('path_root') . '/temp',
|
'path_temp' => $this->path_temp ?? $this->path_temp = $this->__get('path_root') . '/temp',
|
||||||
default => null
|
default => throw new exception("Свойство \"\$$name\" не обнаружено", 404)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,7 +261,7 @@ final class core
|
||||||
// Если найден класс реализующий запрошенного робота
|
// Если найден класс реализующий запрошенного робота
|
||||||
return new $robot(...$params);
|
return new $robot(...$params);
|
||||||
} else {
|
} else {
|
||||||
throw new Exception("Робот $method не найден", 404);
|
throw new exception("Робот $method не найден", 404);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,18 +4,19 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace mirzaev\vk\robots;
|
namespace mirzaev\vk\robots;
|
||||||
|
|
||||||
|
use Throwable;
|
||||||
|
use Exception;
|
||||||
|
|
||||||
use mirzaev\vk\robots\robot,
|
use mirzaev\vk\robots\robot,
|
||||||
mirzaev\vk\api\settings as api,
|
mirzaev\vk\api\settings as api,
|
||||||
mirzaev\vk\api\longpoll;
|
mirzaev\vk\api\longpoll;
|
||||||
|
|
||||||
use Throwable;
|
|
||||||
use Exception;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Робот-группа
|
* Робот-группа
|
||||||
*
|
*
|
||||||
* @property longpoll $longpoll LongPoll-сессия
|
* @property longpoll $longpoll LongPoll-сессия
|
||||||
*
|
*
|
||||||
|
* @method public function __construct(int|null $id, string|null $key) Конструктор
|
||||||
* @method public function __set($name, $value) Запись свойства
|
* @method public function __set($name, $value) Запись свойства
|
||||||
* @method public function __get($name) Чтение свойства
|
* @method public function __get($name) Чтение свойства
|
||||||
* @method public function __isset($name) Проверка на инициализированность свойства
|
* @method public function __isset($name) Проверка на инициализированность свойства
|
||||||
|
@ -41,7 +42,11 @@ final class group extends robot
|
||||||
protected string|null $key = null
|
protected string|null $key = null
|
||||||
) {
|
) {
|
||||||
parent::__construct($id, $key);
|
parent::__construct($id, $key);
|
||||||
|
|
||||||
|
// Инициализация данных API
|
||||||
|
$this->api['group_id'] = $this->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Запись свойства
|
* Запись свойства
|
||||||
*
|
*
|
||||||
|
|
|
@ -25,8 +25,6 @@ use GuzzleHttp\Client as browser;
|
||||||
* @var api $api API ВКонтакте
|
* @var api $api API ВКонтакте
|
||||||
* @var account $account Аккаунт
|
* @var account $account Аккаунт
|
||||||
* @var browser $browser Браузер
|
* @var browser $browser Браузер
|
||||||
* @var proxy $proxy Прокси
|
|
||||||
* @var captcha $captcha Обработчик капчи
|
|
||||||
*
|
*
|
||||||
* @var int $messages_mode Режим отправки сообщений
|
* @var int $messages_mode Режим отправки сообщений
|
||||||
*
|
*
|
||||||
|
@ -60,6 +58,11 @@ abstract class robot
|
||||||
*/
|
*/
|
||||||
protected int $messages_mode = 1;
|
protected int $messages_mode = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var api API ВКонтакте
|
||||||
|
*/
|
||||||
|
protected api $api;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Конструктор
|
* Конструктор
|
||||||
*
|
*
|
||||||
|
@ -81,21 +84,44 @@ abstract class robot
|
||||||
|
|
||||||
// Идентификация сессии робота
|
// Идентификация сессии робота
|
||||||
$this->session = count($core->read($this->id));
|
$this->session = count($core->read($this->id));
|
||||||
|
|
||||||
|
// Инициализация настроек API
|
||||||
|
$this->api();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Инициализация ключа
|
* Инициализация ключа
|
||||||
*
|
*
|
||||||
* @param string $key Ключ
|
* @param string|null $key Ключ
|
||||||
*
|
*
|
||||||
* @return self
|
* @return string|self Ключ при чтении или инстанцию робота при записи
|
||||||
*/
|
*/
|
||||||
public function key(string $key): self
|
public function key(string|null $key = null): string|self
|
||||||
{
|
{
|
||||||
$this->__set('key', $key);
|
if (isset($key)) {
|
||||||
|
// Ключ передан (подразумевается как запись)
|
||||||
|
|
||||||
return $this;
|
if (isset($this->key)) {
|
||||||
|
// Ключ уже инициализирован
|
||||||
|
|
||||||
|
throw new Exception('Запрещено перезаписывать ключ', 500);
|
||||||
|
} else {
|
||||||
|
// Ключ ещё не инициализирован
|
||||||
|
|
||||||
|
// Запись ключа
|
||||||
|
$this->key = $key;
|
||||||
|
|
||||||
|
// Инициализация данных в настройках API
|
||||||
|
$this->api()['access_token'] = $key;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ключ не передан (подразумевается как чтение)
|
||||||
|
|
||||||
|
return $this->key;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -103,13 +129,47 @@ abstract class robot
|
||||||
*
|
*
|
||||||
* @param account $account Аккаунт
|
* @param account $account Аккаунт
|
||||||
*
|
*
|
||||||
* @return self
|
* @return account|self Аккаунт при чтении или инстанцию робота при записи
|
||||||
*/
|
*/
|
||||||
public function account(account $account): self
|
public function account(account|null $account = null): account|self
|
||||||
{
|
{
|
||||||
$this->__set('account', $account);
|
if (isset($account)) {
|
||||||
|
// Аккаунт передан (подразумевается как запись)
|
||||||
|
|
||||||
return $this;
|
if (isset($this->account)) {
|
||||||
|
// Аккаунт уже инициализирован
|
||||||
|
|
||||||
|
throw new Exception('Запрещено перезаписывать аккаунт', 500);
|
||||||
|
} else {
|
||||||
|
// Аккаунт ещё не инициализирован
|
||||||
|
|
||||||
|
// Запись аккаунта
|
||||||
|
$this->account = $account;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Аккаунт не передан (подразумевается как чтение)
|
||||||
|
|
||||||
|
return $this->account;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Инициализация API
|
||||||
|
*
|
||||||
|
* @return api Инстанция настроек API
|
||||||
|
*/
|
||||||
|
public function api(): api
|
||||||
|
{
|
||||||
|
if (!isset($this->api)) {
|
||||||
|
// Настройки API ещё не инициализированы
|
||||||
|
|
||||||
|
// Запись инстанции настроек API
|
||||||
|
$this->api = new api($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->api;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -125,9 +185,9 @@ abstract class robot
|
||||||
match ($name) {
|
match ($name) {
|
||||||
'id' => isset($this->id) ? throw new Exception('Запрещено перезаписывать идентификатор', 500) : $this->id = (int) $value,
|
'id' => isset($this->id) ? throw new Exception('Запрещено перезаписывать идентификатор', 500) : $this->id = (int) $value,
|
||||||
'session' => isset($this->session) ? throw new Exception('Запрещено перезаписывать сессию', 500) : $this->session = (int) $value,
|
'session' => isset($this->session) ? throw new Exception('Запрещено перезаписывать сессию', 500) : $this->session = (int) $value,
|
||||||
'key' => isset($this->key) ? throw new Exception('Запрещено перезаписывать ключ', 500) : $this->key = (string) $value,
|
'key' => $this->key((string) $value),
|
||||||
'api' => isset($this->api) ? throw new Exception('Запрещено перезаписывать API', 500) : $this->api = $value,
|
'account' => $this->account($value),
|
||||||
'account' => isset($this->account) ? throw new Exception('Запрещено перезаписывать аккаунт', 500) : $this->account = $value,
|
'api' => $this->api(),
|
||||||
'browser' => isset($this->browser) ? throw new Exception('Запрещено перезаписывать браузер', 500) : $this->browser = $value,
|
'browser' => isset($this->browser) ? throw new Exception('Запрещено перезаписывать браузер', 500) : $this->browser = $value,
|
||||||
'messages_new' => $this->messages_new = (int) $value,
|
'messages_new' => $this->messages_new = (int) $value,
|
||||||
default => throw new Exception("Свойство $name не найдено", 404)
|
default => throw new Exception("Свойство $name не найдено", 404)
|
||||||
|
@ -146,9 +206,9 @@ abstract class robot
|
||||||
return match ($name) {
|
return match ($name) {
|
||||||
'id' => $this->id ?? throw new Exception('Идентификатор не инициализирован', 500),
|
'id' => $this->id ?? throw new Exception('Идентификатор не инициализирован', 500),
|
||||||
'session' => $this->session ?? throw new Exception('Сессия не инициализирована', 500),
|
'session' => $this->session ?? throw new Exception('Сессия не инициализирована', 500),
|
||||||
'key' => $this->key ?? throw new Exception('Ключ не инициализирован', 500),
|
'key' => $this->key(),
|
||||||
'api' => $this->api ?? $this->api = new api($this),
|
'account' => $this->account(),
|
||||||
'account' => $this->account ?? throw new Exception('Аккаунт не инициализирован', 500),
|
'api' => $this->api(),
|
||||||
'browser' => $this->browser ?? $this->browser = new browser([
|
'browser' => $this->browser ?? $this->browser = new browser([
|
||||||
'base_uri' => 'https://api.vk.com/method/',
|
'base_uri' => 'https://api.vk.com/method/',
|
||||||
'cookies' => true
|
'cookies' => true
|
||||||
|
|
|
@ -16,19 +16,42 @@ use mirzaev\accounts\vk as account;
|
||||||
*/
|
*/
|
||||||
final class user extends robot
|
final class user extends robot
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Конструктор
|
||||||
|
*
|
||||||
|
* @param int|null $id Идентификатор
|
||||||
|
* @param string|null $key Ключ
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
protected int|null $id = null,
|
||||||
|
protected string|null $key = null
|
||||||
|
) {
|
||||||
|
parent::__construct($id, $key);
|
||||||
|
|
||||||
|
// Инициализация данных API
|
||||||
|
$this->api['user_id'] = $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Инициализация аккаунта
|
* Инициализация аккаунта
|
||||||
*
|
*
|
||||||
* @param account $account Аккаунт
|
* @param account $account Аккаунт
|
||||||
*
|
*
|
||||||
* @return self
|
* @return account|self Аккаунт при чтении или инстанцию робота при записи
|
||||||
*/
|
*/
|
||||||
public function account(account $account): self
|
public function account(account|null $account = null): account|self
|
||||||
{
|
{
|
||||||
parent::account($account);
|
if (isset($account)) {
|
||||||
|
// Передан аккаунт
|
||||||
|
|
||||||
$this->key = $account->key;
|
if (isset($account->key)) {
|
||||||
|
// Ключ инициализирован
|
||||||
|
|
||||||
return $this;
|
// Инициализация данных в настройках API
|
||||||
|
$this->api()['access_token'] = $account->key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent::account($account);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue