function onTeamSpeakEvent(TSEvent $event)
 {
     $data = $event->getData();
     switch ($event->getType()->toString()) {
         case 'cliententerview':
             // We don't want query clients
             if ($data['client_type']) {
                 break;
             }
             $client = new Client($data, $this->tsConnection->getCustomInfo($data));
             $this->tsConnection->useToken($client->login);
             $player = $this->storage->getPlayerObject($client->login);
             if (Channel::IsClientAllowed($client, $client->channelId)) {
                 if ($client->channelId == Channel::$serverIds[Channel::COMMENTS] && $client->isCommentator) {
                     $this->tsConnection->toggleClientComment($client->clientId, true);
                 }
             } else {
                 $teamId = $player ? $player->teamId : -1;
                 $this->tsConnection->moveClient($client->clientId, Channel::$serverIds[$teamId]);
             }
             if ($player) {
                 $main = Main::Create($client->login);
                 $main->setConnected($client->channelId, $player->teamId);
                 $main->show();
             }
             break;
         case 'clientmoved':
             if ($client = Client::GetById((int) $data['clid'])) {
                 $newChannelId = (int) $data['ctid'];
                 if (Channel::IsClientAllowed($client, $newChannelId)) {
                     $client->channelId = $newChannelId;
                     if ($client->channelId == Channel::$serverIds[Channel::COMMENTS] && $client->isCommentator) {
                         $this->tsConnection->toggleClientComment($client->clientId, true);
                     }
                     if ($player = $this->storage->getPlayerObject($client->login)) {
                         $main = Main::Create($client->login);
                         $main->setConnected($client->channelId, $player->teamId);
                         $main->redraw();
                     }
                 } else {
                     $this->tsConnection->moveClient($client->clientId, $client->channelId);
                 }
             }
             break;
         case 'clientleftview':
             if ($client = Client::GetById((int) $data['clid'])) {
                 Client::EraseById($client->clientId);
                 if ($client->login && $this->storage->getPlayerObject($client->login)) {
                     $main = Main::Create($client->login);
                     $main->setNotConnected();
                     $main->redraw();
                 }
             }
             break;
         case 'channelcreated':
             $channel = new Channel($data, $this->tsConnection->getChannelPermissionList($data));
             if ($channel == Channel::GetDefault() || $channel->parentId == Channel::GetDefault()->channelId) {
                 $this->onReady();
             }
             break;
         case 'channelmoved':
             if ($channel = Channel::Get((int) $data['cid'])) {
                 $channel->parentId = $data['cpid'];
             }
             break;
         case 'channeldeleted':
             if ($channel = Channel::Get((int) $data['cid'])) {
                 Channel::Erase($channel->channelId);
             }
             break;
     }
 }