Полное изменение enum!

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2022-11-09 01:12:50 +10:00
parent e08f252d5b
commit e670be5816
2 changed files with 19 additions and 23 deletions

View File

@ -15,7 +15,7 @@ use stdClass,
/**
* Режимы отправки сообщений
*/
enum send
enum message_send
{
/** Обычная отправка */
case simple;
@ -27,19 +27,16 @@ enum send
/**
* Режимы генерации идентификатора сессии доставки сообщения
*/
enum generate
enum random_id
{
/** Генерация: time() */
/** Генерация: time() (нельзя отправить более чем 1 сообщение в секунду) */
case date;
/** Генерация: rand() */
case random;
/** Генерация: random_bytes(10) */
/** Генерация: random_int(0, PHP_INT_MAX) */
case crypto;
/** Генерация: sodium_crypto_generichash() */
case hash;
}
/**
@ -58,14 +55,14 @@ enum generate
final class messages extends method
{
/**
* @var send $send_mode Режим отправки сообщений
* @var message_send $send_mode Режим отправки сообщений
*/
protected send $send_mode = send::simple;
protected message_send $send_mode = message_send::simple;
/**
* @var generate $generate_mode Режим генерации идентификатора сессии доставки сообщения
* @var random_id $generate_mode Режим генерации идентификатора сессии доставки сообщения
*/
protected generate $generate_mode = generate::date;
protected random_id $generate_mode = random_id::crypto;
/**
* @var ?int $lat Географическая ширина
@ -200,7 +197,7 @@ final class messages extends method
* @param bool $disable_mentions Отключить уведомление об упоминании в сообщении?
* @param ?string $intent Интент
* @param ?int $subscribe_id Число, которое будет использоваться для работы с интентами
* @param int|string|null $random_id Идентификатор сессии доставки сообщения (защита от повторных отправок)
* @param ?int $random_id Идентификатор сессии доставки сообщения (защита от повторных отправок)
*
* @return int|array Идентификатор успешно отправленного сообщения или ответ сервера (подразумевается ошибка)
*
@ -228,7 +225,7 @@ final class messages extends method
bool $disable_mentions = false,
?string $intent = null,
?int $subscribe_id = null,
int|string|null $random_id = null,
?int $random_id = null,
): int|array {
// Реинициализация настроек
$this->robot->api->reinit();
@ -240,11 +237,10 @@ final class messages extends method
// Инициализация идентификатора сессии доставки сообщения (защита от повторных отправок)
$this->robot->api['random_id'] = $random_id ?? match ($this->generate_mode) {
generate::date => time(),
generate::random => rand(),
generate::crypto => random_bytes(10),
generate::hash => sodium_crypto_generichash(random_bytes(10)),
default => time()
random_id::date => time(),
random_id::random => rand(),
random_id::crypto => random_int(0, PHP_INT_MAX),
default => random_int(0, PHP_INT_MAX)
};
// Инициализация текста в настройках API
@ -309,7 +305,7 @@ final class messages extends method
throw new Exception('ВКонтакте: ' . $request->error->error_msg, $request->error->error_code);
}
if ($this->send_mode === send::check) {
if ($this->send_mode === message_send::check) {
// Надёжная доставка сообщения
if (!empty($request["response"])) {

View File

@ -4,12 +4,12 @@ declare(strict_types=1);
namespace mirzaev\vk\api\methods;
use Exception;
// Файлы проекта
use mirzaev\vk\robots\robot,
mirzaev\vk\robots\group;
use mirzaev\accounts\vk as account;
// Встроенные библиотеки
use Exception;
/**
* Фотографии (изображения)
@ -22,7 +22,7 @@ use mirzaev\accounts\vk as account;
* @package mirzaev\vk\api\methods
* @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy>
*
* @todo Добавить обработку ошибок ($request['errors];)
* @todo Добавить обработку ошибок ($request['errors])
*/
final class photos extends method
{