/**
  * Command execute method
  *
  * @return mixed
  * @throws \Longman\TelegramBot\Exception\TelegramException
  */
 public function execute()
 {
     $message = $this->getMessage();
     $chat_id = $message->getChat()->getId();
     $command = $message->getCommand();
     $text = trim($message->getText(true));
     $data = ['chat_id' => $chat_id];
     //No point in replying to messages in private chats
     if (!$message->getChat()->isPrivateChat()) {
         $data['reply_to_message_id'] = $message->getMessageId();
     }
     if ($command !== 'whois') {
         $text = substr($command, 5);
         //We need that '-' now, bring it back
         if (strpos($text, 'g') === 0) {
             $text = str_replace('g', '-', $text);
         }
     }
     if ($text === '') {
         $text = 'Provide the id to lookup: /whois <id>';
     } else {
         $user_id = $text;
         $chat = null;
         $created_at = null;
         $updated_at = null;
         $result = null;
         if (is_numeric($text)) {
             $results = DB::selectChats(true, true, true, null, null, $user_id);
             if (!empty($results)) {
                 $result = reset($results);
             }
         } else {
             $results = DB::selectChats(true, true, true, null, null, null, $text);
             if (is_array($results) && count($results) === 1) {
                 $result = reset($results);
             }
         }
         if (is_array($result)) {
             $result['id'] = $result['chat_id'];
             $chat = new Chat($result);
             $user_id = $result['id'];
             $created_at = $result['chat_created_at'];
             $updated_at = $result['chat_updated_at'];
             $old_id = $result['old_id'];
         }
         if ($chat !== null) {
             if ($chat->isPrivateChat()) {
                 $text = 'User ID: ' . $user_id . PHP_EOL;
                 $text .= 'Name: ' . $chat->getFirstName() . ' ' . $chat->getLastName() . PHP_EOL;
                 $username = $chat->getUsername();
                 if ($username !== null && $username !== '') {
                     $text .= 'Username: @' . $username . PHP_EOL;
                 }
                 $text .= 'First time seen: ' . $created_at . PHP_EOL;
                 $text .= 'Last activity: ' . $updated_at . PHP_EOL;
                 //Code from Whoami command
                 $limit = 10;
                 $offset = null;
                 $response = Request::getUserProfilePhotos(['user_id' => $user_id, 'limit' => $limit, 'offset' => $offset]);
                 if ($response->isOk()) {
                     /** @var UserProfilePhotos $user_profile_photos */
                     $user_profile_photos = $response->getResult();
                     if ($user_profile_photos->getTotalCount() > 0) {
                         $photos = $user_profile_photos->getPhotos();
                         /** @var PhotoSize $photo */
                         $photo = $photos[0][2];
                         $file_id = $photo->getFileId();
                         $data['photo'] = $file_id;
                         $data['caption'] = $text;
                         return Request::sendPhoto($data);
                     }
                 }
             } elseif ($chat->isGroupChat()) {
                 $text = 'Chat ID: ' . $user_id . (!empty($old_id) ? ' (previously: ' . $old_id . ')' : '') . PHP_EOL;
                 $text .= 'Type: ' . ucfirst($chat->getType()) . PHP_EOL;
                 $text .= 'Title: ' . $chat->getTitle() . PHP_EOL;
                 $text .= 'First time added to group: ' . $created_at . PHP_EOL;
                 $text .= 'Last activity: ' . $updated_at . PHP_EOL;
             }
         } elseif (is_array($results) && count($results) > 1) {
             $text = 'Multiple chats matched!';
         } else {
             $text = 'Chat not found!';
         }
     }
     $data['text'] = $text;
     return Request::sendMessage($data);
 }
