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

View file

@ -8,61 +8,25 @@
use TgBotLib\Interfaces\ObjectTypeInterface;
use TgBotLib\Objects\BotCommandScope;
class BotCommandScopeAllPrivateChats implements ObjectTypeInterface
class BotCommandScopeAllPrivateChats extends BotCommandScope implements ObjectTypeInterface
{
/**
* @var string
*/
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
* @inheritDoc
*/
public function toArray(): array
{
return [
'type' => $this->type
'type' => $this->type->value
];
}
/**
* Constructs object from an array representation
*
* @param array $data
* @return BotCommandScopeAllPrivateChats
* @inheritDoc
*/
public static function fromArray(array $data): self
public static function fromArray(array $data): BotCommandScopeAllPrivateChats
{
$object = new self();
$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();
$object->type = BotCommandScopeType::ALL_PRIVATE_CHATS;
return $object;
}

View file

@ -8,27 +8,12 @@
use TgBotLib\Interfaces\ObjectTypeInterface;
use TgBotLib\Objects\BotCommandScope;
class BotCommandScopeChat implements ObjectTypeInterface
class BotCommandScopeChat extends BotCommandScope implements ObjectTypeInterface
{
/**
* @var string
*/
private $type;
/**
* @var int|string
*/
private $chat_id;
/**
* Scope type, must be chat
*
* @return string
*/
public function getType(): string
{
return $this->type;
}
private int|string $chat_id;
/**
* 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
*
* @return array
* @inheritDoc
*/
public function toArray(): array
{
return [
'type' => $this->type,
'type' => $this->type->value,
'chat_id' => $this->chat_id
];
}
/**
* Constructs object from an array representation
*
* @param array $data
* @return BotCommandScopeChat
* @inheritDoc
*/
public static function fromArray(array $data): self
{
$object = new self();
$object->type = $data['type'] ?? BotCommandScopeType::CHAT;
$object->type = BotCommandScopeType::CHAT;
$object->chat_id = $data['chat_id'] ?? null;
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\Objects\BotCommandScope;
class BotCommandScopeChatAdministrators implements ObjectTypeInterface
class BotCommandScopeChatAdministrators extends BotCommandScope implements ObjectTypeInterface
{
/**
* @var string
*/
private $type;
/**
* Scope type, must be chat_administrators
*
* @return string
*/
public function getType(): string
{
return $this->type;
}
/**
* Returns an array representation of the object
*
* @return array
* @inheritDoc
*/
public function toArray(): array
{
return [
'type' => $this->type
'type' => $this->type->value
];
}
/**
* Constructs object from an array representation
*
* @param array $data
* @return BotCommandScopeChatAdministrators
* @inheritDoc
*/
public static function fromArray(array $data): self
{
$object = new self();
$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();
$object->type = BotCommandScopeType::CHAT_ADMINISTRATORS;
return $object;
}

View file

@ -8,32 +8,10 @@
use TgBotLib\Interfaces\ObjectTypeInterface;
use TgBotLib\Objects\BotCommandScope;
class BotCommandScopeChatMember implements ObjectTypeInterface
class BotCommandScopeChatMember extends BotCommandScope implements ObjectTypeInterface
{
/**
* @var string
*/
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;
}
private string|int $chat_id;
private int $user_id;
/**
* 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
*
* @return array
* @inheritDoc
*/
public function toArray(): array
{
return [
'type' => $this->type,
'type' => $this->type->value,
'chat_id' => $this->chat_id,
'user_id' => $this->user_id
];
}
/**
* Constructs object from an array representation
*
* @param array $data
* @return BotCommandScopeChatMember
* @inheritDoc
*/
public static function fromArray(array $data): self
{
$object = new self();
$object->type = $data['type'] ?? BotCommandScopeType::CHAT_MEMBER;
$object->type = BotCommandScopeType::CHAT_MEMBER;
$object->chat_id = $data['chat_id'] ?? null;
$object->user_id = $data['user_id'] ?? null;
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\Objects\BotCommandScope;
class BotCommandScopeDefault implements ObjectTypeInterface
class BotCommandScopeDefault extends BotCommandScope implements ObjectTypeInterface
{
/**
* @var string
*/
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[]
* @inheritDoc
*/
public function toArray(): array
{
return [
'type' => $this->type
'type' => $this->type->value
];
}
/**
* Constructs object from an array representation
*
* @param array $data
* @return BotCommandScopeDefault
* @inheritDoc
*/
public static function fromArray(array $data): self
public static function fromArray(array $data): BotCommandScopeDefault
{
$object = new self();
$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();
$object->type = BotCommandScopeType::DEFAULT;
return $object;
}