Updated BotCommandScope

This commit is contained in:
netkas 2024-10-02 00:32:13 -04:00
parent 6c67e97a4b
commit 79278e7748
8 changed files with 66 additions and 362 deletions

View file

@ -4,100 +4,60 @@
namespace TgBotLib\Objects; namespace TgBotLib\Objects;
use InvalidArgumentException;
use TgBotLib\Enums\Types\BotCommandScopeType;
use TgBotLib\Interfaces\ObjectTypeInterface; use TgBotLib\Interfaces\ObjectTypeInterface;
use TgBotLib\Objects\BotCommandScope\BotCommandScopeAllChatAdministrators;
use TgBotLib\Objects\BotCommandScope\BotCommandScopeAllGroupChats;
use TgBotLib\Objects\BotCommandScope\BotCommandScopeAllPrivateChats;
use TgBotLib\Objects\BotCommandScope\BotCommandScopeChat; use TgBotLib\Objects\BotCommandScope\BotCommandScopeChat;
use TgBotLib\Objects\BotCommandScope\BotCommandScopeChatAdministrators; use TgBotLib\Objects\BotCommandScope\BotCommandScopeChatAdministrators;
use TgBotLib\Objects\BotCommandScope\BotCommandScopeChatMember; use TgBotLib\Objects\BotCommandScope\BotCommandScopeChatMember;
use TgBotLib\Objects\BotCommandScope\BotCommandScopeDefault;
class BotCommandScope implements ObjectTypeInterface abstract class BotCommandScope implements ObjectTypeInterface
{ {
/** /**
* @var string * @var BotCommandScopeType
*/ */
private $type; protected $type;
/**
* @var string|int|null
*/
private $chat_id;
/**
* @var int|null
*/
private $user_id;
/** /**
* Scope type, one of “default”, “all_private_chats”, “all_group_chats”, “all_chat_administrators”, “chat”, * Scope type, one of “default”, “all_private_chats”, “all_group_chats”, “all_chat_administrators”, “chat”,
* “chat_administrators”, “chat_member” * “chat_administrators”, “chat_member”
* *
* @return string * @return BotCommandScopeType
*/ */
public function getType(): string public function getType(): BotCommandScopeType
{ {
return $this->type; return $this->type;
} }
/** /**
* Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername) * @inheritDoc
*
* @return int|string|null
*/ */
public function getChatId(): int|string|null public abstract function toArray(): array;
{
return $this->chat_id;
}
/** /**
* Unique identifier of the target user * @inheritDoc
*
* @return int|null
*/
public function getUserId(): ?int
{
return $this->user_id;
}
/**
* Returns an array representation of the object
*
* @return array
*/
public function toArray(): array
{
return [
'type' => $this->type,
'chat_id' => $this->chat_id,
'user_id' => $this->user_id,
];
}
/**
* Constructs object from an array representation
*
* @param array $data
* @return ObjectTypeInterface
*/ */
public static function fromArray(array $data): ObjectTypeInterface public static function fromArray(array $data): ObjectTypeInterface
{ {
if(isset($data['type'])) if(!isset($data['type']))
{ {
switch($data['type']) throw new InvalidArgumentException('BotCommandScope expected type');
{
case 'chat':
return BotCommandScopeChat::fromArray($data);
case 'chat_administrators':
return BotCommandScopeChatAdministrators::fromArray($data);
case 'chat_member':
return BotCommandScopeChatMember::fromArray($data);
}
} }
$object = new self(); return match(BotCommandScopeType::tryFrom($data['type']))
{
$object->type = $data['type'] ?? null; BotCommandScopeType::DEFAULT => BotCommandScopeDefault::fromArray($data),
$object->chat_id = $data['chat_id'] ?? null; BotCommandScopeType::ALL_PRIVATE_CHATS => BotCommandScopeAllPrivateChats::fromArray($data),
$object->user_id = $data['user_id'] ?? null; BotCommandScopeType::ALL_CHAT_GROUPS => BotCommandScopeAllGroupChats::fromArray($data),
BotCommandScopeType::ALL_CHAT_ADMINISTRATORS => BotCommandScopeChatAdministrators::fromArray($data),
return $object; BotCommandScopeType::CHAT => BotCommandScopeChat::fromArray($data),
BotCommandScopeType::CHAT_ADMINISTRATORS => BotCommandScopeAllChatAdministrators::fromArray($data),
BotCommandScopeType::CHAT_MEMBER => BotCommandScopeChatMember::fromArray($data),
default => throw new InvalidArgumentException('Unexpected match value')
};
} }
} }

