vk/system/Robots/Group.php

96 lines
2.6 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
namespace VK\Robots;
use \VK\Browsers\BrowserAbstract,
\VK\API\Methods\Message,
\VK\API\LongPoll;
/**
* Робот-группа ВКонтакте
*
* Класс реализовывающий работу от лица группы ВКонтакте
*
* @property LongPoll $longpoll LongPoll-сессия
*
* @method public function message(int $to, string $message, int $mode = 2) Отправить сообщение
* @method public function __set($name, $value) Магический метод-сеттер
* @method public function __get($name) Магический метод-геттер
*
* @package VK\Robots\Group
* @author Arsen Mirzaev <red@hood.su>
*
* @todo Вместо методов реализовать фабрику методов API, как было раньше
*/
class Group extends RobotAbstract
{
/**
* LongPoll-сессия
*
* @var LongPoll
*/
protected LongPoll $longpoll;
/**
* Отправить сообщение
*
* @param int $to Идентификатор получателя
* @param string $message Текст сообщения
* @param int $mode Режим доставки сообщения
*
* @return array
*/
public function message(int $to, string $message, int $mode = 2): array
{
return Message::put($this, $to, $message, $mode);
}
/**
* Магический метод-сеттер
*
* @param mixed $name Название
* @param mixed $value Значение
*
* @see RobotAbstract Модификация наследуемого метода
*
* @return void
*/
public function __set($name, $value): void
{
parent::__set($name, $value);
if ($name === 'longpoll') {
if ($value instanceof LongPoll) {
$this->longpoll = $value;
} else {
$this->longpoll = new LongPoll($this);
}
}
}
/**
* Магический метод-геттер
*
* @param mixed $name Название
*
* @see RobotAbstract Модификация наследуемого метода
*
* @return mixed
*/
public function __get($name)
{
if (!empty($parent = parent::__get($name))) {
return $parent;
}
if ($name === 'longpoll') {
if (empty($this->longpoll)) {
$this->longpoll = new LongPoll($this);
}
return $this->longpoll;
}
}
}