fix #2 Error: Cannot instantiate abstract class AbstractAttachment после отправки номера телефона

This commit is contained in:
Alex
2025-08-05 18:11:34 +03:00
parent 32e393e044
commit 97d016055f
10 changed files with 149 additions and 62 deletions
+44 -26
View File
@@ -47,6 +47,7 @@ use BushlanovDev\MaxMessengerBot\Models\Markup\StrongMarkup;
use BushlanovDev\MaxMessengerBot\Models\Markup\UnderlineMarkup;
use BushlanovDev\MaxMessengerBot\Models\Markup\UserMentionMarkup;
use BushlanovDev\MaxMessengerBot\Models\Message;
use BushlanovDev\MaxMessengerBot\Models\MessageBody;
use BushlanovDev\MaxMessengerBot\Models\Result;
use BushlanovDev\MaxMessengerBot\Models\Subscription;
use BushlanovDev\MaxMessengerBot\Models\UpdateList;
@@ -136,23 +137,54 @@ class ModelFactory
*/
public function createMessage(array $data): Message
{
if (isset($data['body']['attachments']) && is_array($data['body']['attachments'])) {
$data['body']['attachments'] = array_map(
[$this, 'createAttachment'],
$data['body']['attachments'],
);
}
if (isset($data['body']['markup']) && is_array($data['body']['markup'])) {
$data['body']['markup'] = array_map(
[$this, 'createMarkupElement'],
$data['body']['markup'],
);
if (isset($data['body']) && is_array($data['body'])) {
$data['body'] = $this->createMessageBody($data['body']);
}
return Message::fromArray($data);
}
/**
* List of messages.
*
* @param array<string, mixed> $data
*
* @return Message[]
*/
public function createMessages(array $data): array
{
return isset($data['messages']) && is_array($data['messages'])
? array_map([$this, 'createMessage'], $data['messages'])
: [];
}
/**
* Creates a MessageBody object from raw API data, handling polymorphic attachments and markup.
*
* @param array<string, mixed> $data
*
* @return MessageBody
* @throws ReflectionException
*/
private function createMessageBody(array $data): MessageBody
{
if (isset($data['attachments']) && is_array($data['attachments'])) {
$data['attachments'] = array_map(
[$this, 'createAttachment'],
$data['attachments'],
);
}
if (isset($data['markup']) && is_array($data['markup'])) {
$data['markup'] = array_map(
[$this, 'createMarkupElement'],
$data['markup'],
);
}
return MessageBody::fromArray($data);
}
/**
* Creates a specific Attachment model based on the 'type' field.
*
@@ -237,20 +269,6 @@ class ModelFactory
};
}
/**
* List of messages.
*
* @param array<string, mixed> $data
*
* @return Message[]
*/
public function createMessages(array $data): array
{
return isset($data['messages']) && is_array($data['messages'])
? array_map([$this, 'createMessage'], $data['messages'])
: [];
}
/**
* Endpoint you should upload to your binaries.
*