View file

@ -8,28 +8,13 @@
use TgBotLib\Interfaces\ObjectTypeInterface; use TgBotLib\Interfaces\ObjectTypeInterface;
use TgBotLib\Objects\BotCommandScope; use TgBotLib\Objects\BotCommandScope;
class BotCommandScopeAllChatAdministrators implements ObjectTypeInterface class BotCommandScopeAllChatAdministrators extends BotCommandScope implements ObjectTypeInterface
{ {
/**
* @var string
*/
private $type;
/** /**
* @var int|string * @var int|string
*/ */
private $chat_id; private $chat_id;
/**
* Scope type, must be all_chat_administrators
*
* @return string
*/
public function getType(): string
{
return $this->type;
}
/** /**
* Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername) * Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)
* *
@ -48,7 +33,7 @@
public function toArray(): array public function toArray(): array
{ {
return [ return [
'type' => $this->type, 'type' => $this->type->value,
'chat_id' => $this->chat_id 'chat_id' => $this->chat_id
]; ];
} }
@ -59,29 +44,12 @@
* @param array $data * @param array $data
* @return BotCommandScopeAllChatAdministrators * @return BotCommandScopeAllChatAdministrators
*/ */
public static function fromArray(array $data): self public static function fromArray(array $data): BotCommandScopeAllChatAdministrators
{ {
$object = new self(); $object = new self();
$object->type = BotCommandScopeType::ALL_CHAT_ADMINISTRATORS;
$object->type = $data['type'] ?? BotCommandScopeType::ALL_CHAT_ADMINISTRATORS;
$object->chat_id = $data['chat_id'] ?? null; $object->chat_id = $data['chat_id'] ?? null;
return $object; return $object;
} }
/**
* Constructs object from BotCommandScope
*
* @param BotCommandScope $botCommandScope
* @return static
*/
public static function fromBotCommandScope(BotCommandScope $botCommandScope): self
{
$object = new self();
$object->type = $botCommandScope->getType();
$object->chat_id = $botCommandScope->getChatId();
return $object;
}
} }

View file

