/** * @param array $array * @param bool $cast * @return Message|TextMessage|PhotoMessage */ public static function create(array $array, $cast = true) { if ($cast and isset($array['text'])) { return TextMessage::create($array); } if ($cast and isset($array['photo'])) { return PhotoMessage::create($array); } return new Message(intval($array['message_id']), intval($array['date']), Chat::create($array['chat']), isset($array['from']) ? User::create($array['from']) : null, isset($array['forward_from']) ? User::create($array['forward_from']) : null, isset($array['forward_date']) ? intval($array['forward_date']) : null, isset($array['reply_to_message']) ? Message::create($array['reply_to_message']) : null); }
/** * @param TextMessage $message */ private function handleTelegramCommands(TextMessage $message) { if (time() - $message->getDate() > 30) { return; } $chatId = $message->getChat()->getId(); if (!isset(self::$lastCommand[$chatId])) { self::$lastCommand[$chatId] = 0; } if (time() - self::$lastCommand[$chatId] < 2) { return; } $commands = $message->getCommands(); if (count($command = explode('@', $commands[0])) > 1) { if (!is_null($me = PocketTelegram::getMe()) and strToLower($command[1]) !== strToLower($me->getUsername())) { return; } $commands[0] = $command[0]; } switch (strToLower($commands[0])) { case "chat_id": PocketTelegram::sendMessage($chatId, $message->getChat(), $message); break; case "online": $players = array_map(function (Player $player) { return $player->getDisplayName(); }, array_filter(Server::getInstance()->getOnlinePlayers(), function (Player $player) { return $player->isOnline(); })); PocketTelegram::sendMessage(PocketTelegram::translateString("commands.players.list", [count($players), Server::getInstance()->getMaxPlayers()]) . PHP_EOL . implode(", ", $players), $message->getChat(), $message); break; case "stop": if (!is_null($from = $message->getFrom()) and !is_null($username = $from->getUsername()) and Server::getInstance()->getOfflinePlayer($username)->isOp()) { Command::broadcastCommandMessage($this, new TranslationContainer("commands.stop.start")); Server::getInstance()->shutdown(); } break; } self::$lastCommand[$chatId] = time(); }