private function filterInput(ChainContainer $appChain) { $from = $appChain->getFrom(); $request = $appChain->getRequest(); unset($request['self']); // skip direct command from client $chain = (new Chain())->setRequest($request)->setUser($from)->addHandler(new InputFilter())->addHandler(new BlackListFilter())->addHandler(new LineBreakFilter())->addHandler(new CommandFilter())->addHandler(new MusicFilter()); $chain->run(); $request = $chain->getRequest(); if (isset($request['self'])) { unset($request['self']); $appChain->setRequest($request); return true; } $appChain->setRequest($request); }