value; } if(isset($parameters['caption_entities']) && is_array($parameters['caption_entities'])) { $entities = []; foreach($parameters['caption_entities'] as $entity) { if($entity instanceof MessageEntity) { $entities[] = $entity->toArray(); } else { $entities[] = $entity; } } $parameters['caption_entities'] = $entities; } if(isset($parameters['reply_parameters']) && $parameters['reply_parameters'] instanceof ReplyParameters) { $parameters['reply_parameters'] = $parameters['reply_parameters']->toArray(); } if (isset($parameters['reply_markup'])) { if ($parameters['reply_markup'] instanceof ObjectTypeInterface) { $parameters['reply_markup'] = json_encode($parameters['reply_markup']->toArray()); } elseif (is_array($parameters['reply_markup'])) { $parameters['reply_markup'] = json_encode($parameters['reply_markup']); } } // Handle file uploads $hasLocalDocument = isset($parameters['document']) && is_string($parameters['document']) && file_exists($parameters['document']) && is_file($parameters['document']); $hasLocalThumb = isset($parameters['thumbnail']) && is_string($parameters['thumbnail']) && file_exists($parameters['thumbnail']) && is_file($parameters['thumbnail']); if ($hasLocalDocument || $hasLocalThumb) { $files = []; if ($hasLocalDocument) { $files['document'] = $parameters['document']; unset($parameters['document']); } if ($hasLocalThumb) { $files['thumbnail'] = $parameters['thumbnail']; unset($parameters['thumbnail']); } if (count($files) > 1) { // Multiple files to upload $curl = self::buildMultiUpload($bot, Methods::SEND_DOCUMENT->value, $files, $parameters); } else { // Single file to upload $fileParam = array_key_first($files); $curl = self::buildUpload($bot, Methods::SEND_DOCUMENT->value, $fileParam, $files[$fileParam], $parameters); } return Message::fromArray(self::executeCurl($curl)); } // If no local files to upload, use regular POST method return Message::fromArray(self::executeCurl(self::buildPost($bot, Methods::SEND_DOCUMENT->value, $parameters))); } /** * @inheritDoc */ public static function getRequiredParameters(): ?array { return [ 'chat_id', 'document' ]; } /** * @inheritDoc */ public static function getOptionalParameters(): ?array { return [ 'business_connection_id', 'message_thread_id', 'thumbnail', 'caption', 'parse_mode', 'caption_entities', 'disable_content_type_detection', 'disable_notification', 'protect_content', 'message_effect_id', 'reply_parameters', 'reply_markup' ]; } }