public static function createFromIlluminateRequest(IlluminateRequest $illuminateRequest) : Request
{
return collect(['token', 'teamId', 'teamDomain', 'channelId', 'channelName', 'userId', 'userName', 'command', 'text', 'responseUrl'])->reduce(function (Request $request, string $propertyName) use($illuminateRequest) {
$request->{$propertyName} = $illuminateRequest->get(snake_case($propertyName));
if ($propertyName == 'command') {
//remove slash
$request->command = substr($request->command, 1);
}
return $request;
}, new static());
}