diff --git a/src/TgBotLib/Methods/SendMessage.php b/src/TgBotLib/Methods/SendMessage.php index cf0c576..95ddd7d 100644 --- a/src/TgBotLib/Methods/SendMessage.php +++ b/src/TgBotLib/Methods/SendMessage.php @@ -6,14 +6,19 @@ use TgBotLib\Abstracts\Method; use TgBotLib\Bot; use TgBotLib\Enums\Methods; + use TgBotLib\Enums\Types\ParseMode; + use TgBotLib\Interfaces\ObjectTypeInterface; + use TgBotLib\Objects\LinkPreviewOptions; use TgBotLib\Objects\Message; + use TgBotLib\Objects\MessageEntity; + use TgBotLib\Objects\ReplyParameters; class SendMessage extends Method { /** * @inheritDoc */ - public static function execute(Bot $bot, array $parameters = []): Message + public static function execute(Bot $bot, array $parameters=[]): Message { if(!isset($parameters['chat_id'])) { @@ -25,9 +30,51 @@ throw new InvalidArgumentException('text is required'); } + if(isset($parameters['parse_mode']) && $parameters['parse_mode'] instanceof ParseMode) + { + $parameters['parse_mode'] = $parameters['parse_mode']->value; + } + + if(isset($parameters['entities']) && is_array($parameters['entities'])) + { + $entities = []; + + foreach($parameters['entities'] as $entity) + { + if($entity instanceof MessageEntity) + { + $entities[] = $entity->toArray(); + } + else + { + $entities[] = $entity; + } + } + + $parameters['entities'] = $entities; + } + + if(isset($parameters['link_preview_options']) && $parameters['link_preview_options'] instanceof LinkPreviewOptions) + { + $parameters['link_preview_options'] = $parameters['link_preview_options']->toArray(); + } + + if(isset($parameters['reply_parameters']) && $parameters['reply_parameters'] instanceof ReplyParameters) + { + $parameters['reply_parameters'] = $parameters['reply_parameters']->toArray(); + } + + if(isset($parameters['reply_markup']) && $parameters['reply_markup'] instanceof ObjectTypeInterface) + { + $parameters['reply_markup'] = $parameters['reply_markup']->toArray(); + } + return Message::fromArray(self::executeCurl(self::buildPost($bot, Methods::SEND_MESSAGE->value, $parameters))); } + /** + * @inheritDoc + */ public static function getRequiredParameters(): ?array { return [ @@ -36,11 +83,22 @@ ]; } + /** + * @inheritDoc + */ public static function getOptionalParameters(): ?array { return [ 'business_connection_id', + 'message_thread_id', 'parse_mode', + 'entities', + 'link_preview_options', + 'disable_notification', + 'protect_content', + 'message_effect_id', + 'reply_parameters', + 'reply_markup' ]; } } \ No newline at end of file