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