@@ -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 ( 1 0)),
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 " ])) {