/**
* @return \Spatie\SlashCommand\Handlers\BaseHandler
*
* @throws \Spatie\SlashCommand\Exceptions\RequestCouldNotBeHandled
*/
protected function determineHandler()
{
$handler = collect($this->config->get('handlers'))->map(function (string $handlerClassName) {
if (!class_exists($handlerClassName)) {
throw InvalidHandler::handlerDoesNotExist($handlerClassName);
}
return new $handlerClassName($this->request);
})->filter(function (HandlesSlashCommand $handler) {
return $handler->canHandle($this->request);
})->first();
if (!$handler) {
throw RequestCouldNotBeHandled::noHandlerFound($this->request);
}
return $handler;
}