Исправления для сообщений и фото
This commit is contained in:
		| @@ -6,12 +6,11 @@ namespace hood\vk\api; | ||||
|  | ||||
| use Exception; | ||||
| use hood\vk\robots\robot; | ||||
| use ArrayAccess; | ||||
|  | ||||
| /** | ||||
|  * Вложения | ||||
|  */ | ||||
| class data implements ArrayAccess | ||||
| class data | ||||
| { | ||||
|     /** | ||||
|      * @var array $data Вложения | ||||
| @@ -35,7 +34,7 @@ class data implements ArrayAccess | ||||
|      *  | ||||
|      * @return self | ||||
|      */ | ||||
|     public function addData(string ...$data): self | ||||
|     public function addData(...$data): self | ||||
|     { | ||||
|         // Если вложений больше 10 | ||||
|         if (count($this->data) + count($data) > 10) { | ||||
| @@ -73,44 +72,4 @@ class data implements ArrayAccess | ||||
|             default => throw new Exception('Свойство не найдено: ' . $name) | ||||
|         }; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Записать по смещению | ||||
|      */ | ||||
|     public function offsetSet(mixed $offset = null, ...$value): void | ||||
|     { | ||||
|         if ($offset == null) { | ||||
|             $this->addData($value); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Прочитать по смещению | ||||
|      */ | ||||
|     public function offsetGet(mixed $offset = null): mixed | ||||
|     { | ||||
|         if ($offset == 0) { | ||||
|             return $this; | ||||
|         }     | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Проверка существования смещения | ||||
|      */ | ||||
|     public function offsetExists(mixed $offset): bool | ||||
|     { | ||||
|         if ($offset == 'data') { | ||||
|             return empty($this->data); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Удалить по смещению | ||||
|      */ | ||||
|     public function offsetUnset(mixed $offset = null): void | ||||
|     { | ||||
|         if ($offset == null) { | ||||
|             $this->settings = []; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -9,6 +9,7 @@ use Exception; | ||||
| use hood\accounts\vk; | ||||
| use hood\vk\robots\robot; | ||||
| use hood\vk\api\data; | ||||
| use hood\vk\robots\group; | ||||
|  | ||||
| /** | ||||
|  * Сообщение | ||||
| @@ -39,6 +40,16 @@ final class messages extends method | ||||
|      */ | ||||
|     protected data $data; | ||||
|  | ||||
|     /** | ||||
|      * @var array Пересылаемые сообщения | ||||
|      */ | ||||
|     protected array $forwardMessages = []; | ||||
|  | ||||
|     /** | ||||
|      * @var int $ReplyMessage Ответное сообщение | ||||
|      */ | ||||
|     protected int $ReplyMessage; | ||||
|  | ||||
|     /** | ||||
|      * Создать сообщение | ||||
|      * | ||||
| @@ -69,6 +80,36 @@ final class messages extends method | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Записать пересылаемые сообщения | ||||
|      *  | ||||
|      * @param $messageIds id пересылаемых сообщений | ||||
|      *  | ||||
|      * @return self | ||||
|      */ | ||||
|     public function forward(...$messageIds): self | ||||
|     { | ||||
|         // Запись пересылаемых сообщений | ||||
|         $this->forwardMessages = array_merge($this->forwardMessages, $messageIds); | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Записать ответное сообщение | ||||
|      *  | ||||
|      * @param $messageId id ответного сообщения | ||||
|      *  | ||||
|      * @return self | ||||
|      */ | ||||
|     public function reply(int $messageId): self | ||||
|     { | ||||
|         // Запись ответного сообщения | ||||
|         $this->ReplyMessage = $messageId; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Записать фото | ||||
|      * | ||||
| @@ -95,6 +136,8 @@ final class messages extends method | ||||
|      * Записать вложение | ||||
|      * | ||||
|      * @param $attachments Вложения | ||||
|      *  | ||||
|      * @return self | ||||
|      */ | ||||
|     public function attachments(string ...$attachments): self | ||||
|     { | ||||
| @@ -102,7 +145,9 @@ final class messages extends method | ||||
|             // Если вложения инициализированны | ||||
|  | ||||
|             // Записать вложение | ||||
|             $this->data->addData(...$attachments); | ||||
|             foreach ($attachments as $attachment) { | ||||
|                 $this->data->addData($attachment); | ||||
|             } | ||||
|         } else { | ||||
|             // Если вложения не инициализированны | ||||
|  | ||||
| @@ -110,7 +155,9 @@ final class messages extends method | ||||
|             $this->data = new data($this->robot); | ||||
|  | ||||
|             // Записать вложение | ||||
|             $this->data->addData(...$attachments); | ||||
|             foreach ($attachments as $attachment) { | ||||
|                 $this->data->addData($attachment); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
| @@ -142,42 +189,36 @@ final class messages extends method | ||||
|         $this->robot->api->chooseDestination($destination); | ||||
|  | ||||
|         // Идентификатор сообщения | ||||
|         $this->robot->api->random_id = $random_id; | ||||
|         $this->robot->api['random_id'] = $random_id; | ||||
|  | ||||
|         // Текст | ||||
|         $this->robot->api->message = $this->text; | ||||
|         $this->robot->api['message'] = $this->text; | ||||
|  | ||||
|         // Фильтрация вложений, если они инициализированны | ||||
|         if (isset($this->data)) { | ||||
|         // Пересылаемые сообщения | ||||
|         if (!empty($this->forwardMessages)) { | ||||
|  | ||||
|             /* $forward_messages = []; | ||||
|             $attachments = $this->attachment->attachments; //Indirect modification of overloaded property hood\vk\api\attachments::$attachments has no effect | ||||
|             foreach ($attachments as &$attachment) { | ||||
|                 if (iconv_substr($attachment, 0,  7, "UTF-8") === 'message') { | ||||
|             $this->robot->api['forward_messages'] = implode(',', $this->forwardMessages); | ||||
|         } | ||||
|  | ||||
|                     // Если среди вложений найдено сообщение для пересылки | ||||
|                     $forward_messages[] = $attachment; | ||||
|                     unset($attachment); | ||||
|                 } | ||||
|             } */ | ||||
|         // Ответные сообщения | ||||
|         if (isset($this->ReplyMessage)) { | ||||
|  | ||||
|             if (!empty($forward_messages)) { | ||||
|                 // Если есть пересылаемые сообщения | ||||
|                 $this->robot->api['forward_messages'] = implode(',', $forward_messages); | ||||
|             } | ||||
|             $this->robot->api['reply_to'] = $this->ReplyMessage; | ||||
|         } | ||||
|  | ||||
|             //if (!empty($this->attachment->attachments)) { | ||||
|                 // Если есть вложения | ||||
|                 //throw new Exception('СУКАААА'); | ||||
|                 $this->robot->api['attachment'] = implode(',', $this->data->data); | ||||
|             //} | ||||
|         // Вложения | ||||
|         if ( isset($this->data) && $this->__get('data') !== []) { // !empty($this->data->data) почемуто не работает | ||||
|  | ||||
|             $this->robot->api['attachment'] = implode(',', $this->__get('data')); | ||||
|         } | ||||
|  | ||||
|         // Запрос | ||||
|         $request = $this->robot->browser->request('POST', 'messages.send', ['form_params' => $this->robot->api->settings]); | ||||
|         $request = json_decode($this->robot->browser->request('POST', 'messages.send', ['form_params' => $this->robot->api->settings])->getBody()->getContents()); | ||||
|  | ||||
|         // Очистка | ||||
|         //unset($settings); | ||||
|         // Если в ответе ошибка | ||||
|         if (isset($request->error)) { | ||||
|             throw new Exception('Вконтакте: ' . $request->error->error_msg, $request->error->error_code); | ||||
|         } | ||||
|  | ||||
|         if ($this->mode >= 2) { | ||||
|             // Если установлен режим 2 (усиленная проверка отправленного сообщения) | ||||
| @@ -194,16 +235,22 @@ final class messages extends method | ||||
|                 // Запрос | ||||
|                 if ($this->robot->browser->request('POST', 'messages.getById', ['form_params' => $this->robot->api->settings])['response']['count'] === 0) { | ||||
|                     // Сообщения не существует | ||||
|                     //!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||||
|                     //!!!!!!!!!!!!!!!!!!!!!!!!!! | ||||
|                     //!!!!!!!!!!!!!!!!!!!!!!!!! | ||||
|  | ||||
|                     // Повторная отправка | ||||
|                     $this->send($destination); | ||||
|                 } | ||||
|             } else { | ||||
|                 // Что-то придумать :) | ||||
|                 // наверно throw new exception($request->error->error_msg) | ||||
|                 // А стоп. Ничего не нужно, просто возвращаем объект с ошибкой, где всё будет написано | ||||
|                 // Костя ты тупой? | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $request->getBody(); | ||||
|         return $request->response; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -217,7 +264,7 @@ final class messages extends method | ||||
|     public function __set(string $name, mixed $value): void | ||||
|     { | ||||
|         match ($name) { | ||||
|             'data' => !isset($this->data) ? $this->data[0]->addData($value) : throw new Exception('Вложения не инициализированны'), | ||||
|             'data' => !isset($this->data) ? $this->data->addData($value) : throw new Exception('Вложения не инициализированны'), | ||||
|             default => throw new Exception('Свойство не найдено: ' . $name) | ||||
|         }; | ||||
|     } | ||||
| @@ -233,52 +280,48 @@ final class messages extends method | ||||
|     { | ||||
|         return match ($name) { | ||||
|             'text' => $this->text ?? throw new Exception('Текст не инициализирован'), | ||||
|             'data' => isset($this->data) ? $this->data[0]->data : throw new Exception('Вложения не инициализированны'), | ||||
|             'data' => isset($this->data) ? $this->data->data : throw new Exception('Вложения не инициализированны'), | ||||
|             'forwardMessages' => !empty($this->forwardMessages) ? $this->forwardMessages : throw new Exception('Пересылаемые сообщения не инициализированны'), | ||||
|             'ReplyMessage' => isset($this->ReplyMessage) ? $this->ReplyMessage : throw new Exception('Ответное сообщение не инициализированно'), | ||||
|             default => throw new Exception('Свойство не найдено: ' . $name) | ||||
|         }; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Получить информацию о сообщении | ||||
|      * Получить информацию о сообщении по id | ||||
|      *  | ||||
|      * @param string $message_ids Идентификатор сообщения | ||||
|      * | ||||
|      * @return array Информация о сообщении | ||||
|      * @return object Информация о сообщении | ||||
|      */ | ||||
|     public function info()/* : array */ | ||||
|  | ||||
|     //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||||
|     // доделать | ||||
|  | ||||
|     public function getById(int $message_ids): object | ||||
|     { | ||||
|         //Инициализация | ||||
|         //$settings = $this->init(); | ||||
|         $this->robot->api->init(); | ||||
|         // Реиницилазиция | ||||
|         $this->robot->api->reinit(); | ||||
|  | ||||
|         // Цель отправки | ||||
|         $this->robot->api->chooseDestination($this->destination); | ||||
|         // Идентификаторы сообщений. Максимум 100 идентификаторов | ||||
|         $this->robot->api['message_ids'] = $message_ids; | ||||
|  | ||||
|         // Сообщение | ||||
|         $this->robot->api['message'] = $this->message; | ||||
|  | ||||
|         // Режим отправки | ||||
|         $this->robot->api['mode'] = $this->mode; | ||||
|         if ($this->robot instanceof group) { | ||||
|             // Если это группа | ||||
|  | ||||
|         // Фильтрация вложений | ||||
|         $forward_messages = []; | ||||
|         foreach ($this->attachments as &$attachment) { | ||||
|             if (iconv_substr(str: $attachment, offset: 0, length: 7, charset: "UTF-8") === 'message') { | ||||
|                 // Если среди вложений найдено сообщение для пересылки | ||||
|  | ||||
|                 $forward_messages[] = $attachment; | ||||
|                 unset($attachment); | ||||
|             } | ||||
|             // Идентификатор группы | ||||
|             isset($this->robot->id) ? $this->robot->api['group_id'] = $this->robot->id : throw new Exception('Необходимо указать идентификатор сообщества'); | ||||
|         } | ||||
|  | ||||
|         if (!empty($forward_messages)) { | ||||
|             // Если есть пересылаемые сообщения | ||||
|         // Запрос | ||||
|         $request = json_decode(($this->robot->browser->request('POST', 'messages.getById', ['form_params' => $this->robot->api->settings])->getBody()->getContents())); | ||||
|  | ||||
|             $this->robot->api['forward_messages'] = implode(',', $forward_messages); | ||||
|         // Если в ответе ошибка | ||||
|         if (isset($request->error)) { | ||||
|             throw new Exception('Вконтакте: ' . $request->error->error_msg, $request->error->error_code); | ||||
|         } | ||||
|  | ||||
|         if (!empty($this->attachments)) { | ||||
|             // Если есть вложения | ||||
|  | ||||
|             $this->robot->api['attachment'] = implode(',', $this->attachments); | ||||
|         } | ||||
|         return $request->response; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -26,11 +26,6 @@ use Exception; | ||||
|  */ | ||||
| final class photos extends method | ||||
| { | ||||
|     /** | ||||
|      * $url | ||||
|      */ | ||||
|     protected $url; | ||||
|  | ||||
|     /** | ||||
|      * Создать сообщение | ||||
|      * | ||||
| @@ -109,27 +104,6 @@ final class photos extends method | ||||
|         throw new Exception('Аккаунт не инициализирован'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Загрузить | ||||
|      * | ||||
|      * @param Type $var | ||||
|      * @return void | ||||
|      */ | ||||
|     public static function upload(string ...$images): void | ||||
|     { | ||||
|         if (count($images) > 5) { | ||||
|             throw new Exception('Запрещено отправлять более 5 фотографий'); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * загрузить | ||||
|      */ | ||||
|     public static function uploadMessage(robot $robot, string $upload_url, string ...$images) | ||||
|     { | ||||
|         return $robot->browser->api($upload_url, ...$images); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Получить сервер для загрузки изображений | ||||
|      * | ||||
| @@ -218,15 +192,12 @@ final class photos extends method | ||||
|         return (array) $request; | ||||
|     } | ||||
|  | ||||
|     /**  | ||||
|      * Загрузить фото и получить его id | ||||
|      * | ||||
|      * $robot робот | ||||
|      * | ||||
|      * $pathPhoto Путь к фото | ||||
|     /** | ||||
|      * Получить адрес сервера сообщений | ||||
|      *  | ||||
|      * @return object | ||||
|      */ | ||||
|  | ||||
|     public function getPhoto(string $pathPhoto): string | ||||
|     public function getMessageServer(): object | ||||
|     { | ||||
|         // Реиницилазиция | ||||
|         $this->robot->api->reinit(); | ||||
| @@ -237,25 +208,60 @@ final class photos extends method | ||||
|         // Идентификатор назначения (0 Для ботов) | ||||
|         $this->robot->api['peer_id'] = 0; | ||||
|  | ||||
|         // Получить адрес сервера для загрузки фотографии в личное сообщение | ||||
|         $url = json_decode($this->robot->browser->request('POST', 'photos.getMessagesUploadServer', [ | ||||
|         // Получить адрес сервера | ||||
|         $request = json_decode($this->robot->browser->request('POST', 'photos.getMessagesUploadServer', [ | ||||
|             'form_params' => $this->robot->api['settings'] | ||||
|         ])->getBody()->getContents())->response->upload_url; | ||||
|         ])->getBody()->getContents()); | ||||
|  | ||||
|         // Открыть фото | ||||
|         $pathPhoto = fopen($pathPhoto, 'r'); | ||||
|         // Если в ответе ошибка | ||||
|         if (isset($request->error)) { | ||||
|             throw new Exception('Вконтакте: ' . $request->error->error_msg, $request->error->error_code); | ||||
|         } | ||||
|  | ||||
|         return $request->response; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Загрузить фото | ||||
|      */ | ||||
|     public function upload($photo, string $url): object | ||||
|     { | ||||
|         // Загрузить фото | ||||
|         $response = json_decode($this->robot->browser->request('POST', $url, [ | ||||
|         $request = json_decode($this->robot->browser->request('POST', $url, [ | ||||
|             'multipart' => [ | ||||
|                 [ | ||||
|                     'Content-type' => 'multipart/form-data', | ||||
|                     'name' => 'photo', | ||||
|                     'contents' => $pathPhoto | ||||
|                     'contents' => $photo | ||||
|                 ] | ||||
|             ] | ||||
|         ])->getBody()->getContents()); | ||||
|  | ||||
|         // Если в ответе ошибка | ||||
|         if (isset($request->error)) { | ||||
|             throw new Exception('Вконтакте: ' . $request->error->error_msg, $request->error->error_code); | ||||
|         } | ||||
|  | ||||
|         return $request; | ||||
|     } | ||||
|  | ||||
|     /**  | ||||
|      * Получить id фото для сообщения | ||||
|      * | ||||
|      * $robot робот | ||||
|      * | ||||
|      * $pathPhoto Путь к фото | ||||
|      */ | ||||
|     public function getPhoto(string $pathPhoto): string | ||||
|     { | ||||
|         // Получить адрес сервера сообщений | ||||
|         $url = $this->getMessageServer()->upload_url; | ||||
|  | ||||
|         // Открыть фото | ||||
|         $pathPhoto = fopen($pathPhoto, 'r'); | ||||
|  | ||||
|         //Загрузить фото | ||||
|         $response = $this->upload($pathPhoto, $url); | ||||
|  | ||||
|         // Реинициализация | ||||
|         $this->robot->api->reinit(); | ||||
| @@ -274,15 +280,17 @@ final class photos extends method | ||||
|         $this->robot->api['hash'] = $response->hash; | ||||
|  | ||||
|         // Сохранить фото | ||||
|         $response = json_decode($this->robot->browser->request('POST', 'photos.saveMessagesPhoto', [ | ||||
|         $request = json_decode($this->robot->browser->request('POST', 'photos.saveMessagesPhoto', [ | ||||
|             'form_params' => $this->robot->api['settings'] | ||||
|         ])->getBody()->getContents()); | ||||
|  | ||||
|         // Ссылка на фото | ||||
|         if (isset($response->response[0]->id)) { | ||||
|             return 'photo' . $response->response[0]->owner_id . '_' . $response->response[0]->id; | ||||
|         } else { | ||||
|             throw new Exception('Фото не загружено'); | ||||
|         // Если в ответе ошибка | ||||
|         if (isset($request->error)) { | ||||
|             throw new Exception('Вконтакте: ' . $request->error->error_msg, $request->error->error_code); | ||||
|         } | ||||
|         $request; | ||||
|         // Ссылка на фото | ||||
|         return 'photo' . $request->response[0]->owner_id . '_' . $request->response[0]->id; | ||||
|          | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -117,10 +117,14 @@ final class apiTest extends TestCase | ||||
|     /** | ||||
|      * @testdox Инициализация (безопасная) | ||||
|      */ | ||||
|     public function testInit(): void | ||||
|     public function testSafeInit(): void | ||||
|     { | ||||
|         // Безопасная инициализация | ||||
|         self::$robot->key(self::$group_key)->api->init(); | ||||
|         // Инициализация | ||||
|         $settings = self::$robot->key(self::$group_key)->api->init(); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertNotNull($settings['access_token']); | ||||
|         $this->assertNotNull($settings['v']); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -126,7 +126,10 @@ final class dataTest extends TestCase | ||||
|      */ | ||||
|     public function testDataInit(): void | ||||
|     { | ||||
|          | ||||
|         if (isset(self::$robot)) { | ||||
|              | ||||
|             // Инициализация вложений | ||||
|             self::$data = new data(self::$robot); | ||||
|         } | ||||
|     } | ||||
| @@ -152,18 +155,6 @@ final class dataTest extends TestCase | ||||
|         $this->assertNotEmpty(self::$data->data); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Запись вложения методом | ||||
|      */ | ||||
|     public function testWriteAttachmentUsingMethod(): void | ||||
|     { | ||||
|         // Запись вложения | ||||
|         self::$data->addData('Вложение'); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertNotEmpty(self::$data->data); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Запись вложения (повторная) | ||||
|      */ | ||||
| @@ -188,7 +179,7 @@ final class dataTest extends TestCase | ||||
|         $this->expectExceptionMessage('Превышен лимит вложений (10)'); | ||||
|  | ||||
|         //Запись вложений | ||||
|         self::$data->addData('Вложение', 'Вложение', 'Вложение', 'Вложение', 'Вложение', 'Вложение', 'Вложение', 'Вложение', 'Вложение', 'Вложение', 'Вложение'); | ||||
|         self::$data->addData('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -196,9 +187,13 @@ final class dataTest extends TestCase | ||||
|      */ | ||||
|     public function testClearAttachments(): void | ||||
|     { | ||||
|         //Запись вложения | ||||
|         self::$data->addData('Вложение'); | ||||
|  | ||||
|         // Очистка вложений | ||||
|         self::$data->clear(); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertEmpty(self::$data->data); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -9,6 +9,7 @@ use hood\vk\robots\robot; | ||||
| use hood\vk\tests\settings; | ||||
|  | ||||
| use hood\accounts\vk as account; | ||||
| use hood\accounts\vk; | ||||
|  | ||||
| /** | ||||
|  * @testdox Сообщения | ||||
| @@ -132,7 +133,10 @@ final class messagesTest extends TestCase | ||||
|     public function testWriteText(): void | ||||
|     { | ||||
|         // Запись текста | ||||
|         self::$robot->message()->text('text'); | ||||
|         $message = self::$robot->message()->text('text'); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertNotNull($message->text); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -147,21 +151,37 @@ final class messagesTest extends TestCase | ||||
|         $message->text('text'); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertSame('texttext', $message->text); | ||||
|         $this->assertEquals('texttext', $message->text); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Запись фото | ||||
|      * @testdox Отправка текста | ||||
|      */ | ||||
|     public function testWriteImage(): void | ||||
|     public function testSendText(): void | ||||
|     { | ||||
|         // Запись фото | ||||
|         $message = self::$robot->key(self::$group_key)->message()->image(self::$path_photo); | ||||
|         // Отправка сообщения | ||||
|         $response = self::$robot->key(self::$group_key)->message('Тестовое сообщение')->send(self::$target_id); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertNotEmpty($message->data); | ||||
|         $this->assertIsInt($response, 'Сообщение не отправленно'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Получение информации о сообщении | ||||
|      */ | ||||
|     public function testgetById(): void | ||||
|     { | ||||
|         // Отправка сообщения | ||||
|         $id = self::$robot->key(self::$group_key)->message('Теста метода getByID')->send(self::$target_id); | ||||
|  | ||||
|         // Получение информации | ||||
|         $response = self::$robot->message()->getById($id); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertIsArray($response->items, 'Информация не получена'); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * @testdox Чтение Вложений | ||||
|      */ | ||||
| @@ -175,37 +195,139 @@ final class messagesTest extends TestCase | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Запись вложений методом | ||||
|      * @testdox Запись вложений (методом) | ||||
|      */ | ||||
|     public function testWriteAttachments(): void | ||||
|     { | ||||
|         // Запись вложений | ||||
|         $message = self::$robot->message(); | ||||
|  | ||||
|         $message->attachments('Вложение'); | ||||
|         $message = self::$robot->message()->attachments('Вложение'); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertEquals(['Вложение'], $message->data); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Отправка текста | ||||
|      * @testdox Запись фото | ||||
|      */ | ||||
|     public function testSend(): void | ||||
|     { | ||||
|         // Отправка сообщения | ||||
|         self::$robot->key(self::$group_key)->message('Тестовое сообщение')->send(self::$target_id); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Отправка фотографии | ||||
|      */ | ||||
|     public function testSendPhoto(): void | ||||
|     public function testWriteImage(): void | ||||
|     { | ||||
|         // Запись фото | ||||
|         $message = self::$robot->key(self::$group_key)->message()->image(self::$path_photo); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertNotEmpty($message->data); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * @testdox Отправка фото | ||||
|      */ | ||||
|     public function testSendPhoto(): void | ||||
|     { | ||||
|         // Запись фото | ||||
|         $message = self::$robot->key(self::$group_key)->message('Тест отправки фото')->image(self::$path_photo); | ||||
|  | ||||
|         // Отправка сообщения | ||||
|         $message->send(self::$target_id); | ||||
|         $id = $message->send(self::$target_id); | ||||
|  | ||||
|         // Получене информации для проверки | ||||
|         $message = $message->getById($id); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertNotEmpty($message->items[0]->attachments, 'Фото не отправлено'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Чтение пересылаемых сообщений | ||||
|      */ | ||||
|     public function testReadForward(): void | ||||
|     { | ||||
|         // Проверка выброса исключеия | ||||
|         $this->expectExceptionMessage('Пересылаемые сообщения не инициализированны'); | ||||
|  | ||||
|         // Проверка | ||||
|         self::$robot->message()->forwardMessages; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Запись пересылаемых сообщений | ||||
|      */ | ||||
|     public function testWriteForward(): void | ||||
|     { | ||||
|         // Запись пересылаемых сообщений | ||||
|         $message = self::$robot->message()->forward(123456); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertNotEmpty($message->forwardMessages); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Пересылка сообщений | ||||
|      */ | ||||
|     public function testSendForward(): void | ||||
|     { | ||||
|         // Отправка пересылаемого сообщения | ||||
|         $id = self::$robot->key(self::$group_key)->message('Это сообщение будет переслано')->send(self::$target_id); | ||||
|  | ||||
|         // Запись пересылаемых сообщений | ||||
|         $message = self::$robot->message('Тест пересылки сообщений')->forward($id); | ||||
|          | ||||
|         // Отпрравка пересылки сообщения | ||||
|         $id = $message->send(self::$target_id); | ||||
|  | ||||
|         // Получене информации для проверки | ||||
|         $message = self::$robot->message()->getById($id); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertNotEmpty($message->items[0]->fwd_messages, 'Сообщение не пересланно'); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Чтение ответного сообщения | ||||
|      */ | ||||
|     public function testReadReply(): void | ||||
|     { | ||||
|         // Проверка выброса исключеия | ||||
|         $this->expectExceptionMessage('Ответное сообщение не инициализированно'); | ||||
|  | ||||
|         // Проверка | ||||
|         self::$robot->message()->ReplyMessage; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Запись ответного сообщения | ||||
|      */ | ||||
|     public function testWriteReply(): void | ||||
|     { | ||||
|         // Запись ответного сообщения | ||||
|         $message = self::$robot->message()->Reply(123456); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertNotNull($message->ReplyMessage); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Ответ на сообщение | ||||
|      */ | ||||
|     public function testSendReply(): void | ||||
|     { | ||||
|         // Отправка ответного сообщения | ||||
|         $id = self::$robot->key(self::$group_key)->message('Будет ответ на это сообщение')->send(self::$target_id); | ||||
|  | ||||
|         // Запись ответного сообщения | ||||
|         $message = self::$robot->message('Тест ответа на сообщение')->reply($id); | ||||
|  | ||||
|         // Отправка ответа на сообщение | ||||
|         $id = $message->send(self::$target_id); | ||||
|  | ||||
|         // Получене информации для проверки | ||||
|         $message = self::$robot->message()->getById($id); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertNotEmpty($message->items[0]->reply_message, 'Сообщение не пересланно'); | ||||
|  | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -115,14 +115,39 @@ final class photosTest extends TestCase | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Загрузка фото и получение его id | ||||
|      * @testdox Получение адреса сервера сообщений | ||||
|      */ | ||||
|     public function testGetMessageServer(): void | ||||
|     { | ||||
|         // Получение адреса сервера | ||||
|         $response = self::$robot->key(self::$group_key)->photo()->getMessageServer(); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertIsString($response->upload_url, 'Адрес сервера не получен'); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Загрузка фото | ||||
|      */ | ||||
|     public function testUpload(): void | ||||
|     { | ||||
|         // Получение адреса сервера | ||||
|         $url = self::$robot->key(self::$group_key)->photo()->getMessageServer()->upload_url; | ||||
|  | ||||
|         // Загрузка фото | ||||
|         $response = self::$robot->photo()->upload(fopen(self::$path_photo, 'r'), $url); | ||||
|  | ||||
|         // Проверка | ||||
|         $this->assertIsString($response->hash, 'Фото не загружено'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @testdox Получение id фото для сообщения | ||||
|      */ | ||||
|     public function testGetPhoto(): void | ||||
|     { | ||||
|         // Ожидаемое исключение (это временно) | ||||
|         //$this->expectExceptionMessage('Фото не загружено'); | ||||
|  | ||||
|         // Проверка | ||||
|         //self::$robot->key(self::$group_key)->photo()->getPhoto(self::$path_photo); | ||||
|         self::$robot->key(self::$group_key)->photo()->getPhoto(self::$path_photo); | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 tarashyanskiy
					tarashyanskiy