Исправления для сообщений и фото
This commit is contained in:
parent
0bdf754405
commit
469838cdcd
|
@ -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
|
||||
*
|
||||
* @return array Информация о сообщении
|
||||
* @param string $message_ids Идентификатор сообщения
|
||||
*
|
||||
* @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);
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить сервер для загрузки изображений
|
||||
*
|
||||
|
@ -219,14 +193,11 @@ final class photos extends method
|
|||
}
|
||||
|
||||
/**
|
||||
* Загрузить фото и получить его 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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue