コード例 #1
0
ファイル: Message.php プロジェクト: ChalkPE/PocketTelegram
 /**
  * @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);
 }
コード例 #2
0
 /**
  * @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();
 }