diff --git a/docs b/docs index 1af009547..355943bfe 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit 1af0095472c40f98ae4bdd4af7d741ce36839eaf +Subproject commit 355943bfe72fac6b1e42301a5c1db6f5a1029841 diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 82307cadc..fdd9746c0 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -407,11 +407,6 @@ new $class - - - $type - - replyCache]]> @@ -438,6 +433,11 @@ wrapMessage($client->extractMessage($result))]]> + + + $type + + $peerResolved @@ -663,6 +663,11 @@ getIdInternal($rawParticipant['peer'])]]> + + + + + Message @@ -698,7 +703,7 @@ wrapMedia($rawStory['media'], $this->protected)]]> - + diff --git a/src/API.php b/src/API.php index b557641df..aa5890116 100644 --- a/src/API.php +++ b/src/API.php @@ -51,7 +51,7 @@ final class API extends AbstractAPI * * @var string */ - public const RELEASE = '8.0.0-beta144'; + public const RELEASE = '8.0.0-beta145'; /** * Secret chat was not found. * diff --git a/src/AnnotationsBuilder.php b/src/AnnotationsBuilder.php index 3196920b7..7b0e935c3 100644 --- a/src/AnnotationsBuilder.php +++ b/src/AnnotationsBuilder.php @@ -550,7 +550,7 @@ final class Blacklist { $had = []; foreach (ClassFinder::getClassesInNamespace(\danog\MadelineProto\EventHandler::class, ClassFinder::RECURSIVE_MODE) as $class) { $name = \basename(\str_replace('\\', '//', $class)); - if (isset($had[$name]) || $name === 'Status') { + if (isset($had[$name]) || $name === 'Status' || $name === 'Action') { continue; } $had[$name] = true; diff --git a/src/EventHandler/AbstractMessage.php b/src/EventHandler/AbstractMessage.php index 9160e3c5b..2c6c045f7 100644 --- a/src/EventHandler/AbstractMessage.php +++ b/src/EventHandler/AbstractMessage.php @@ -305,7 +305,7 @@ abstract class AbstractMessage extends Update implements SimpleFilters * * @return boolean */ - public function setAction(AbstractAction $action = new Typing): bool + public function setAction(Action $action = new Typing): bool { $action = $action->toRawAction() + [ 'msg_id' => $this->id ]; return $this->getClient()->methodCallAsyncRead( diff --git a/src/EventHandler/AbstractAction.php b/src/EventHandler/Action.php similarity index 96% rename from src/EventHandler/AbstractAction.php rename to src/EventHandler/Action.php index 43c1cf8bd..003d38a1f 100644 --- a/src/EventHandler/AbstractAction.php +++ b/src/EventHandler/Action.php @@ -38,11 +38,12 @@ use ReflectionClass; use ReflectionProperty; /** - * Typing events. + * In-progress actions. */ -abstract class AbstractAction implements JsonSerializable +abstract class Action implements JsonSerializable { - public static function fromRawAction(array $rawAction): AbstractAction + /** @internal */ + public static function fromRawAction(array $rawAction): Action { $type = $rawAction['_']; if ($type === 'sendMessageEmojiInteraction') { @@ -73,6 +74,7 @@ abstract class AbstractAction implements JsonSerializable }; } + /** @internal */ public function toRawAction(): array { return match (true) { diff --git a/src/EventHandler/Action/Cancel.php b/src/EventHandler/Action/Cancel.php index b8bd909fa..324a96655 100644 --- a/src/EventHandler/Action/Cancel.php +++ b/src/EventHandler/Action/Cancel.php @@ -16,11 +16,11 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * Invalidate all previous action updates. E.g. when user deletes entered text or aborts a video upload. */ -final class Cancel extends AbstractAction +final class Cancel extends Action { } diff --git a/src/EventHandler/Action/ChooseContact.php b/src/EventHandler/Action/ChooseContact.php index b8034a6d0..8fddc9ea5 100644 --- a/src/EventHandler/Action/ChooseContact.php +++ b/src/EventHandler/Action/ChooseContact.php @@ -16,11 +16,11 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is selecting a contact to share. */ -final class ChooseContact extends AbstractAction +final class ChooseContact extends Action { } diff --git a/src/EventHandler/Action/ChooseSticker.php b/src/EventHandler/Action/ChooseSticker.php index becc149a5..e7df01816 100644 --- a/src/EventHandler/Action/ChooseSticker.php +++ b/src/EventHandler/Action/ChooseSticker.php @@ -16,11 +16,11 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is choosing a sticker. */ -final class ChooseSticker extends AbstractAction +final class ChooseSticker extends Action { } diff --git a/src/EventHandler/Action/EmojiSeen.php b/src/EventHandler/Action/EmojiSeen.php index c620f875c..7ab36d994 100644 --- a/src/EventHandler/Action/EmojiSeen.php +++ b/src/EventHandler/Action/EmojiSeen.php @@ -16,12 +16,12 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is watching an animated emoji reaction triggered by another user, [click here for more info »](https://core.telegram.org/api/animated-emojis#emoji-reactions). */ -final class EmojiSeen extends AbstractAction +final class EmojiSeen extends Action { public function __construct( /** @var string Emoji */ diff --git a/src/EventHandler/Action/EmojiTap.php b/src/EventHandler/Action/EmojiTap.php index a86d0c929..c6165b1d2 100644 --- a/src/EventHandler/Action/EmojiTap.php +++ b/src/EventHandler/Action/EmojiTap.php @@ -16,12 +16,12 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User has clicked on an animated emoji triggering a [reaction, click here for more info »](https://core.telegram.org/api/animated-emojis#emoji-reactions). */ -final class EmojiTap extends AbstractAction +final class EmojiTap extends Action { public function __construct( /** @var string Emoji */ diff --git a/src/EventHandler/Action/GamePlay.php b/src/EventHandler/Action/GamePlay.php index 7da241504..a6cce73f7 100644 --- a/src/EventHandler/Action/GamePlay.php +++ b/src/EventHandler/Action/GamePlay.php @@ -16,11 +16,11 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is playing a game. */ -final class GamePlay extends AbstractAction +final class GamePlay extends Action { } diff --git a/src/EventHandler/Action/GeoLocation.php b/src/EventHandler/Action/GeoLocation.php index c3964a17f..371728f1b 100644 --- a/src/EventHandler/Action/GeoLocation.php +++ b/src/EventHandler/Action/GeoLocation.php @@ -16,11 +16,11 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is selecting a location to share. */ -final class GeoLocation extends AbstractAction +final class GeoLocation extends Action { } diff --git a/src/EventHandler/Action/GroupCallSpeaking.php b/src/EventHandler/Action/GroupCallSpeaking.php index e83a94a79..b28a2c708 100644 --- a/src/EventHandler/Action/GroupCallSpeaking.php +++ b/src/EventHandler/Action/GroupCallSpeaking.php @@ -16,11 +16,11 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is currently speaking in the group call. */ -final class GroupCallSpeaking extends AbstractAction +final class GroupCallSpeaking extends Action { } diff --git a/src/EventHandler/Action/HistoryImport.php b/src/EventHandler/Action/HistoryImport.php index 71338ee11..8fef80a67 100644 --- a/src/EventHandler/Action/HistoryImport.php +++ b/src/EventHandler/Action/HistoryImport.php @@ -16,12 +16,12 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * Chat history is being imported. */ -final class HistoryImport extends AbstractAction +final class HistoryImport extends Action { public function __construct( /** @var ?int Progress percentage */ diff --git a/src/EventHandler/Action/RecordAudio.php b/src/EventHandler/Action/RecordAudio.php index c1cdeb646..fc8d431c3 100644 --- a/src/EventHandler/Action/RecordAudio.php +++ b/src/EventHandler/Action/RecordAudio.php @@ -16,11 +16,11 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is recording a voice message. */ -final class RecordAudio extends AbstractAction +final class RecordAudio extends Action { } diff --git a/src/EventHandler/Action/RecordRound.php b/src/EventHandler/Action/RecordRound.php index 451e074f4..1fa9d2823 100644 --- a/src/EventHandler/Action/RecordRound.php +++ b/src/EventHandler/Action/RecordRound.php @@ -16,11 +16,11 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is recording a round video to share. */ -final class RecordRound extends AbstractAction +final class RecordRound extends Action { } diff --git a/src/EventHandler/Action/RecordVideo.php b/src/EventHandler/Action/RecordVideo.php index 2068f575d..0c5284b8a 100644 --- a/src/EventHandler/Action/RecordVideo.php +++ b/src/EventHandler/Action/RecordVideo.php @@ -16,11 +16,11 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is recording a video. */ -final class RecordVideo extends AbstractAction +final class RecordVideo extends Action { } diff --git a/src/EventHandler/Action/Typing.php b/src/EventHandler/Action/Typing.php index df7108d6b..f1a364e42 100644 --- a/src/EventHandler/Action/Typing.php +++ b/src/EventHandler/Action/Typing.php @@ -16,11 +16,11 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is typing. */ -final class Typing extends AbstractAction +final class Typing extends Action { } diff --git a/src/EventHandler/Action/UploadAudio.php b/src/EventHandler/Action/UploadAudio.php index 525a18553..0c9e970a7 100644 --- a/src/EventHandler/Action/UploadAudio.php +++ b/src/EventHandler/Action/UploadAudio.php @@ -16,12 +16,12 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is uploading a voice message. */ -final class UploadAudio extends AbstractAction +final class UploadAudio extends Action { public function __construct( /** @var ?int Progress percentage */ diff --git a/src/EventHandler/Action/UploadDocument.php b/src/EventHandler/Action/UploadDocument.php index 76f06cd6c..5c011fbb8 100644 --- a/src/EventHandler/Action/UploadDocument.php +++ b/src/EventHandler/Action/UploadDocument.php @@ -16,12 +16,12 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is uploading a file. */ -final class UploadDocument extends AbstractAction +final class UploadDocument extends Action { public function __construct( /** @var ?int Progress percentage */ diff --git a/src/EventHandler/Action/UploadPhoto.php b/src/EventHandler/Action/UploadPhoto.php index f13b9b752..c4f1399f1 100644 --- a/src/EventHandler/Action/UploadPhoto.php +++ b/src/EventHandler/Action/UploadPhoto.php @@ -16,12 +16,12 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is uploading a photo. */ -final class UploadPhoto extends AbstractAction +final class UploadPhoto extends Action { public function __construct( /** @var ?int Progress percentage */ diff --git a/src/EventHandler/Action/UploadRound.php b/src/EventHandler/Action/UploadRound.php index 277c0941c..60e5d652d 100644 --- a/src/EventHandler/Action/UploadRound.php +++ b/src/EventHandler/Action/UploadRound.php @@ -16,12 +16,12 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is uploading a round video. */ -final class UploadRound extends AbstractAction +final class UploadRound extends Action { public function __construct( /** @var ?int Progress percentage */ diff --git a/src/EventHandler/Action/UploadVideo.php b/src/EventHandler/Action/UploadVideo.php index 85d6c832e..d2fbbc2bb 100644 --- a/src/EventHandler/Action/UploadVideo.php +++ b/src/EventHandler/Action/UploadVideo.php @@ -16,12 +16,12 @@ namespace danog\MadelineProto\EventHandler\Action; -use danog\MadelineProto\EventHandler\AbstractAction; +use danog\MadelineProto\EventHandler\Action; /** * User is uploading a video. */ -final class UploadVideo extends AbstractAction +final class UploadVideo extends Action { public function __construct( /** @var ?int Progress percentage */ diff --git a/src/EventHandler/Message/Service/AbstractDialogGroupCall.php b/src/EventHandler/Message/Service/DialogGroupCall.php similarity index 96% rename from src/EventHandler/Message/Service/AbstractDialogGroupCall.php rename to src/EventHandler/Message/Service/DialogGroupCall.php index 413b07762..bd5a36a86 100644 --- a/src/EventHandler/Message/Service/AbstractDialogGroupCall.php +++ b/src/EventHandler/Message/Service/DialogGroupCall.php @@ -22,7 +22,7 @@ use danog\MadelineProto\MTProto; /** * Represents a service message about a group call. */ -abstract class AbstractDialogGroupCall extends ServiceMessage +abstract class DialogGroupCall extends ServiceMessage { /** Group call ID */ public readonly int $callId; diff --git a/src/EventHandler/Message/Service/DialogGroupCall/GroupCall.php b/src/EventHandler/Message/Service/DialogGroupCall/GroupCall.php index 25001f302..3dd52575f 100644 --- a/src/EventHandler/Message/Service/DialogGroupCall/GroupCall.php +++ b/src/EventHandler/Message/Service/DialogGroupCall/GroupCall.php @@ -16,13 +16,13 @@ namespace danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall; -use danog\MadelineProto\EventHandler\Message\Service\AbstractDialogGroupCall; +use danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall; use danog\MadelineProto\MTProto; /** * The group call has started or ended. */ -final class GroupCall extends AbstractDialogGroupCall +final class GroupCall extends DialogGroupCall { /** @var bool Whether that group call ended or not. */ public readonly bool $ended; diff --git a/src/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.php b/src/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.php index 379526456..76f852cd2 100644 --- a/src/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.php +++ b/src/EventHandler/Message/Service/DialogGroupCall/GroupCallInvited.php @@ -16,13 +16,13 @@ namespace danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall; -use danog\MadelineProto\EventHandler\Message\Service\AbstractDialogGroupCall; +use danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall; use danog\MadelineProto\MTProto; /** * A set of users was invited to the group call. */ -final class GroupCallInvited extends AbstractDialogGroupCall +final class GroupCallInvited extends DialogGroupCall { public function __construct( MTProto $API, diff --git a/src/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.php b/src/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.php index ad7042ed3..6b7ca804b 100644 --- a/src/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.php +++ b/src/EventHandler/Message/Service/DialogGroupCall/GroupCallScheduled.php @@ -16,13 +16,13 @@ namespace danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall; -use danog\MadelineProto\EventHandler\Message\Service\AbstractDialogGroupCall; +use danog\MadelineProto\EventHandler\Message\Service\DialogGroupCall; use danog\MadelineProto\MTProto; /** * A group call was scheduled. */ -final class GroupCallScheduled extends AbstractDialogGroupCall +final class GroupCallScheduled extends DialogGroupCall { public function __construct( MTProto $API, diff --git a/src/EventHandler/Privacy.php b/src/EventHandler/Privacy.php index 429920311..efe96e844 100644 --- a/src/EventHandler/Privacy.php +++ b/src/EventHandler/Privacy.php @@ -16,8 +16,8 @@ namespace danog\MadelineProto\EventHandler; -use danog\MadelineProto\EventHandler\Privacy\AbstractRule; -use danog\MadelineProto\EventHandler\Privacy\Key; +use danog\MadelineProto\EventHandler\Privacy\Rule; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination; use danog\MadelineProto\MTProto; /** @@ -26,16 +26,16 @@ use danog\MadelineProto\MTProto; final class Privacy extends Update { /** New privacy rule. */ - public readonly Key $key; + public readonly Rule $rule; - /** Peers to which the privacy rules apply */ - public readonly array $rules; + /** @var list Peers to which the privacy rules apply */ + public readonly array $appliesTo; /** @internal */ public function __construct(MTProto $API, array $rawPrivacy) { parent::__construct($API); - $this->key = Key::fromRawKey($rawPrivacy['key']['_']); - $this->rules = \array_map(AbstractRule::fromRawRule(...), $rawPrivacy['rules']); + $this->rule = Rule::fromRawKey($rawPrivacy['key']['_']); + $this->appliesTo = \array_map(RuleDestination::fromRawRule(...), $rawPrivacy['rules']); } } diff --git a/src/EventHandler/Privacy/Key.php b/src/EventHandler/Privacy/Rule.php similarity index 91% rename from src/EventHandler/Privacy/Key.php rename to src/EventHandler/Privacy/Rule.php index 87e4576e8..95609ef59 100644 --- a/src/EventHandler/Privacy/Key.php +++ b/src/EventHandler/Privacy/Rule.php @@ -19,7 +19,8 @@ namespace danog\MadelineProto\EventHandler\Privacy; use AssertionError; use JsonSerializable; -enum Key: string implements JsonSerializable +/** Represents a privacy rule. */ +enum Rule: string implements JsonSerializable { /** Whether we can see the last online timestamp of this user */ case STATUS_TIMESTAMP = 'privacyKeyStatusTimestamp'; @@ -39,17 +40,17 @@ enum Key: string implements JsonSerializable case ADDED_BY_PHONE = 'privacyKeyAddedByPhone'; /** Whether the user accepts voice messages */ case VOICE_MESSAGES = 'privacyKeyVoiceMessages'; - + /** Whether the user can see our bio. */ case ABOUT = 'privacyKeyAbout'; /** - * + * @internal * * @throws AssertionError */ - public static function fromRawKey(string $key): Key + public static function fromRawKey(string $key): Rule { - foreach (Key::cases() as $case) { + foreach (Rule::cases() as $case) { if ($case->value === $key) { return $case; } diff --git a/src/EventHandler/Privacy/AbstractRule.php b/src/EventHandler/Privacy/RuleDestination.php similarity index 71% rename from src/EventHandler/Privacy/AbstractRule.php rename to src/EventHandler/Privacy/RuleDestination.php index 68a542b3b..ad6f9649c 100644 --- a/src/EventHandler/Privacy/AbstractRule.php +++ b/src/EventHandler/Privacy/RuleDestination.php @@ -16,22 +16,25 @@ namespace danog\MadelineProto\EventHandler\Privacy; -use danog\MadelineProto\EventHandler\Privacy\Rule\AllowAll; -use danog\MadelineProto\EventHandler\Privacy\Rule\AllowChatParticipants; -use danog\MadelineProto\EventHandler\Privacy\Rule\AllowCloseFriends; -use danog\MadelineProto\EventHandler\Privacy\Rule\AllowContacts; -use danog\MadelineProto\EventHandler\Privacy\Rule\AllowUsers; -use danog\MadelineProto\EventHandler\Privacy\Rule\DisallowAll; -use danog\MadelineProto\EventHandler\Privacy\Rule\DisallowChatParticipants; -use danog\MadelineProto\EventHandler\Privacy\Rule\DisallowContacts; -use danog\MadelineProto\EventHandler\Privacy\Rule\DisallowUsers; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowAll; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowChatParticipants; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowCloseFriends; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowContacts; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination\AllowUsers; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination\DisallowAll; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination\DisallowChatParticipants; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination\DisallowContacts; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination\DisallowUsers; use JsonSerializable; use ReflectionClass; use ReflectionProperty; -abstract class AbstractRule implements JsonSerializable +/** + * To whom does a privacy rule apply? + */ +abstract class RuleDestination implements JsonSerializable { - public static function fromRawRule(array $rawRule): AbstractRule + public static function fromRawRule(array $rawRule): RuleDestination { return match ($rawRule['_']) { 'privacyValueAllowAll' => new AllowAll, diff --git a/src/EventHandler/Privacy/Rule/AllowAll.php b/src/EventHandler/Privacy/RuleDestination/AllowAll.php similarity index 85% rename from src/EventHandler/Privacy/Rule/AllowAll.php rename to src/EventHandler/Privacy/RuleDestination/AllowAll.php index 86c5e1b44..bdbe43f55 100644 --- a/src/EventHandler/Privacy/Rule/AllowAll.php +++ b/src/EventHandler/Privacy/RuleDestination/AllowAll.php @@ -14,13 +14,13 @@ * @link https://docs.madelineproto.xyz MadelineProto documentation */ -namespace danog\MadelineProto\EventHandler\Privacy\Rule; +namespace danog\MadelineProto\EventHandler\Privacy\RuleDestination; -use danog\MadelineProto\EventHandler\Privacy\AbstractRule; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination; /** * Allow all users. */ -final class AllowAll extends AbstractRule +final class AllowAll extends RuleDestination { } diff --git a/src/EventHandler/Privacy/Rule/AllowChatParticipants.php b/src/EventHandler/Privacy/RuleDestination/AllowChatParticipants.php similarity index 86% rename from src/EventHandler/Privacy/Rule/AllowChatParticipants.php rename to src/EventHandler/Privacy/RuleDestination/AllowChatParticipants.php index 8eb810f09..007471292 100644 --- a/src/EventHandler/Privacy/Rule/AllowChatParticipants.php +++ b/src/EventHandler/Privacy/RuleDestination/AllowChatParticipants.php @@ -14,14 +14,14 @@ * @link https://docs.madelineproto.xyz MadelineProto documentation */ -namespace danog\MadelineProto\EventHandler\Privacy\Rule; +namespace danog\MadelineProto\EventHandler\Privacy\RuleDestination; -use danog\MadelineProto\EventHandler\Privacy\AbstractRule; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination; /** * Allow all participants of certain chats. */ -final class AllowChatParticipants extends AbstractRule +final class AllowChatParticipants extends RuleDestination { /** Allowed chats */ public readonly array $chats; diff --git a/src/EventHandler/Privacy/Rule/AllowCloseFriends.php b/src/EventHandler/Privacy/RuleDestination/AllowCloseFriends.php similarity index 84% rename from src/EventHandler/Privacy/Rule/AllowCloseFriends.php rename to src/EventHandler/Privacy/RuleDestination/AllowCloseFriends.php index c6dc40581..615723548 100644 --- a/src/EventHandler/Privacy/Rule/AllowCloseFriends.php +++ b/src/EventHandler/Privacy/RuleDestination/AllowCloseFriends.php @@ -14,10 +14,10 @@ * @link https://docs.madelineproto.xyz MadelineProto documentation */ -namespace danog\MadelineProto\EventHandler\Privacy\Rule; +namespace danog\MadelineProto\EventHandler\Privacy\RuleDestination; -use danog\MadelineProto\EventHandler\Privacy\AbstractRule; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination; -final class AllowCloseFriends extends AbstractRule +final class AllowCloseFriends extends RuleDestination { } diff --git a/src/EventHandler/Privacy/Rule/AllowContacts.php b/src/EventHandler/Privacy/RuleDestination/AllowContacts.php similarity index 85% rename from src/EventHandler/Privacy/Rule/AllowContacts.php rename to src/EventHandler/Privacy/RuleDestination/AllowContacts.php index 902287ded..0994a8c44 100644 --- a/src/EventHandler/Privacy/Rule/AllowContacts.php +++ b/src/EventHandler/Privacy/RuleDestination/AllowContacts.php @@ -14,13 +14,13 @@ * @link https://docs.madelineproto.xyz MadelineProto documentation */ -namespace danog\MadelineProto\EventHandler\Privacy\Rule; +namespace danog\MadelineProto\EventHandler\Privacy\RuleDestination; -use danog\MadelineProto\EventHandler\Privacy\AbstractRule; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination; /** * Allow all contacts. */ -final class AllowContacts extends AbstractRule +final class AllowContacts extends RuleDestination { } diff --git a/src/EventHandler/Privacy/Rule/AllowUsers.php b/src/EventHandler/Privacy/RuleDestination/AllowUsers.php similarity index 87% rename from src/EventHandler/Privacy/Rule/AllowUsers.php rename to src/EventHandler/Privacy/RuleDestination/AllowUsers.php index c1a7a45f2..aba80346d 100644 --- a/src/EventHandler/Privacy/Rule/AllowUsers.php +++ b/src/EventHandler/Privacy/RuleDestination/AllowUsers.php @@ -14,14 +14,14 @@ * @link https://docs.madelineproto.xyz MadelineProto documentation */ -namespace danog\MadelineProto\EventHandler\Privacy\Rule; +namespace danog\MadelineProto\EventHandler\Privacy\RuleDestination; -use danog\MadelineProto\EventHandler\Privacy\AbstractRule; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination; /** * Allow only certain user. */ -final class AllowUsers extends AbstractRule +final class AllowUsers extends RuleDestination { /** Allowed users */ public readonly array $users; diff --git a/src/EventHandler/Privacy/Rule/DisallowAll.php b/src/EventHandler/Privacy/RuleDestination/DisallowAll.php similarity index 85% rename from src/EventHandler/Privacy/Rule/DisallowAll.php rename to src/EventHandler/Privacy/RuleDestination/DisallowAll.php index 38773c98b..0d2a76b88 100644 --- a/src/EventHandler/Privacy/Rule/DisallowAll.php +++ b/src/EventHandler/Privacy/RuleDestination/DisallowAll.php @@ -14,13 +14,13 @@ * @link https://docs.madelineproto.xyz MadelineProto documentation */ -namespace danog\MadelineProto\EventHandler\Privacy\Rule; +namespace danog\MadelineProto\EventHandler\Privacy\RuleDestination; -use danog\MadelineProto\EventHandler\Privacy\AbstractRule; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination; /** * Disallow all users. */ -final class DisallowAll extends AbstractRule +final class DisallowAll extends RuleDestination { } diff --git a/src/EventHandler/Privacy/Rule/DisallowChatParticipants.php b/src/EventHandler/Privacy/RuleDestination/DisallowChatParticipants.php similarity index 86% rename from src/EventHandler/Privacy/Rule/DisallowChatParticipants.php rename to src/EventHandler/Privacy/RuleDestination/DisallowChatParticipants.php index b70ae88a2..349ddc5d2 100644 --- a/src/EventHandler/Privacy/Rule/DisallowChatParticipants.php +++ b/src/EventHandler/Privacy/RuleDestination/DisallowChatParticipants.php @@ -14,14 +14,14 @@ * @link https://docs.madelineproto.xyz MadelineProto documentation */ -namespace danog\MadelineProto\EventHandler\Privacy\Rule; +namespace danog\MadelineProto\EventHandler\Privacy\RuleDestination; -use danog\MadelineProto\EventHandler\Privacy\AbstractRule; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination; /** * Disallow only participants of certain chats. */ -final class DisallowChatParticipants extends AbstractRule +final class DisallowChatParticipants extends RuleDestination { /** Allowed chats */ public readonly array $chats; diff --git a/src/EventHandler/Privacy/Rule/DisallowContacts.php b/src/EventHandler/Privacy/RuleDestination/DisallowContacts.php similarity index 85% rename from src/EventHandler/Privacy/Rule/DisallowContacts.php rename to src/EventHandler/Privacy/RuleDestination/DisallowContacts.php index a459a141c..b177ac14a 100644 --- a/src/EventHandler/Privacy/Rule/DisallowContacts.php +++ b/src/EventHandler/Privacy/RuleDestination/DisallowContacts.php @@ -14,13 +14,13 @@ * @link https://docs.madelineproto.xyz MadelineProto documentation */ -namespace danog\MadelineProto\EventHandler\Privacy\Rule; +namespace danog\MadelineProto\EventHandler\Privacy\RuleDestination; -use danog\MadelineProto\EventHandler\Privacy\AbstractRule; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination; /** * Disallow only contacts. */ -final class DisallowContacts extends AbstractRule +final class DisallowContacts extends RuleDestination { } diff --git a/src/EventHandler/Privacy/Rule/DisallowUsers.php b/src/EventHandler/Privacy/RuleDestination/DisallowUsers.php similarity index 87% rename from src/EventHandler/Privacy/Rule/DisallowUsers.php rename to src/EventHandler/Privacy/RuleDestination/DisallowUsers.php index 04f3e8067..005055a19 100644 --- a/src/EventHandler/Privacy/Rule/DisallowUsers.php +++ b/src/EventHandler/Privacy/RuleDestination/DisallowUsers.php @@ -14,14 +14,14 @@ * @link https://docs.madelineproto.xyz MadelineProto documentation */ -namespace danog\MadelineProto\EventHandler\Privacy\Rule; +namespace danog\MadelineProto\EventHandler\Privacy\RuleDestination; -use danog\MadelineProto\EventHandler\Privacy\AbstractRule; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination; /** * Disallow only certain users. */ -final class DisallowUsers extends AbstractRule +final class DisallowUsers extends RuleDestination { /** Allowed users */ public readonly array $users; diff --git a/src/EventHandler/Story/Story.php b/src/EventHandler/Story/Story.php index 16d1a0ec5..fb48346da 100644 --- a/src/EventHandler/Story/Story.php +++ b/src/EventHandler/Story/Story.php @@ -24,7 +24,7 @@ use danog\MadelineProto\EventHandler\Media\Video; use danog\MadelineProto\EventHandler\Message; use danog\MadelineProto\EventHandler\Message\Entities\MessageEntity; use danog\MadelineProto\EventHandler\Message\ReportReason; -use danog\MadelineProto\EventHandler\Privacy\AbstractRule; +use danog\MadelineProto\EventHandler\Privacy\RuleDestination; use danog\MadelineProto\Ipc\Client; use danog\MadelineProto\MTProto; use danog\MadelineProto\ParseMode; @@ -74,7 +74,7 @@ final class Story extends AbstractStory /** A set of physical coordinates associated to this story */ //public readonly ?array $mediaAreas; //! - /** @var list */ + /** @var list */ public readonly array $privacy; /** Our reaction to the story */ @@ -113,7 +113,7 @@ final class Story extends AbstractStory $this->media = $API->wrapMedia($rawStory['media'], $this->protected); $this->entities = MessageEntity::fromRawEntities($rawStory['entities'] ?? []); - $this->privacy = \array_map(AbstractRule::fromRawRule(...), $rawStory['privacy'] ?? []); + $this->privacy = \array_map(RuleDestination::fromRawRule(...), $rawStory['privacy'] ?? []); $this->recentViewers = $rawStory['views']['recent_viewers'] ?? []; $this->views = $rawStory['views']['views_count'] ?? null; diff --git a/src/EventHandler/AbstractTyping.php b/src/EventHandler/Typing.php similarity index 84% rename from src/EventHandler/AbstractTyping.php rename to src/EventHandler/Typing.php index 6cf1365a5..0a57f1b9d 100644 --- a/src/EventHandler/AbstractTyping.php +++ b/src/EventHandler/Typing.php @@ -21,19 +21,19 @@ use danog\MadelineProto\MTProto; /** * A user is typing. */ -abstract class AbstractTyping extends Update +abstract class Typing extends Update { /** @var int The user id that is typing. */ public readonly int $userId; - /** @var AbstractAction Whether the user is typing, sending a media or doing something else. */ - public readonly AbstractAction $action; + /** @var Action Whether the user is typing, sending a media or doing something else. */ + public readonly Action $action; /** @internal */ public function __construct(MTProto $API, array $rawTyping) { parent::__construct($API); $this->userId = $rawTyping['user_id'] ?? $API->getIdInternal($rawTyping['from_id']); - $this->action = AbstractAction::fromRawAction($rawTyping['action']); + $this->action = Action::fromRawAction($rawTyping['action']); } } diff --git a/src/EventHandler/Typing/SupergroupUserTyping.php b/src/EventHandler/Typing/SupergroupUserTyping.php index 5a4d23fe3..84043ded1 100644 --- a/src/EventHandler/Typing/SupergroupUserTyping.php +++ b/src/EventHandler/Typing/SupergroupUserTyping.php @@ -16,14 +16,14 @@ namespace danog\MadelineProto\EventHandler\Typing; -use danog\MadelineProto\EventHandler\AbstractTyping; +use danog\MadelineProto\EventHandler\Typing; use danog\MadelineProto\MTProto; use danog\MadelineProto\MTProtoTools\DialogId; /** * A user is typing in a [supergroup](https://core.telegram.org/api/channel). */ -final class SupergroupUserTyping extends AbstractTyping +final class SupergroupUserTyping extends Typing { /** @var int Channel ID. */ public readonly int $chatId; diff --git a/src/EventHandler/Typing/UserTyping.php b/src/EventHandler/Typing/UserTyping.php index b2d297550..6ecd7b0f0 100644 --- a/src/EventHandler/Typing/UserTyping.php +++ b/src/EventHandler/Typing/UserTyping.php @@ -16,13 +16,13 @@ namespace danog\MadelineProto\EventHandler\Typing; -use danog\MadelineProto\EventHandler\AbstractTyping; +use danog\MadelineProto\EventHandler\Typing; use danog\MadelineProto\MTProto; /** * The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no further updates of this kind are received after 6 seconds, it should be considered that the user stopped doing whatever they were doing. */ -final class UserTyping extends AbstractTyping +final class UserTyping extends Typing { /** @internal */ public function __construct(MTProto $API, array $rawTyping) diff --git a/src/EventHandler/User/Status/Emoji.php b/src/EventHandler/User/Status/Emoji.php index e4fa3552b..24fda5304 100644 --- a/src/EventHandler/User/Status/Emoji.php +++ b/src/EventHandler/User/Status/Emoji.php @@ -20,7 +20,7 @@ use danog\MadelineProto\EventHandler\User\Status; use danog\MadelineProto\MTProto; /** - * The [emoji status](https://core.telegram.org/api/emoji-status) of a certain user has changed or removed. + * The [emoji status](https://core.telegram.org/api/emoji-status) of a certain user has changed or was removed. */ final class Emoji extends Status { diff --git a/src/InternalDoc.php b/src/InternalDoc.php index 1d1a29027..d05ef3870 100644 --- a/src/InternalDoc.php +++ b/src/InternalDoc.php @@ -37,7 +37,6 @@ use danog\MadelineProto\EventHandler\Message\Entities\Spoiler; use danog\MadelineProto\EventHandler\Message\Entities\Url; use danog\MadelineProto\EventHandler\Participant\Admin; use danog\MadelineProto\EventHandler\Participant\Member; -use danog\MadelineProto\EventHandler\Privacy\Key; use danog\MadelineProto\EventHandler\Update; use danog\MadelineProto\EventHandler\User\Status\Emoji; use danog\MadelineProto\EventHandler\User\Username;