/** * 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); }
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()); }
/** * 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()); } }