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