diff --git a/src/TgBotLib/Objects/MenuButton.php b/src/TgBotLib/Objects/MenuButton.php new file mode 100644 index 0000000..41c022e --- /dev/null +++ b/src/TgBotLib/Objects/MenuButton.php @@ -0,0 +1,87 @@ +type; + } + + /** + * Text on the button + * + * @return string|null + */ + public function getText(): ?string + { + return $this->text; + } + + /** + * Description of the Web App that will be launched when the user presses the button. The Web App will be able + * to send an arbitrary message on behalf of the user using the method answerWebAppQuery. + * + * @return WebAppInfo|null + */ + public function getWebApp(): ?WebAppInfo + { + return $this->web_app; + } + + /** + * Returns an array representation of the object + * + * @return array + */ + public function toArray(): array + { + return [ + 'type' => $this->type, + 'text' => $this->text, + 'web_app' => ($this->web_app instanceof WebAppInfo) ? $this->web_app->toArray() : null + ]; + } + + /** + * Constructs object from an array representation + * + * @param array $data + * @return ObjectTypeInterface + */ + public static function fromArray(array $data): ObjectTypeInterface + { + $object = new self(); + + $object->type = $data['type']; + $object->text = $data['text'] ?? null; + $object->web_app = ($data['web_app'] ?? null) ? WebAppInfo::fromArray($data['web_app']) : null; + + return $object; + } + } \ No newline at end of file diff --git a/src/TgBotLib/Objects/MenuButton/MenuButtonCommands.php b/src/TgBotLib/Objects/MenuButton/MenuButtonCommands.php new file mode 100644 index 0000000..192395c --- /dev/null +++ b/src/TgBotLib/Objects/MenuButton/MenuButtonCommands.php @@ -0,0 +1,66 @@ +type; + } + + /** + * Returns an array representation of the object + * + * @return string[] + */ + public function toArray(): array + { + return [ + 'type' => $this->getType(), + ]; + } + + /** + * Constructs object from an array representation + * + * @param array $data + * @return ObjectTypeInterface + */ + public static function fromArray(array $data): ObjectTypeInterface + { + $object = new self(); + + $object->type = $data['type']; + + return $object; + } + + /** + * Constructs object from MenuButton + * + * @param MenuButton $menuButton + * @return MenuButtonCommands + */ + public static function fromMenuButton(MenuButton $menuButton): MenuButtonCommands + { + $object = new self(); + $object->type = $menuButton->getType(); + return $object; + } + } \ No newline at end of file diff --git a/src/TgBotLib/Objects/MenuButton/MenuButtonDefault.php b/src/TgBotLib/Objects/MenuButton/MenuButtonDefault.php new file mode 100644 index 0000000..97d4b04 --- /dev/null +++ b/src/TgBotLib/Objects/MenuButton/MenuButtonDefault.php @@ -0,0 +1,68 @@ +type; + } + + /** + * Returns an array representation of the object + * + * @return array + */ + public function toArray(): array + { + return [ + 'type' => $this->getType(), + ]; + } + + /** + * Constructs object from an array representation + * + * @param array $data + * @return ObjectTypeInterface + */ + public static function fromArray(array $data): ObjectTypeInterface + { + $object = new self(); + + $object->type = $data['type']; + + return $object; + } + + /** + * Constructs object from MenuButton + * + * @param MenuButton $menuButton + * @return MenuButtonDefault + */ + public static function fromMenuButton(MenuButton $menuButton): MenuButtonDefault + { + $object = new self(); + + $object->type = $menuButton->getType(); + + return $object; + } + } \ No newline at end of file diff --git a/src/TgBotLib/Objects/MenuButton/MenuButtonWebApp.php b/src/TgBotLib/Objects/MenuButton/MenuButtonWebApp.php new file mode 100644 index 0000000..449fe12 --- /dev/null +++ b/src/TgBotLib/Objects/MenuButton/MenuButtonWebApp.php @@ -0,0 +1,106 @@ +type; + } + + /** + * Text on the button + * + * @return string + */ + public function getText(): string + { + return $this->text; + } + + /** + * Description of the Web App that will be launched when the user presses the button. The Web App will be able + * to send an arbitrary message on behalf of the user using the method answerWebAppQuery. + * + * @see https://core.telegram.org/bots/api#answerwebappquery + * @return WebAppInfo + */ + public function getWebApp(): WebAppInfo + { + return $this->web_app; + } + + /** + * Returns an array representation of the object + * + * @return array + */ + public function toArray(): array + { + return [ + 'type' => $this->type, + 'text' => $this->text, + 'web_app' => ($this->web_app instanceof WebAppInfo) ? $this->web_app->toArray() : null + ]; + } + + /** + * Constructs object from an array representation + * + * @param array $data + * @return ObjectTypeInterface + */ + public static function fromArray(array $data): ObjectTypeInterface + { + $object = new self(); + + $object->type = $data['type']; + $object->text = $data['text']; + $object->web_app = isset($data['web_app']) ? WebAppInfo::fromArray($data['web_app']) : null; + + return $object; + } + + /** + * Constructs object from MenuButton + * + * @param MenuButton $menuButton + * @return MenuButtonWebApp + */ + public static function fromMenuButton(MenuButton $menuButton): MenuButtonWebApp + { + $object = new self(); + + $object->type = $menuButton->getType(); + $object->text = $menuButton->getText(); + $object->web_app = $menuButton->getWebApp(); + + return $object; + } + + } \ No newline at end of file