* * @todo Добавить обработку ошибок ($request['errors];) */ class Message { /** * Отправить сообщение * * @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 { $random_id = time(); $check = false; // Режим доставки сообщений (усложнение по возрастанию) if ($mode >= 1) { // Дополнительное умножение $random_id *= rand(); if ($mode >= 2) { // Проверка отправки (по умолчанию) $check = true; } } // Запрос: отправить сообщение $request = $from->browser()->api('messages.send', [ 'access_token' => $from->token, 'v' => $from->version, 'peer_id' => $to, 'message' => $message, 'random_id' => $random_id ]); if ($check) { // Если активирована проверка отправленного сообщения // Запрос: получить сообщение по 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); } } return $request; } }