From c7fe3623e748f161365793ef2b294726fe88a82d Mon Sep 17 00:00:00 2001 From: Arsen Mirzaev Tatyano-Muradovich Date: Wed, 11 May 2022 04:31:58 +1000 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=D0=BE=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D1=85=D0=BE=D0=B4=D0=B0=20=D0=BD=D0=B0=20PHP?= =?UTF-8?q?=208.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 4 ++-- mirzaev/vk/system/api/longpoll.php | 5 ++-- mirzaev/vk/system/api/methods/messages.php | 28 +++++++++++++++------- mirzaev/vk/system/core.php | 8 +++---- mirzaev/vk/system/robots/group.php | 4 ++-- mirzaev/vk/system/robots/robot.php | 15 ++++-------- mirzaev/vk/system/robots/user.php | 4 ++-- 7 files changed, 38 insertions(+), 30 deletions(-) diff --git a/composer.json b/composer.json index 63e2c2f..ddb27f8 100644 --- a/composer.json +++ b/composer.json @@ -21,9 +21,9 @@ "issues": "https://git.hood.su/mirzaev/vk/issues" }, "require": { - "php": "~8.0", + "php": "~8.1", "psr/log": "~1.0", - "mirzaev/accounts": "~0.1.x-dev", + "mirzaev/accounts": "~1.2.x-dev", "monolog/monolog": "~1.6", "jasny/error-handler": "~0.2", "guzzlehttp/guzzle": "~7.2" diff --git a/mirzaev/vk/system/api/longpoll.php b/mirzaev/vk/system/api/longpoll.php index 72807a5..3e0cb63 100644 --- a/mirzaev/vk/system/api/longpoll.php +++ b/mirzaev/vk/system/api/longpoll.php @@ -7,7 +7,8 @@ namespace mirzaev\vk\api; use Exception; use mirzaev\vk\core, - mirzaev\vk\robots\robot; + mirzaev\vk\robots\robot, + mirzaev\vk\robots\group; /** * LongPoll @@ -59,7 +60,7 @@ final class longpoll * * $robot Робот */ - public function __construct(private robot $robot) + public function __construct(private robot&group $robot) { // Инициализация if (empty($robot->id)) throw new Exception('Необходимо указать идентификатор ВКонтакте'); diff --git a/mirzaev/vk/system/api/methods/messages.php b/mirzaev/vk/system/api/methods/messages.php index 4cb2833..0e3f943 100644 --- a/mirzaev/vk/system/api/methods/messages.php +++ b/mirzaev/vk/system/api/methods/messages.php @@ -11,6 +11,18 @@ use mirzaev\vk\robots\robot; use mirzaev\vk\api\data; use mirzaev\vk\robots\group; +/** + * Режимы отправки сообщений + */ +enum mode +{ + /** Быстро - случайный идентификатор (умножение на rand()) */ + case random; + + /** Надёжно - проверка отправки (поиск сообщения через messages.getById) */ + case search; +} + /** * Сообщение * @@ -27,9 +39,9 @@ use mirzaev\vk\robots\group; final class messages extends method { /** - * @var int $mode Режим отправки + * @var mode $mode Режим отправки сообщений */ - protected int $mode = 1; + protected mode $mode = mode::random; /** * @var array[int] Сообщения для пересылки @@ -119,8 +131,9 @@ final class messages extends method // Идентификатор $random_id = time(); - if ($this->mode = 1) { - // Перемножение (по умолчанию) + if ($this->mode === mode::random) { + // Быстрая отправка сообщения + $random_id *= rand(); } @@ -130,7 +143,7 @@ final class messages extends method // Цель отправки $this->robot->api->destination($destination); - // Инициализация идентификатора (защита от повторных отправок) в настройках API + // Инициализация идентификатора сообщения (защита от повторных отправок) в настройках API $this->robot->api['random_id'] = $random_id; // Инициализация текста в настройках API @@ -165,8 +178,8 @@ final class messages extends method throw new Exception('Вконтакте: ' . $request->error->error_msg, $request->error->error_code); } - if ($this->mode >= 2) { - // Если установлен режим 2 (усиленная проверка отправленного сообщения) + if ($this->mode === mode::search) { + // Надёжная доставка сообщения if (!empty($request["response"])) { // Ответ получен @@ -177,7 +190,6 @@ final class messages extends method // Запрашиваемые сообщения $this->robot->api['message_ids'] = $request["response"]; - // Запрос if ($this->robot->browser->request('POST', 'messages.getById', ['form_params' => $this->robot->api->settings])['response']['count'] === 0) { // Сообщения не существует //!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/mirzaev/vk/system/core.php b/mirzaev/vk/system/core.php index 495f326..5c68e99 100644 --- a/mirzaev/vk/system/core.php +++ b/mirzaev/vk/system/core.php @@ -45,22 +45,22 @@ final class core * * Используется в логировании */ - private string $timezone; + private readonly string $timezone; /** * Путь до корня проекта */ - private string $path_root; + private readonly string $path_root; /** * Путь до папки журналов */ - private string $path_logs; + private readonly string $path_logs; /** * Путь до временной папки */ - private string $path_temp; + private readonly string $path_temp; /** * Запись в журнал diff --git a/mirzaev/vk/system/robots/group.php b/mirzaev/vk/system/robots/group.php index 1f3e66f..5d525f3 100644 --- a/mirzaev/vk/system/robots/group.php +++ b/mirzaev/vk/system/robots/group.php @@ -38,8 +38,8 @@ final class group extends robot * @param string|null $key Ключ */ public function __construct( - protected int|null $id = null, - protected string|null $key = null + protected readonly int|null $id = null, + protected readonly string|null $key = null ) { parent::__construct($id, $key); diff --git a/mirzaev/vk/system/robots/robot.php b/mirzaev/vk/system/robots/robot.php index aaf9905..200118b 100644 --- a/mirzaev/vk/system/robots/robot.php +++ b/mirzaev/vk/system/robots/robot.php @@ -46,22 +46,17 @@ abstract class robot /** * Сессия */ - protected int $session; + protected readonly int $session; /** * Аккаунт */ - private account $account; - - /** - * $messages_mode Режим отправки сообщений - */ - protected int $messages_mode = 1; + private readonly account $account; /** * @var api API ВКонтакте */ - protected api $api; + protected readonly api $api; /** * Конструктор @@ -70,8 +65,8 @@ abstract class robot * @param string|null $key Ключ */ public function __construct( - protected int|null $id = null, - protected string|null $key = null + protected readonly int|null $id = null, + protected readonly string|null $key = null ) { // Инициализация ядра $core = core::init(); diff --git a/mirzaev/vk/system/robots/user.php b/mirzaev/vk/system/robots/user.php index e3b612b..e59a099 100644 --- a/mirzaev/vk/system/robots/user.php +++ b/mirzaev/vk/system/robots/user.php @@ -23,8 +23,8 @@ final class user extends robot * @param string|null $key Ключ */ public function __construct( - protected int|null $id = null, - protected string|null $key = null + protected readonly int|null $id = null, + protected readonly string|null $key = null ) { parent::__construct($id, $key);