getMessage(); $chat_id = $message->getChat()->getId(); if(count($allowed_chat_ids) > 0 && !in_array($chat_id, $allowed_chat_ids)) { return $this->replyToChat("Chat ID $chat_id not allowed"); } $text = $message->getText(true); if ($message->getMediaGroupId() || empty($text)) { return Request::emptyResponse(); } preg_match('/https?:\/\/(?:mobile\.)?twitter\.com\/(\w+)\/status\/(\d+)(\S*)/', $text, $matches); if (count($matches) < 3) { return Request::emptyResponse(); } $author = $matches[1]; $tweetId = $matches[2]; $photoNo = ''; if (!empty($matches[3])) { preg_match('/(\/\d)$/', $matches[3], $photoNoMatches); if (isset($photoNoMatches[1])) { $photoNo = '/photo' . $photoNoMatches[1]; } } return $this->replyToChat( "https://fxtwitter.com/$author/status/$tweetId$photoNo", [ 'reply_to_message_id' => $message->getMessageId(), 'disable_notification' => true, ] ); } }