@ -64,6 +64,16 @@ final class messages extends method
*/
*/
protected random_id $generate_mode = random_id :: crypto ;
protected random_id $generate_mode = random_id :: crypto ;
/**
* @ var int | string | array | null $peer_id Получатель
*/
protected int | string | array | null $peer_id = null ;
/**
* @ var string | null $text Текст
*/
protected string | null $text = null ;
/**
/**
* @ var ? int $lat Географическая ширина
* @ var ? int $lat Географическая ширина
*/
*/
@ -110,78 +120,389 @@ final class messages extends method
protected ? string $intent = null ;
protected ? string $intent = null ;
/**
/**
* @ var ? string $subscribe_id Число , которое будет использоваться для работы с интентами
* @ var ? int $subscribe_id Число , которое будет использоваться для работы с интентами
*/
*/
protected ? int $subscribe_id = null ;
protected ? int $subscribe_id = null ;
/**
* @ var ? int $offset Смещение для выбора сообщений
*/
protected ? int $offset = null ;
/**
* @ var ? int $count Количество выбираемых сообщений
*/
protected ? int $count = null ;
/**
* @ var ? int $start_message_id Идентификатор сообщения от которого начнётся выборка
*/
protected ? int $start_message_id = null ;
/**
* @ var bool $rev Получить сообщения в хронологичном порядке ? ( иначе в обратном )
*/
protected bool $rev = false ;
/**
* @ var bool $extended Получить расширенную информацию о б авторах сообщений ?
*/
protected bool $extended = false ;
/**
* @ var ? array $fields Дополнительные запрашиваемые поля ( для $extended )
*/
protected ? array $fields = null ;
/**
/**
* Конструктор
* Конструктор
*
*
* @ param robot $robot Робот
* @ param robot $robot Робот
* @ param int | string | array | null $receiver Получатель
* @ param string | null $text Текст
*/
*/
public function __construct (
public function __construct ( protected robot $robot , mixed ... $properties )
protected robot $robot ,
{
int | string | array | null $receiver = null ,
protected string | null $text = null
) {
if ( isset ( $this -> text , $receiver )) {
// Быстрая отправка
// Быстрая отправка
if ( ! empty ( $properties )) $this -> send ( ... $properties );
$this -> send ( $receiver );
}
}
}
/**
/**
* Записать текст
* Записать : режим отправки сообщений
*
*
* @ param string $text Текст
* @ param message_send $send_mode Режим отправки сообщений
*
* @ return static
*/
*/
public function text ( string $text ) : self
public function send_mode( message_send $send_mode ) : static
{
{
// Записать текст
// Запись в свойство
if ( ! isset ( $this -> text )) {
$this -> __set ( 'send_mode' , $send_mode );
$this -> text = $text ;
} else {
$this -> text .= $text ;
}
return $this ;
return $this ;
}
}
/**
/**
* Записать сообщения для пересылки
* Записать : режим генерации идентификатора сессии доставки сообщения
*
*
* @ param $ids Идентификаторы сообщений
* @ param random_id $generate_mode Режим генерации идентификатора сессии доставки сообщения
*
* @ return static
*/
*/
public function forward ( ... $ids ) : self
public function generate_mode( random_id $generate_mode ) : static
{
{
// Запись
// Запись в свойство
$this -> forward = array_merge ( $this -> forward ? ? [], $ids );
$this -> __set( 'generate_mode' , $generate_mode );
return $this ;
return $this ;
}
}
/**
/**
* Записать сообщение для ответа
* Записать : получатель
*
*
* @ param $id Идентификатор сообщения
* @ param int | string | array | null $peer_id Получатель
*
* @ return static
*/
*/
public function reply ( int $id ) : self
public function peer_id( int | string | array | null $peer_id ) : static
{
{
// Запись
// Запись в свойство
$this -> reply = $id ;
$this -> __set( 'peer_id' , $peer_id ) ;
return $this ;
return $this ;
}
}
/**
* Записать : текст
*
* @ param string | null $text Текст
*
* @ return static
*/
public function text ( string | null $text ) : static
{
// Запись в свойство
$this -> __set ( 'text' , $text );
return $this ;
}
/**
* Записать : географическая ширина
*
* @ param ? int $lat Географическая ширина
*
* @ return static
*/
public function lat ( ? int $lat ) : static
{
// Запись в свойство
$this -> __set ( 'lat' , $lat );
return $this ;
}
/**
* Записать : географическая долгота
*
* @ param ? int $long Географическая долгота
*
* @ return static
*/
public function long ( ? int $long ) : static
{
// Запись в свойство
$this -> __set ( 'long' , $long );
return $this ;
}
/**
* Записать : идентификатор сообщения , на которое требуется ответить
*
* @ param ? int $reply_to Идентификатор сообщения , на которое требуется ответить
*
* @ return static
*/
public function reply_to ( ? int $reply_to ) : static
{
// Запись в свойство
$this -> __set ( 'reply_to' , $reply_to );
return $this ;
}
/**
* Записать : идентификаторы пересылаемых сообщений
*
* @ param ? array $forward_messages Идентификаторы пересылаемых сообщений
*
* @ return static
*/
public function forward_messages ( ? array $forward_messages ) : static
{
// Запись в свойство
$this -> __set ( 'forward_messages' , $forward_messages );
return $this ;
}
/**
* Записать : идентификаторы пересылаемых сообщений
*
* @ param ? array $forward Идентификаторы пересылаемых сообщений
*
* @ return static
*/
public function forward ( ? array $forward ) : static
{
// Запись в свойство
$this -> __set ( 'forward_messages' , $forward );
return $this ;
}
/**
* Записать : идентификатор стикера
*
* @ param ? string $sticker_id Идентификатор стикера
*
* @ return static
*/
public function sticker_id ( ? string $sticker_id ) : static
{
// Запись в свойство
$this -> __set ( 'sticker_id' , $sticker_id );
return $this ;
}
/**
* Записать : полезная нагрузка
*
* @ param ? string $payload Полезная нагрузка
*
* @ return static
*/
public function payload ( ? string $payload ) : static
{
// Запись в свойство
$this -> __set ( 'payload' , $payload );
return $this ;
}
/**
* Записать : не создавать представление ссылки в сообщении ?
*
* @ param bool $dont_parse_links Н е создавать представление ссылки в сообщении ?
*
* @ return static
*/
public function dont_parse_links ( bool $dont_parse_links ) : static
{
// Запись в свойство
$this -> __set ( 'dont_parse_links' , $dont_parse_links );
return $this ;
}
/**
* Записать : отключить уведомление о б упоминании в сообщении ?
*
* @ param bool $disable_mentions Отключить уведомление о б упоминании в сообщении ?
*
* @ return static
*/
public function disable_mentions ( bool $disable_mentions ) : static
{
// Запись в свойство
$this -> __set ( 'disable_mentions' , $disable_mentions );
return $this ;
}
/**
* Записать : интент
*
* @ param ? string $intent Интент
*
* @ return static
*/
public function intent ( ? string $intent ) : static
{
// Запись в свойство
$this -> __set ( 'intent' , $intent );
return $this ;
}
/**
* Записать : число , которое будет использоваться для работы с интентами
*
* @ param ? int $subscribe_id Число , которое будет использоваться для работы с интентами
*
* @ return static
*/
public function subscribe_id ( ? int $subscribe_id ) : static
{
// Запись в свойство
$this -> __set ( 'subscribe_id' , $subscribe_id );
return $this ;
}
/**
* Записать : смещение для выбора сообщений
*
* @ param ? int $offset Смещение для выбора сообщений
*
* @ return static
*/
public function offset ( ? int $offset ) : static
{
// Запись в свойство
$this -> __set ( 'offset' , $offset );
return $this ;
}
/**
* Записать : количество выбираемых сообщений
*
* @ param ? int $count Количество выбираемых сообщений
*
* @ return static
*/
public function count ( ? int $count ) : static
{
// Запись в свойство
$this -> __set ( 'count' , $count );
return $this ;
}
/**
* Записать : идентификатор сообщения от которого начнётся выборка
*
* @ param ? int $start_message_id Идентификатор сообщения от которого начнётся выборка
*
* @ return static
*/
public function start_message_id ( ? int $start_message_id ) : static
{
// Запись в свойство
$this -> __set ( 'start_message_id' , $start_message_id );
return $this ;
}
/**
* Записать : получить сообщения в хронологичном порядке ?
*
* @ param bool $rev Получить сообщения в хронологичном порядке ? ( иначе в обратном )
*
* @ return static
*/
public function rev ( bool $rev ) : static
{
// Запись в свойство
$this -> __set ( 'rev' , $rev );
return $this ;
}
/**
* Записать : получить расширенную информацию о б авторах сообщений ?
*
* @ param bool $extended Получить расширенную информацию о б авторах сообщений ?
*
* @ return static
*/
public function extended ( bool $extended ) : static
{
// Запись в свойство
$this -> __set ( 'extended' , $extended );
return $this ;
}
/**
* Записать : дополнительные запрашиваемые поля
*
* @ param ? array $fields Дополнительные запрашиваемые поля ( для static :: $extended )
*
* @ return static
*/
public function fields ( ? array $fields ) : static
{
// Запись в свойство
$this -> __set ( 'fields' , $fields );
return $this ;
}
/**
* Инициализировать получателя
*
* Записывает получателя в буфер API робота
*
* @ param int | string | array | null $peer_id Получатель ( группа , чат , пользователь и пользователи )
*
* @ return void
*/
public function receiver ( int | string | array | null $peer_id = null ) : void
{
if ( isset ( $peer_id )) $this -> peer_id = $peer_id ;
if ( is_int ( $this -> peer_id )) ( $id = $this -> peer_id - 2000000000 ) > 0 ? $this -> robot -> api [ 'peer_id' ] = $this -> peer_id : $this -> robot -> api [ 'chat_id' ] = $id ;
else if ( is_array ( $this -> peer_id )) $this -> robot -> api [ 'peer_ids' ] = implode ( ',' , $this -> peer_id );
else if ( is_string ( $this -> peer_id )) $this -> robot -> api [ 'domain' ] = $this -> peer_id ;
}
/**
/**
* Отправить сообщение
* Отправить сообщение
*
*
* @ see https :// vk . com / dev / messages . send
* @ see https :// dev. vk. com / metho d/ messages . send
*
*
* @ param int | string | null $receiver Получатель
* @ param int | string | null $ peer_id Получатель ( группа , чат , пользователь и пользователи )
* @ param ? string $message Сообщение
* @ param ? string $message Сообщение
* @ param ? int $lat Географическая ширина
* @ param ? int $lat Географическая ширина
* @ param ? int $long Географическая долгота
* @ param ? int $long Географическая долгота
@ -209,7 +530,7 @@ final class messages extends method
* 5. Добавить content_source
* 5. Добавить content_source
*/
*/
public function send (
public function send (
int | string | null $ receiver ,
int | string | null $ peer_id = null ,
? string $message = null ,
? string $message = null ,
? int $lat = null ,
? int $lat = null ,
? int $long = null ,
? int $long = null ,
@ -231,9 +552,7 @@ final class messages extends method
$this -> robot -> api -> reinit ();
$this -> robot -> api -> reinit ();
// Инициализация получателя
// Инициализация получателя
if ( is_int ( $receiver )) ( $id = $receiver - 2000000000 ) > 0 ? $this -> robot -> api [ 'peer_id' ] = $receiver : $this -> robot -> api [ 'chat_id' ] = $id ;
$this -> receiver ( $peer_id );
else if ( is_array ( $receiver )) $this -> robot -> api [ 'peer_ids' ] = implode ( ',' , $receiver );
else if ( is_string ( $receiver )) $this -> robot -> api [ 'domain' ] = $receiver ;
// Инициализация идентификатора сессии доставки сообщения (защита от повторных отправок)
// Инициализация идентификатора сессии доставки сообщения (защита от повторных отправок)
$this -> robot -> api [ 'random_id' ] = $random_id ? ? match ( $this -> generate_mode ) {
$this -> robot -> api [ 'random_id' ] = $random_id ? ? match ( $this -> generate_mode ) {
@ -244,55 +563,43 @@ final class messages extends method
};
};
// Инициализация текста в настройках API
// Инициализация текста в настройках API
if ( isset ( $message )) $this -> robot -> api [ 'message' ] = $message ;
if ( ! empty ( $message ? ? = $this -> text )) $this -> robot -> api [ 'message' ] = $message ;
else if ( isset ( $this -> text )) $this -> robot -> api [ 'message' ] = $this -> text ;
// Инициализация широты
// Инициализация широты
if ( isset ( $lat )) $this -> robot -> api [ 'lat' ] = $lat ;
if ( ! empty ( $lat ? ? = $this -> lat )) $this -> robot -> api [ 'lat' ] = $lat ;
else if ( isset ( $this -> lat )) $this -> robot -> api [ 'lat' ] = $this -> lat ;
// Инициализация долготы
// Инициализация долготы
if ( isset ( $long )) $this -> robot -> api [ 'long' ] = $long ;
if ( ! empty ( $long ? ? = $this -> long )) $this -> robot -> api [ 'long' ] = $long ;
else if ( isset ( $this -> long )) $this -> robot -> api [ 'long' ] = $this -> tlongext ;
// Инициализация вложений
// Инициализация вложений
if ( isset ( $attachments )) $this -> robot -> api [ 'attachment' ] = implode ( ',' , $attachments );
if ( ! empty ( $attachments ? ? = $this -> robot -> api -> data )) $this -> robot -> api [ 'attachment' ] = implode ( ',' , $attachments );
else if ( isset ( $this -> robot -> api -> data ) && $this -> robot -> api -> __get ( 'data' ) !== []) $this -> robot -> api [ 'attachment' ] = implode ( ',' , $this -> robot -> api -> __get ( 'data' ));
// Инициализация сообщения, на которое требуется ответить
// Инициализация сообщения, на которое требуется ответить
if ( isset ( $reply_to )) $this -> robot -> api [ 'reply_to' ] = $reply_to ;
if ( ! empty ( $reply_to ? ? = $this -> reply_to )) $this -> robot -> api [ 'reply_to' ] = $reply_to ;
else if ( isset ( $this -> reply )) $this -> robot -> api [ 'reply_to' ] = $this -> reply ;
// Инициализация пересылаемых сообщений
// Инициализация пересылаемых сообщений
if ( isset ( $forward_messages )) $this -> robot -> api [ 'forward_messages' ] = implode ( ',' , $forward_messages );
if ( ! empty ( $forward_messages ? ? = $this -> forward_messages )) $this -> robot -> api [ 'forward_messages' ] = implode ( ',' , $forward_messages );
else if ( isset ( $this -> forward_messages )) $this -> robot -> api [ 'forward_messages' ] = implode ( ',' , $this -> forward_messages );
// Инициализация стикера
// Инициализация стикера
if ( isset ( $sticker_id )) $this -> robot -> api [ 'sticker_id' ] = $sticker_id ;
if ( ! empty ( $sticker_id ? ? = $this -> sticker_id )) $this -> robot -> api [ 'sticker_id' ] = $sticker_id ;
else if ( isset ( $this -> sticker_id )) $this -> robot -> api [ 'sticker_id' ] = $this -> sticker_id ;
// Инициализация полезной нагрузки
// Инициализация полезной нагрузки
if ( isset ( $payload )) $this -> robot -> api [ 'payload' ] = $payload ;
if ( ! empty ( $payload ? ? = $this -> payload )) $this -> robot -> api [ 'payload' ] = $payload ;
else if ( isset ( $this -> payload )) $this -> robot -> api [ 'payload' ] = $this -> payload ;
// Инициализация пользовательского соглашения
// Инициализация пользовательского соглашения
// $this->robot->api['content_source'] = $this->robot->content_source;
// $this->robot->api['content_source'] = $this->robot->content_source;
// Инициализация "не создавать представление ссылки в сообщении?"
// Инициализация "не создавать представление ссылки в сообщении?"
if ( $dont_parse_links ) $this -> robot -> api [ 'dont_parse_links' ] = 1 ;
if ( $dont_parse_links || $this -> dont_parse_links ) $this -> robot -> api [ 'dont_parse_links' ] = 1 ;
else if ( $this -> dont_parse_links ) $this -> robot -> api [ 'dont_parse_links' ] = 1 ;
// Инициализация "отключить уведомление о б упоминании в сообщении?"
// Инициализация "отключить уведомление о б упоминании в сообщении?"
if ( $disable_mentions ) $this -> robot -> api [ 'disable_mentions' ] = 1 ;
if ( $disable_mentions || $this -> disable_mentions ) $this -> robot -> api [ 'disable_mentions' ] = 1 ;
else if ( $this -> disable_mentions ) $this -> robot -> api [ 'disable_mentions' ] = 1 ;
// Инициализация интентов
// Инициализация интентов
if ( isset ( $intent )) $this -> robot -> api [ 'intent' ] = $intent ;
if ( ! empty ( $intent ? ? = $this -> intent )) $this -> robot -> api [ 'intent' ] = $intent ;
else if ( isset ( $this -> intent )) $this -> robot -> api [ 'intent' ] = $this -> intent ;
// Инициализация числа, которое будет использоваться для работы с интентами
// Инициализация числа, которое будет использоваться для работы с интентами
if ( isset ( $subscribe_id )) $this -> robot -> api [ 'subscribe_id' ] = $subscribe_id ;
if ( ! empty ( $subscribe_id ? ? = $this -> subscribe_id )) $this -> robot -> api [ 'subscribe_id' ] = $subscribe_id ;
else if ( isset ( $this -> subscribe_id )) $this -> robot -> api [ 'subscribe_id' ] = $this -> subscribe_id ;
// Проверка сформированного сообщения
// Проверка сформированного сообщения
if ( ! $this -> robot -> api -> offsetExists ( 'message' ) && ! $this -> robot -> api -> offsetExists ( 'attachment' )) throw new Exception ( 'Сообщение должно содержать текст, либо вложение' );
if ( ! $this -> robot -> api -> offsetExists ( 'message' ) && ! $this -> robot -> api -> offsetExists ( 'attachment' )) throw new Exception ( 'Сообщение должно содержать текст, либо вложение' );
@ -300,10 +607,8 @@ final class messages extends method
// Запрос
// Запрос
$request = json_decode ( $this -> robot -> browser -> request ( 'POST' , 'messages.send' , [ 'form_params' => $this -> robot -> api -> settings ]) -> getBody () -> getContents ());
$request = json_decode ( $this -> robot -> browser -> request ( 'POST' , 'messages.send' , [ 'form_params' => $this -> robot -> api -> settings ]) -> getBody () -> getContents ());
// Если в ответе ошибка
// Проверка на наличие ошибок в ответе от ВКонтакте
if ( isset ( $request -> error )) {
if ( isset ( $request -> error )) throw new Exception ( 'ВКонтакте: ' . $request -> error -> error_msg , $request -> error -> error_code );
throw new Exception ( 'ВКонтакте: ' . $request -> error -> error_msg , $request -> error -> error_code );
}
if ( $this -> send_mode === message_send :: check ) {
if ( $this -> send_mode === message_send :: check ) {
// Надёжная доставка сообщения
// Надёжная доставка сообщения
@ -324,7 +629,7 @@ final class messages extends method
//!!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!
// Повторная отправка
// Повторная отправка
$this -> send ( $receiver );
$this -> send ( );
}
}
} else {
} else {
}
}
@ -336,7 +641,7 @@ final class messages extends method
/**
/**
* Удалить сообщение
* Удалить сообщение
*
*
* @ see https :// vk. com / dev / messages . delete
* @ see https :// dev. vk. com / metho d/ messages . delete
*
*
* @ param int | string | array | null $messages Получатель ( message_ids + cmids )
* @ param int | string | array | null $messages Получатель ( message_ids + cmids )
* @ param int | string | null $peer_id Идентификатор беседы
* @ param int | string | null $peer_id Идентификатор беседы
@ -345,7 +650,9 @@ final class messages extends method
*
*
* @ return int | array Идентификатор успешно отправленного сообщения или ответ сервера ( подразумевается ошибка )
* @ return int | array Идентификатор успешно отправленного сообщения или ответ сервера ( подразумевается ошибка )
*
*
* @ todo Написать обработчик ошибок возвращаемых ВКонтакте
* @ todo
* 1. Переделать под новую версию
* 2. Написать обработчик ошибок возвращаемых ВКонтакте
*/
*/
public function delete ( string | int | array | null $messages = null , int | string | null $peer_id = null , bool $spam = false , bool $delete_for_all = false ) : stdClass
public function delete ( string | int | array | null $messages = null , int | string | null $peer_id = null , bool $spam = false , bool $delete_for_all = false ) : stdClass
{
{
@ -386,49 +693,16 @@ final class messages extends method
return $request -> response ;
return $request -> response ;
}
}
/**
* Записать свойство
*
* @ param string $name Название
* @ param mixed $value Значение
*
* @ return void
*/
public function __set ( string $name , mixed $value ) : void
{
match ( $name ) {
default => throw new Exception ( " Свойство $name не найдено " , 404 )
};
}
/**
* Прочитать свойство
*
* @ param string $name Название
*
* @ return mixed
*/
public function __get ( string $name ) : mixed
{
return match ( $name ) {
'text' => $this -> text ? ? throw new Exception ( 'Текст не инициализирован' ),
'forward' => empty ( $this -> forward ) ? throw new Exception ( 'Сообщения для пересылки не инициализированы' ) : $this -> forward ,
'reply' => isset ( $this -> reply ) ? $this -> reply : throw new Exception ( 'Сообщение для ответа не инициализировано' ),
default => throw new Exception ( " Свойство $name не найдено " , 404 )
};
}
/**
/**
* Получить информацию о сообщении по id
* Получить информацию о сообщении по id
*
*
* @ param string $message_ids Идентификатор сообщения
* @ param string $message_ids Идентификатор сообщения
*
*
* @ return object Информация о сообщении
* @ return object Информация о сообщении
*
* @ todo
* 1. Доделать , а лучше полностью переделать
*/
*/
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// доделать
public function getById ( int $message_ids ) : object
public function getById ( int $message_ids ) : object
{
{
// Реиницилазиция
// Реиницилазиция
@ -448,11 +722,153 @@ final class messages extends method
// Запрос
// Запрос
$request = json_decode (( $this -> robot -> browser -> request ( 'POST' , 'messages.getById' , [ 'form_params' => $this -> robot -> api -> settings ]) -> getBody () -> getContents ()));
$request = json_decode (( $this -> robot -> browser -> request ( 'POST' , 'messages.getById' , [ 'form_params' => $this -> robot -> api -> settings ]) -> getBody () -> getContents ()));
// Если в ответе ошибка
// Проверка на наличие ошибок в ответе от ВКонтакте
if ( isset ( $request -> error )) {
if ( isset ( $request -> error )) throw new Exception ( 'ВКонтакте: ' . $request -> error -> error_msg , $request -> error -> error_code );
throw new Exception ( 'Вконтакте: ' . $request -> error -> error_msg , $request -> error -> error_code );
}
return $request -> response ;
return $request -> response ;
}
}
/**
* Получить историю сообщений
*
* @ see https :// dev . vk . com / method / messages . getHistory
*
* @ param ? int $offset Смещение для выбора сообщений
* @ param ? int $count Количество выбираемых сообщений
* @ param int | string | null $peer_id Получатель ( группа , чат , пользователь и пользователи )
* @ param ? int $start_message_id Идентификатор сообщения от которого начнётся выборка
* @ param bool $rev Получить сообщения в хронологичном порядке ? ( иначе в обратном )
* @ param bool $extended Получить расширенную информацию о б авторах сообщений ?
* @ param ? array $fields Дополнительные запрашиваемые поля ( для $extended )
*
* @ return int | array Идентификатор успешно отправленного сообщения или ответ сервера ( подразумевается ошибка )
*
* @ todo Написать обработчик ошибок возвращаемых ВКонтакте
*/
public function getHistory (
? int $offset = null ,
? int $count = null ,
int | string | null $peer_id = null ,
? int $start_message_id = null ,
bool $rev = false ,
bool $extended = false ,
? array $fields = null
) : object {
// Реиницилазиция
$this -> robot -> api -> reinit ();
// Инициализация смещения для выбора сообщений
if ( ! empty ( $offset ? ? = $this -> offset )) $this -> robot -> api [ 'offset' ] = $offset ;
// Инициализация количества выбираемых сообщений
if ( ! empty ( $count ? ? = $this -> count )) $this -> robot -> api [ 'count' ] = $count ;
// Инициализация получателя
$this -> receiver ( $peer_id );
// Инициализация идентификатора сообщения от которого начнётся выборка
if ( ! empty ( $start_message_id ? ? = $this -> start_message_id )) $this -> robot -> api [ 'start_message_id' ] = $start_message_id ;
// Инициализация "получить сообщения в хронологичном порядке?"
if ( $rev || $this -> rev ) $this -> robot -> api [ 'rev' ] = 1 ;
// Инициализация "получить расширенную информацию о б авторах сообщений?"
if ( $extended || $this -> extended ) $this -> robot -> api [ 'extended' ] = 1 ;
if ( ! empty ( $fields ? ? = $this -> fields )) {
// Инициализация дополнительных запрашиваемых полей
// Инициализация значения в буфере запроса к API
$this -> robot -> api [ 'fields' ] = '' ;
foreach ( $fields as $key => $field ) {
// Перебор дополнительных запрашиваемых полей
// Запись в буфер запроса к API
$this -> robot -> api [ 'fields' ] .= $field ;
// Запись разделителя
if ( $key !== array_key_last ( $fields )) $this -> robot -> api [ 'fields' ] .= ', ' ;
}
}
// Запрос
$request = json_decode (( $this -> robot -> browser -> request ( 'POST' , 'messages.getHistory' , [ 'form_params' => $this -> robot -> api -> settings ]) -> getBody () -> getContents ()));
// Проверка на наличие ошибок в ответе от ВКонтакте
if ( isset ( $request -> error )) throw new Exception ( 'ВКонтакте: ' . $request -> error -> error_msg , $request -> error -> error_code );
return $request -> response ;
}
/**
* Записать свойство
*
* @ param string $name Название
* @ param mixed $value Значение
*
* @ return void
*/
public function __set ( string $name , mixed $value ) : void
{
match ( $name ) {
'send_mode' => $this -> send_mode = $value ,
'generate_mode' => $this -> generate_mode = $value ,
'peer_id' , 'destination' => $this -> peer_id = $value ,
'text' => $this -> text = $value ,
'lat' , 'latitude' => $this -> lat = $value ,
'long' , 'longitude' => $this -> long = $value ,
'reply_to' , 'reply' , 'to' => $this -> reply_to = $value ,
'forward_messages' => $this -> forward_messages = $value ,
'sticker_id' , 'sticker' => $this -> sticker_id = $value ,
'payload' => $this -> payload = $value ,
'dont_parse_links' => $this -> dont_parse_links = $value ,
'parse_links' , 'parse' => $this -> dont_parse_links = ! $value ,
'disable_mentions' => $this -> disable_mentions = $value ,
'mentions' => $this -> disable_mentions = ! $value ,
'intent' => $this -> intent = $value ,
'subscribe_id' => $this -> subscribe_id = $value ,
'offset' => $this -> offset = $value ,
'count' , 'amount' => $this -> count = $value ,
'start_message_id' => $this -> start_message_id = $value ,
'rev' => $this -> rev = $value ,
'extended' => $this -> extended = $value ,
'fields' => $this -> fields = $value ,
default => throw new Exception ( " Свойство $name не найдено " , 404 )
};
}
/**
* Прочитать свойство
*
* @ param string $name Название
*
* @ return mixed
*/
public function __get ( string $name ) : mixed
{
return match ( $name ) {
'send_mode' => $this -> send_mode ,
'generate_mode' => $this -> generate_mode ,
'peer_id' , 'destination' => $this -> peer_id ,
'text' => $this -> text ,
'lat' , 'latitude' => $this -> lat ,
'long' , 'longitude' => $this -> long ,
'reply_to' , 'reply' , 'to' => $this -> reply_to ,
'forward_messages' => $this -> forward_messages ,
'sticker_id' , 'sticker' => $this -> sticker_id ,
'payload' => $this -> payload ,
'dont_parse_links' , 'parse_links' , 'parse' => $this -> dont_parse_links ,
'disable_mentions' , 'mentions' => $this -> disable_mentions ,
'intent' => $this -> intent ,
'subscribe_id' => $this -> subscribe_id ,
'offset' => $this -> offset ,
'count' , 'amount' => $this -> count ,
'start_message_id' => $this -> start_message_id ,
'rev' => $this -> rev ,
'extended' => $this -> extended ,
'fields' => $this -> fields ,
default => throw new Exception ( " Свойство $name не найдено " , 404 )
};
}
}
}