Esempio n. 2
0
 public function testChatType()
 {
     $this->chat = TestHelpers::getFakeChatObject();
     $this->assertEquals('private', $this->chat->getType());
     $this->chat = TestHelpers::getFakeChatObject(['id' => -123, 'type' => null]);
     $this->assertEquals('group', $this->chat->getType());
     $this->chat = TestHelpers::getFakeChatObject(['id' => -123, 'type' => 'channel']);
     $this->assertEquals('channel', $this->chat->getType());
 }
 /**
  * Command execute method
  *
  * @return mixed
  * @throws \Longman\TelegramBot\Exception\TelegramException
  */
 public function execute()
 {
     $message = $this->getMessage();
     $chat_id = $message->getChat()->getId();
     $text = trim($message->getText(true));
     $results = DB::selectChats(true, true, true, null, null, null, $text === '' || $text === '*' ? null : $text);
     $user_chats = 0;
     $group_chats = 0;
     $super_group_chats = 0;
     if ($text === '') {
         $text_back = '';
     } elseif ($text === '*') {
         $text_back = 'List of all bot chats:' . PHP_EOL;
     } else {
         $text_back = 'Chat search results:' . PHP_EOL;
     }
     if (is_array($results)) {
         foreach ($results as $result) {
             //Initialize a chat object
             $result['id'] = $result['chat_id'];
             $chat = new Chat($result);
             $whois = $chat->getId();
             if ($this->telegram->getCommandObject('whois')) {
                 // We can't use '-' in command because part of it will become unclickable
                 $whois = '/whois' . str_replace('-', 'g', $chat->getId());
             }
             if ($chat->isPrivateChat()) {
                 if ($text !== '') {
                     $text_back .= '- P ' . $chat->tryMention() . ' [' . $whois . ']' . PHP_EOL;
                 }
                 ++$user_chats;
             } elseif ($chat->isSuperGroup()) {
                 if ($text !== '') {
                     $text_back .= '- S ' . $chat->getTitle() . ' [' . $whois . ']' . PHP_EOL;
                 }
                 ++$super_group_chats;
             } elseif ($chat->isGroupChat()) {
                 if ($text !== '') {
                     $text_back .= '- G ' . $chat->getTitle() . ' [' . $whois . ']' . PHP_EOL;
                 }
                 ++$group_chats;
             }
         }
     }
     if ($user_chats + $group_chats + $super_group_chats === 0) {
         $text_back = 'No chats found..';
     } else {
         $text_back .= PHP_EOL . 'Private Chats: ' . $user_chats;
         $text_back .= PHP_EOL . 'Groups: ' . $group_chats;
         $text_back .= PHP_EOL . 'Super Groups: ' . $super_group_chats;
         $text_back .= PHP_EOL . 'Total: ' . ($user_chats + $group_chats + $super_group_chats);
         if ($text === '') {
             $text_back .= PHP_EOL . PHP_EOL . 'List all chats: /' . $this->name . ' *' . PHP_EOL . 'Search for chats: /' . $this->name . ' <search string>';
         }
     }
     $data = ['chat_id' => $chat_id, 'text' => $text_back];
     return Request::sendMessage($data);
 }
 public function execute()
 {
     $update = $this->getUpdate();
     $message = $this->getMessage();
     $chat_id = $message->getChat()->getId();
     $message_id = $message->getMessageId();
     $text = $message->getText(true);
     $results = DB::selectChats(true, true, null, null);
     $user_chats = 0;
     $group_chats = 0;
     $text = "List of bot chats:\n";
     foreach ($results as $result) {
         //I want initialize a chat object
         //id, title, first_name, last_name
         $result['id'] = $result['chat_id'];
         $chat = new Chat($result);
         if ($chat->isPrivateChat()) {
             //$text .= '- U '.$chat->getFirstName()."\n";
             $text .= '- U ' . $this->tryMentionChat($chat) . "\n";
             ++$user_chats;
         } else {
             $text .= '- G ' . $chat->getTitle() . "\n";
             ++$group_chats;
         }
     }
     if ($group_chats + $user_chats == 0) {
         $text = "No chats found..";
     } else {
         $text .= "\nUser Chats: " . $user_chats;
         $text .= "\nGroup Chats: " . $group_chats;
         $text .= "\nTot: " . ($group_chats + $user_chats);
     }
     $data = [];
     $data['chat_id'] = $chat_id;
     //$data['reply_to_message_id'] = $message_id;
     $data['text'] = $text;
     //$data['parse_mode'] = 'Markdown';
     $result = Request::sendMessage($data);
     return $result;
 }
 public function execute()
 {
     $update = $this->getUpdate();
     $message = $this->getMessage();
     $chat_id = $message->getChat()->getId();
     $message_id = $message->getMessageId();
     $text = $message->getText(true);
     $results = DB::selectChats(true, true, true, null, null);
     $user_chats = 0;
     $group_chats = 0;
     $super_group_chats = 0;
     $text = "List of bot chats:\n";
     foreach ($results as $result) {
         //initialize a chat object
         $result['id'] = $result['chat_id'];
         $chat = new Chat($result);
         if ($chat->isPrivateChat()) {
             $text .= '- P ' . $chat->tryMention() . "\n";
             ++$user_chats;
         } elseif ($chat->isGroupChat()) {
             $text .= '- G ' . $chat->getTitle() . "\n";
             ++$group_chats;
         } elseif ($chat->isSuperGroup()) {
             $text .= '- S ' . $chat->getTitle() . "\n";
             ++$super_group_chats;
         }
     }
     if ($group_chats + $user_chats + $super_group_chats == 0) {
         $text = "No chats found..";
     } else {
         $text .= "\nPrivate Chats: " . $user_chats;
         $text .= "\nGroup: " . $group_chats;
         $text .= "\nSuper Group: " . $super_group_chats;
         $text .= "\nTot: " . ($group_chats + $user_chats + $super_group_chats);
     }
     $data = [];
     $data['chat_id'] = $chat_id;
     $data['text'] = $text;
     $result = Request::sendMessage($data);
     return $result->isOk();
 }
 public function tryMentionChat(Chat $chat)
 {
     if ($chat->isGroupChat()) {
         return $chat->getTitle();
     } else {
         if (!is_null($chat->getUsername())) {
             return '@' . $chat->getUsername();
         } else {
             return $chat->getFirstName();
         }
     }
 }
