| 
<?php
 
 $options = getopt("l::d:n:");
 $l = isset($options['l']) ? (int)$options['l'] : null;
 $d = isset($options['d']) ? $options['d'] : null;
 $n = $options['n'] ?? null;
 
 if (!$n) {
 die("The -n argument is required.\n");
 }
 
 
 require 'vendor/autoload.php';
 
 use Facebook\WebDriver\Chrome\ChromeOptions;
 use Facebook\WebDriver\Remote\DesiredCapabilities;
 use Facebook\WebDriver\Remote\RemoteWebDriver;
 
 use Facebook\WebDriver\WebDriverBy;
 
 function chrome_options() {
 $options = new ChromeOptions();
 $options->addArguments(["--user-data-dir=C:/Temp/ChromeProfile"]);
 return $options;
 }
 
 // start webdriver
 $capabilities = DesiredCapabilities::chrome();
 $capabilities->setCapability(ChromeOptions::CAPABILITY, chrome_options());
 
 $browser = RemoteWebDriver::create('http://localhost:4444/wd/hub', $capabilities);
 
 $browser->get('https://web.whatsapp.com');
 $browser->manage()->window()->maximize();
 
 echo "Please Wait...\n";
 sleep(25);
 
 $user_name = $n;
 
 try {
 $user = $browser->findElement(WebDriverBy::xpath("//span[@title='{$user_name}']"));
 $user->click();
 echo "User Found\n";
 sleep(15);
 
 $messages = $browser->findElements(WebDriverBy::className('copyable-text'));
 $myname_messages = [];
 
 if (count($messages) > 0) {
 foreach ($messages as $message) {
 $message_text = $message->getText();
 $time_stamp = $message->getAttribute('data-pre-plain-text');
 if ($message_text !== null && $time_stamp !== null) {
 $combined_message = "{$time_stamp} - {$message_text}";
 if (!in_array($combined_message, $myname_messages)) {
 $myname_messages[] = $combined_message;
 }
 }
 }
 
 $filter_date = null;
 $filtered_records = [];
 $current_format = (strpos(date('d.m.Y'), '.') !== false) ? 'd.m.Y' : 'd/m/Y';
 
 if ($d) {
 $filter_date = DateTime::createFromFormat($current_format, $d);
 if (!$filter_date) {
 echo "Date format is not correct.\n";
 exit;
 }
 }
 
 // Get all messages
 if ($l === null && $filter_date === null) {
 foreach ($myname_messages as $record) {
 echo $record . "\n";
 $filtered_records[] = $record;
 write_messages($filtered_records);
 }
 } else {
 if ($l) {
 $last_n = max($l, 1);
 echo "Last {$last_n} messages:\n";
 foreach (array_slice($myname_messages, -$last_n) as $record) {
 echo $record . "\n";
 $filtered_records[] = $record;
 write_messages($filtered_records);
 }
 }
 
 if ($filter_date) {
 echo "Messages after the date: " . $filter_date->format('d.m.Y') . "\n";
 foreach ($myname_messages as $record) {
 $time_str = explode(' - ', $record)[0];
 
 try {
 $time_str = substr($time_str, strpos($time_str, '[') + 1, strpos($time_str, ']') - strpos($time_str, '[') - 1);
 $message_date = DateTime::createFromFormat('H:i, d.m.Y', $time_str);
 if ($message_date > $filter_date) {
 echo $record . "\n";
 $filtered_records[] = $record;
 write_messages($filtered_records);
 }
 } catch (Exception $e) {
 echo "Date format error: {$e->getMessage()}\n";
 }
 }
 }
 }
 } else {
 echo "Messages not found.\n";
 }
 } catch (Exception $e) {
 echo "Error: {$e->getMessage()}\n";
 }
 
 $browser->quit();
 
 //  wait for qr code
 sleep(35);
 
 function write_messages($messages) {
 
 
 $file = fopen("wp_messages.txt", "w");
 if ($file) {
 foreach ($messages as $message) {
 fwrite($file, $message . PHP_EOL);
 }
 fclose($file);
 
 }
 }
 
 ?>
 
 |