Добавлен LongPoll. Переработка ядра, переработка сборщика, переработка сообщений.
This commit is contained in:
@@ -4,43 +4,76 @@ declare(strict_types=1);
|
||||
|
||||
namespace VK\API\Methods;
|
||||
|
||||
use \VK\Core;
|
||||
use \VK\API\Traits\Request;
|
||||
use \VK\Robots\RobotAbstract;
|
||||
use \Exception;
|
||||
use \VK\Core,
|
||||
\VK\Robots\RobotAbstract;
|
||||
|
||||
/**
|
||||
* Сообщение
|
||||
*
|
||||
* Отправляет сообщение
|
||||
*
|
||||
* @method public static function put(RobotAbstract $from, int $to, string $message, int $mode = 2) Отправить сообщение
|
||||
*
|
||||
* @see https://vk.com/dev/messages.send
|
||||
* @see https://vk.com/dev/messages.getById
|
||||
*
|
||||
* @package VK\API\Methods\Message
|
||||
* @author Арсен Мирзаев <red@hood.su>
|
||||
*
|
||||
* @todo Добавить обработку ошибок ($request['errors];)
|
||||
*/
|
||||
class Message
|
||||
{
|
||||
use Request;
|
||||
|
||||
private const METHOD = 'messages.send';
|
||||
|
||||
public static function post($from, int $to, string $message, int $trolling)
|
||||
/**
|
||||
* Отправить сообщение
|
||||
*
|
||||
* @param $from Экземпляр робота
|
||||
* @param int $to Идентификатор получателя
|
||||
* @param string $message Текст сообщения
|
||||
* @param int $mode Режим доставки сообщения
|
||||
*
|
||||
* @return array Ответ сервера
|
||||
*/
|
||||
public static function put(RobotAbstract $from, int $to, string $message, int $mode = 2): array
|
||||
{
|
||||
if (is_int($from)) {
|
||||
// Если получен идентификатор, а не экземпляр RobotAbstract
|
||||
$random_id = time();
|
||||
$check = false;
|
||||
|
||||
// Поиск в регистре
|
||||
$from = Core::init()->get($from);
|
||||
// Режим доставки сообщений (усложнение по возрастанию)
|
||||
if ($mode >= 1) {
|
||||
// Дополнительное умножение
|
||||
$random_id *= rand();
|
||||
|
||||
if ($mode >= 2) {
|
||||
// Проверка отправки (по умолчанию)
|
||||
$check = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Параметры
|
||||
$params = [
|
||||
'message' => $message,
|
||||
'peer_id' => $to,
|
||||
// Запрос: отправить сообщение
|
||||
$request = $from->browser()->api('messages.send', [
|
||||
'access_token' => $from->token,
|
||||
'v' => $from->version,
|
||||
'random_id' => $trolling
|
||||
];
|
||||
'peer_id' => $to,
|
||||
'message' => $message,
|
||||
'random_id' => $random_id
|
||||
]);
|
||||
|
||||
// Запрос
|
||||
self::request(self::METHOD, $params, $from->getBrowser());
|
||||
}
|
||||
if ($check) {
|
||||
// Если активирована проверка отправленного сообщения
|
||||
|
||||
public static function get()
|
||||
{
|
||||
}
|
||||
// Запрос: получить сообщение по ID
|
||||
if ($from->browser()->api('messages.getById', [
|
||||
'access_token' => $from->token,
|
||||
'v' => $from->version,
|
||||
'message_ids' => is_int($request["response"]) ? $request["response"] : $request["response"]['message_id']
|
||||
])['response']['count'] === 0) {
|
||||
// Если сообщения не существует, то повтор
|
||||
self::put($from, $to, $message, $mode);
|
||||
}
|
||||
}
|
||||
|
||||
public static function delete()
|
||||
{
|
||||
return $request;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user