Esempio n. 7
0
 /**
  * Insert chat
  *
  * @param  Entities\Chat $chat
  * @param  string $date
  * @param  int $migrate_to_chat_id
  *
  * @return bool If the insert was successful
  * @throws TelegramException
  */
 public static function insertChat(Chat $chat, $date, $migrate_to_chat_id = null)
 {
     if (!self::isDbConnected()) {
         return false;
     }
     $chat_id = $chat->getId();
     $chat_title = $chat->getTitle();
     $type = $chat->getType();
     try {
         $sth2 = self::$pdo->prepare('INSERT INTO `' . TB_CHAT . '`
             (
             `id`, `type`, `title`, `created_at` ,`updated_at`, `old_id`
             )
             VALUES (
             :id, :type, :title, :date, :date, :oldid
             )
             ON DUPLICATE KEY UPDATE `type`=:type, `title`=:title, `updated_at`=:date
             ');
         if ($migrate_to_chat_id) {
             $type = 'supergroup';
             $sth2->bindParam(':id', $migrate_to_chat_id, \PDO::PARAM_INT);
             $sth2->bindParam(':oldid', $chat_id, \PDO::PARAM_INT);
         } else {
             $sth2->bindParam(':id', $chat_id, \PDO::PARAM_INT);
             $sth2->bindParam(':oldid', $migrate_to_chat_id, \PDO::PARAM_INT);
         }
         $sth2->bindParam(':type', $type, \PDO::PARAM_INT);
         $sth2->bindParam(':title', $chat_title, \PDO::PARAM_STR, 255);
         $sth2->bindParam(':date', $date, \PDO::PARAM_STR);
         return $sth2->execute();
     } catch (\PDOException $e) {
         throw new TelegramException($e->getMessage());
     }
 }