Skip to content

Events

The client dispatches lifecycle events around every request, so you can add logging, metrics, or tracing without wrapping your own calls.

EventDispatchedPayload
RequestSendingbefore a request leaves the client$request
ResponseReceivedafter a successful (2xx) response$request, $response
RequestFailedon a transport or HTTP error$request, $exception

All three live in Kyzegs\Laracord\Events. $request is a DiscordRequest (exposing method, resource, endpoint, parameters, query, ...) and $response is a DiscordResponse.

php
use Illuminate\Support\Facades\Event;
use Kyzegs\Laracord\Events\RequestFailed;
use Kyzegs\Laracord\Events\ResponseReceived;

Event::listen(ResponseReceived::class, function (ResponseReceived $event): void {
    logger()->debug('Discord call', [
        'resource' => $event->request->resource,
        'endpoint' => $event->request->endpoint,
        'status' => $event->response->status(),
    ]);
});

Event::listen(RequestFailed::class, function (RequestFailed $event): void {
    report($event->exception);
});

Pooled requests dispatch the same events per request. They fire after the server-error retry loop, so RequestFailed reflects the final outcome rather than each retry.

Released under the MIT License.