Добавлен LongPoll. Переработка ядра, переработка сборщика, переработка сообщений.

This commit is contained in:
RedHood
2020-09-26 20:28:13 +10:00
parent 48946d9070
commit ce92d44b8b
15 changed files with 1497 additions and 1079 deletions

View File

@@ -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;
}
}