diff --git a/src/Channel.php b/src/Channel.php index 38b48ed..7fe5bba 100644 --- a/src/Channel.php +++ b/src/Channel.php @@ -10,9 +10,12 @@ class Channel private array $users = []; - public function __construct(string $channel) + private bool $persisted; + + public function __construct(string $channel, bool $persisted = false) { $this->channel = $channel; + $this->persisted = $persisted; } public function getName(): string @@ -40,6 +43,11 @@ public function setUsers(array $users): void $this->users = $users; } + public function isPersisted(): bool + { + return $this->persisted; + } + public function __toString() { return $this->getName(); diff --git a/src/Messages/HostTargetMessage.php b/src/Messages/HostTargetMessage.php index e1cca2c..d273f75 100644 --- a/src/Messages/HostTargetMessage.php +++ b/src/Messages/HostTargetMessage.php @@ -2,6 +2,7 @@ namespace GhostZero\Tmi\Messages; +use GhostZero\Tmi\Channel; use GhostZero\Tmi\Client; use GhostZero\Tmi\Events\Twitch\HostingEvent; use GhostZero\Tmi\Events\Twitch\UnhostEvent; @@ -23,6 +24,8 @@ public function handle(Client $client, array $channels): array { if (array_key_exists($this->commandSuffix, $channels)) { $this->channel = $channels[$this->commandSuffix]; + } else { + $this->channel = new Channel($this->commandSuffix); } $msgSplit = explode(' ', $this->payload); diff --git a/src/Messages/KickMessage.php b/src/Messages/KickMessage.php index c0488aa..23ab8e8 100644 --- a/src/Messages/KickMessage.php +++ b/src/Messages/KickMessage.php @@ -28,6 +28,8 @@ public function handle(Client $client, array $channels): array { if (array_key_exists($this->target, $channels)) { $this->channel = $channels[$this->target]; + } else { + $this->channel = new Channel($this->target); } if ($client->getOptions()->getNickname() === $this->user && $client->getOptions()->shouldAutoRejoin()) { diff --git a/src/Messages/NoticeMessage.php b/src/Messages/NoticeMessage.php index 11e9289..0a08959 100644 --- a/src/Messages/NoticeMessage.php +++ b/src/Messages/NoticeMessage.php @@ -37,11 +37,12 @@ public function __construct(string $message) public function handle(Client $client, array $channels): array { - if (!array_key_exists($this->commandSuffix, $channels)) { - return []; + if (array_key_exists($this->commandSuffix, $channels)) { + $this->channel = $channels[$this->commandSuffix]; + } else { + $this->channel = new Channel($this->commandSuffix); } - $this->channel = $channels[$this->commandSuffix]; $msgId = $this->tags['msg-id'] ?? ''; $events = [ new NoticeEvent($this->channel, $msgId), diff --git a/src/Messages/PrivmsgMessage.php b/src/Messages/PrivmsgMessage.php index 4dd2fb5..568347c 100644 --- a/src/Messages/PrivmsgMessage.php +++ b/src/Messages/PrivmsgMessage.php @@ -33,6 +33,8 @@ public function handle(Client $client, array $channels): array { if (array_key_exists($this->target, $channels)) { $this->channel = $channels[$this->target]; + } else { + $this->channel = new Channel($this->target); } $self = $client->getOptions()->getNickname() === $this->user; diff --git a/src/Messages/RoomStateMessage.php b/src/Messages/RoomStateMessage.php index 56fbaf1..4c5ff55 100644 --- a/src/Messages/RoomStateMessage.php +++ b/src/Messages/RoomStateMessage.php @@ -17,6 +17,8 @@ public function handle(Client $client, array $channels): array { if (array_key_exists($this->commandSuffix, $channels)) { $this->channel = $channels[$this->commandSuffix]; + } else { + $this->channel = new Channel($this->commandSuffix); } $events = [ diff --git a/src/Messages/UserNoticeMessage.php b/src/Messages/UserNoticeMessage.php index 761164b..35c6d53 100644 --- a/src/Messages/UserNoticeMessage.php +++ b/src/Messages/UserNoticeMessage.php @@ -36,6 +36,8 @@ public function handle(Client $client, array $channels): array { if (array_key_exists($this->commandSuffix, $channels)) { $this->channel = $channels[$this->commandSuffix]; + } else { + $this->channel = new Channel($this->commandSuffix); } $msgId = $this->tags['msg-id'] ?? ''; diff --git a/src/Traits/Irc.php b/src/Traits/Irc.php index 7e33ae5..dde6535 100644 --- a/src/Traits/Irc.php +++ b/src/Traits/Irc.php @@ -19,7 +19,7 @@ public function say(string $channel, string $message): void public function join(string $channel): void { $channel = $this->channelName($channel); - $this->channels[$channel] = new Channel($channel); + $this->channels[$channel] = new Channel($channel, true); $this->write("JOIN {$channel}"); }