@ -8,61 +8,25 @@
use TgBotLib\Interfaces\ObjectTypeInterface; use TgBotLib\Interfaces\ObjectTypeInterface;
use TgBotLib\Objects\BotCommandScope; use TgBotLib\Objects\BotCommandScope;
class BotCommandScopeAllGroupChats implements ObjectTypeInterface class BotCommandScopeAllGroupChats extends BotCommandScope implements ObjectTypeInterface
{ {
/** /**
* @var string * @inheritDoc
*/
private $type;
/**
* Scope type, must be all_group_chats
*
* @return string
*/
public function getType(): string
{
return $this->type;
}
/**
* Returns an array representation of the object
*
* @return array
*/ */
public function toArray(): array public function toArray(): array
{ {
return [ return [
'type' => $this->type 'type' => $this->type->value
]; ];
} }
/** /**
* Constructs object from an array representation * @inheritDoc
*
* @param array $data
* @return BotCommandScopeAllGroupChats
*/ */
public static function fromArray(array $data): self public static function fromArray(array $data): self
{ {
$object = new self(); $object = new self();
$object->type = BotCommandScopeType::ALL_CHAT_GROUPS;
$object->type = $data['type'] ?? BotCommandScopeType::ALL_CHAT_GROUPS;
return $object;
}
/**
* Constructs object from BotCommandScope
*
* @param BotCommandScope $botCommandScope
* @return BotCommandScopeAllGroupChats
*/
public static function fromBotCommandScope(BotCommandScope $botCommandScope): BotCommandScopeAllGroupChats
{
$object = new self();
$object->type = $botCommandScope->getType();
return $object; return $object;
} }

View file

@ -8,61 +8,25 @@
use TgBotLib\Interfaces\ObjectTypeInterface; use TgBotLib\Interfaces\ObjectTypeInterface;
use TgBotLib\Objects\BotCommandScope; use TgBotLib\Objects\BotCommandScope;
class BotCommandScopeAllPrivateChats implements ObjectTypeInterface class BotCommandScopeAllPrivateChats extends BotCommandScope implements ObjectTypeInterface
{ {
/** /**
* @var string * @inheritDoc
*/
private $type;
/**
* Scope type, must be all_private_chats
*
* @return string
*/
public function getType(): string
{
return $this->type;
}
/**
* Returns an array representation of the object
*
* @return array
*/ */
public function toArray(): array public function toArray(): array
{ {
return [ return [
'type' => $this->type 'type' => $this->type->value
]; ];
} }
/** /**
* Constructs object from an array representation * @inheritDoc
*
* @param array $data
* @return BotCommandScopeAllPrivateChats
*/ */
public static function fromArray(array $data): self public static function fromArray(array $data): BotCommandScopeAllPrivateChats
{ {
$object = new self(); $object = new self();
$object->type = BotCommandScopeType::ALL_PRIVATE_CHATS;
$object->type = $data['type'] ?? BotCommandScopeType::ALL_PRIVATE_CHATS;
return $object;
}
/**
* Constructs object from BotCommandScope
*
* @param BotCommandScope $botCommandScope
* @return BotCommandScopeAllPrivateChats
*/
public static function fromBotCommandScope(BotCommandScope $botCommandScope): BotCommandScopeAllPrivateChats
{
$object = new self();
$object->type = $botCommandScope->getType();
return $object; return $object;
} }

View file

@ -8,27 +8,12 @@
use TgBotLib\Interfaces\ObjectTypeInterface; use TgBotLib\Interfaces\ObjectTypeInterface;
use TgBotLib\Objects\BotCommandScope; use TgBotLib\Objects\BotCommandScope;
class BotCommandScopeChat implements ObjectTypeInterface class BotCommandScopeChat extends BotCommandScope implements ObjectTypeInterface
{ {
/**
* @var string
*/
private $type;
/** /**
* @var int|string * @var int|string
*/ */
private $chat_id; private int|string $chat_id;
/**
* Scope type, must be chat
*
* @return string
*/
public function getType(): string
{
return $this->type;
}
/** /**
* Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername) * Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)
@ -41,48 +26,25 @@
} }
/** /**
* Returns an array representation of the object * @inheritDoc
*
* @return array
*/ */
public function toArray(): array public function toArray(): array
{ {
return [ return [
'type' => $this->type, 'type' => $this->type->value,
'chat_id' => $this->chat_id 'chat_id' => $this->chat_id
]; ];
} }
/** /**
* Constructs object from an array representation * @inheritDoc
*
* @param array $data
* @return BotCommandScopeChat
*/ */
public static function fromArray(array $data): self public static function fromArray(array $data): self
{ {
$object = new self(); $object = new self();
$object->type = BotCommandScopeType::CHAT;
$object->type = $data['type'] ?? BotCommandScopeType::CHAT;
$object->chat_id = $data['chat_id'] ?? null; $object->chat_id = $data['chat_id'] ?? null;
return $object; return $object;
} }
/**
* Constructs object from BotCommandScope
*
* @param BotCommandScope $botCommandScope
* @return static
*/
public static function fromBotCommandScope(BotCommandScope $botCommandScope): self
{
$object = new self();
$object->type = $botCommandScope->getType();
$object->chat_id = $botCommandScope->getChatId();
return $object;
}
} }

View file

@ -8,61 +8,26 @@
use TgBotLib\Interfaces\ObjectTypeInterface; use TgBotLib\Interfaces\ObjectTypeInterface;
use TgBotLib\Objects\BotCommandScope; use TgBotLib\Objects\BotCommandScope;
class BotCommandScopeChatAdministrators implements ObjectTypeInterface class BotCommandScopeChatAdministrators extends BotCommandScope implements ObjectTypeInterface
{ {
/**
* @var string
*/
private $type;
/** /**
* Scope type, must be chat_administrators * @inheritDoc
*
* @return string
*/
public function getType(): string
{
return $this->type;
}
/**
* Returns an array representation of the object
*
* @return array
*/ */
public function toArray(): array public function toArray(): array
{ {
return [ return [
'type' => $this->type 'type' => $this->type->value
]; ];
} }
/** /**
* Constructs object from an array representation * @inheritDoc
*
* @param array $data
* @return BotCommandScopeChatAdministrators
*/ */
public static function fromArray(array $data): self public static function fromArray(array $data): self
{ {
$object = new self(); $object = new self();
$object->type = BotCommandScopeType::CHAT_ADMINISTRATORS;
$object->type = $data['type'] ?? BotCommandScopeType::CHAT_ADMINISTRATORS;
return $object;
}
/**
* Constructs object from BotCommandScope
*
* @param BotCommandScope $botCommandScope
* @return BotCommandScopeChatAdministrators
*/
public static function fromBotCommandScope(BotCommandScope $botCommandScope): BotCommandScopeChatAdministrators
{
$object = new self();
$object->type = $botCommandScope->getType();
return $object; return $object;
} }

View file

@ -8,32 +8,10 @@
use TgBotLib\Interfaces\ObjectTypeInterface; use TgBotLib\Interfaces\ObjectTypeInterface;
use TgBotLib\Objects\BotCommandScope; use TgBotLib\Objects\BotCommandScope;
class BotCommandScopeChatMember implements ObjectTypeInterface class BotCommandScopeChatMember extends BotCommandScope implements ObjectTypeInterface
{ {
/** private string|int $chat_id;
* @var string private int $user_id;
*/
private $type;
/**
* @var string|int
*/
private $chat_id;
/**
* @var int
*/
private $user_id;
/**
* Scope type, must be chat_member
*
* @return string
*/
public function getType(): string
{
return $this->type;
}
/** /**
* Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername) * Unique identifier for the target chat or username of the target supergroup (in the format @supergroupusername)
@ -56,48 +34,27 @@
} }
/** /**
* Returns an array representation of the object * @inheritDoc
*
* @return array
*/ */
public function toArray(): array public function toArray(): array
{ {
return [ return [
'type' => $this->type, 'type' => $this->type->value,
'chat_id' => $this->chat_id, 'chat_id' => $this->chat_id,
'user_id' => $this->user_id 'user_id' => $this->user_id
]; ];
} }
/** /**
* Constructs object from an array representation * @inheritDoc
*
* @param array $data
* @return BotCommandScopeChatMember
*/ */
public static function fromArray(array $data): self public static function fromArray(array $data): self
{ {
$object = new self(); $object = new self();
$object->type = BotCommandScopeType::CHAT_MEMBER;
$object->type = $data['type'] ?? BotCommandScopeType::CHAT_MEMBER;
$object->chat_id = $data['chat_id'] ?? null; $object->chat_id = $data['chat_id'] ?? null;
$object->user_id = $data['user_id'] ?? null; $object->user_id = $data['user_id'] ?? null;
return $object; return $object;
} }
/**
* Constructs object from BotCommandScope
*
* @param BotCommandScope $botCommandScope
* @return static
*/
public static function fromBotCommandScope(BotCommandScope $botCommandScope): self
{
$object = new self();
$object->type = $botCommandScope->getType();
$object->chat_id = $botCommandScope->getChatId();
$object->user_id = $botCommandScope->getUserId();
return $object;
}
} }

View file

@ -8,61 +8,25 @@
use TgBotLib\Interfaces\ObjectTypeInterface; use TgBotLib\Interfaces\ObjectTypeInterface;
use TgBotLib\Objects\BotCommandScope; use TgBotLib\Objects\BotCommandScope;
class BotCommandScopeDefault implements ObjectTypeInterface class BotCommandScopeDefault extends BotCommandScope implements ObjectTypeInterface
{ {
/** /**
* @var string * @inheritDoc
*/
private $type;
/**
* Scope type, must be default
*
* @return string
*/
public function getType(): string
{
return $this->type;
}
/**
* Returns an array representation of the object
*
* @return string[]
*/ */
public function toArray(): array public function toArray(): array
{ {
return [ return [
'type' => $this->type 'type' => $this->type->value
]; ];
} }
/** /**
* Constructs object from an array representation * @inheritDoc
*
* @param array $data
* @return BotCommandScopeDefault
*/ */
public static function fromArray(array $data): self public static function fromArray(array $data): BotCommandScopeDefault
{ {
$object = new self(); $object = new self();
$object->type = BotCommandScopeType::DEFAULT;
$object->type = $data['type'] ?? BotCommandScopeType::DEFAULT;
return $object;
}
/**
* Constructs object from BotCommandScope
*
* @param BotCommandScope $botCommandScope
* @return BotCommandScopeDefault
*/
public static function fromBotCommandScope(BotCommandScope $botCommandScope): BotCommandScopeDefault
{
$object = new self();
$object->type = $botCommandScope->getType();
return $object; return $object;
} }