Untitled
unknown
plain_text
a year ago
4.8 kB
22
Indexable
#[FiltersAnd(new FilterCommand('url'))]
public function handleUrls(PrivateMessage&Incoming&Message&IsNotEdited $message): void {
$words = explode(' ', $message->message);
$secondWord = $words[1];
//$photo = $words[2];
$urlx = $secondWord;
$parse_url = parse_url($urlx, PHP_URL_PATH);
$parse_del = preg_replace("/\/+/", "", $parse_url);
try {
$sent = $message->reply('Preparing...');
$url = $secondWord;
$PhotoTemp = $this->downloadToDir($message->media, '/tmp/');
//$message->reply("Photo: $photo ,URL: $url");
$client = HttpClientBuilder::buildDefault();
$request = new Request($url);
$request->setTcpConnectTimeout(1000000);
$request->setTlsHandshakeTimeout(1000000);
$request->setTransferTimeout(10000000);
$request->setBodySizeLimit(100000 * 1024 * 1024); // 100 MB
$startTime = microtime(true);
try {
$response = $client->request($request);
$body = $response->getBody();
$payload = new Payload($body);
$contentLength = $response->getHeader('content-length');
$downloadedBytes = 0;
$lastUpdate = 0;
$fullzise = $contentLength / (1024 * 1024);
if ($fullzise < 50) {
$updateInterval = 5 * 1024 * 1024;
} elseif ($fullzise >= 50 && $fullzise < 100) {
$updateInterval = 20 * 1024 * 1024;
} elseif ($fullzise >= 100 && $fullzise < 500) {
$updateInterval = 20 * 1024 * 1024;
} else {
$updateInterval = 100 * 1024 * 1024;
}
while (null !== $chunk = $payload->read()) {
$downloadedBytes += strlen($chunk);
$elapsedTime = microtime(true) - $startTime;
$downloadSpeed = $downloadedBytes / $elapsedTime;
$downloadedMB = $downloadedBytes / (1024 * 1024);
$elapsedSeconds = $elapsedTime;
$downloadSpeedMBps = $downloadSpeed / (1024 * 1024);
if ($downloadedBytes - $lastUpdate >= $updateInterval) {
$sent->editText("Download: " . number_format($downloadedMB, 2) . " MB\nTime: " . number_format($elapsedSeconds, 2) . " s\nSpeed: " . number_format($downloadSpeedMBps, 2) . " MB/s\nCompleting download: " . number_format($downloadedMB, 2) . " MBs Of ". number_format($fullzise, 1) . " MB");
$lastUpdate = $downloadedBytes;
}
}
$headers = $response->getHeaders();
$date = $headers['date'][0] ?? 'Date header not found';
$lastModified = $headers['last-modified'][0] ?? 'Last-Modified header not found';
$caption = "Response Information:\n";
$caption .= "Headers: \nDate: " . $date . "\n";
$caption .= "last-modified: ".$lastModified."\n";
$caption .= "Download size: " . number_format($fullzise, 1) . " MB" . "\n";
$extension = pathinfo($url, PATHINFO_EXTENSION);
if (empty($extension)) {
$extension = 'apk'; // Default extension
}
$sendMessageTypingActionn = ['_' => 'sendMessageTypingAction'];
$this->messages->setTyping(['peer' => $message->chatId, 'action' =>$sendMessageTypingActionn]);
$this->sleep(1);
$doc_by_user = $this->sendDocument(
peer: $message->chatId,
replyToMsgId: $message->replyToMsgId,
file: new RemoteUrl($url),
// thumb: new RemoteUrl($photo),
thumb: new LocalFile($PhotoTemp),
caption: 'O',
parseMode: ParseMode::HTML,
fileName: $parse_del . '.' . $extension,
);
$forward_by_bot = $this->messages->forwardMessages(
to_peer: -1002383942583,
from_peer: $message->chatId,
id: [$doc_by_user->id]);
if (!unlink($PhotoTemp)) {
throw new Exception('Failed to delete photo.');
}
$message->reply("Pic $PhotoTemp has been delete.");
} catch (Exception $e) {
$sent->editText('Error: ' . $e->getMessage());
}
$this->sleep(2);
$sent->delete();
} catch (Throwable $e) {
if (!str_contains($e->getMessage(), 'Could not connect to URI') && !($e instanceof UriException) && !str_contains($e->getMessage(), 'URI')) {
$this->report((string) $e);
$this->logger((string) $e, Logger::FATAL_ERROR);
}
if ($e instanceof RPCErrorException && $e->rpc === 'FILE_PARTS_INVALID') {
$this->report(json_encode($file));
}
try {
$sent->editText('Error: ' . $e->getMessage());
} catch (Throwable $e) {
$this->logger((string) $e, Logger::FATAL_ERROR);
}
}
}
Editor is loading...
Leave a Comment