# Middleware

`function` in `seedcord` · v0.14.0

<https://docs.seedcord.org/packages/seedcord/0.14.0/functions/middleware>

Decorator used to register middleware with priority ordering. The lower the priority number, the earlier it runs.

Interaction middleware cannot specify event filters.

```ts
Middleware<MType, Events>(
    type: MType,
    priority?: number,
    options?: MiddlewareOptions<MType, Events>
): (
    ctor: MType extends MiddlewareType.Interaction
        ? Constructor<InteractionMiddleware<Repliables>>
        : Events extends readonly []
          ? Constructor<EventMiddleware<ValidNonInteractionKeys>>
          : Constructor<EventMiddleware<Events[number]>>
) => void
```

Decorator used to register middleware with priority ordering. The lower the priority number, the earlier it runs.

Interaction middleware cannot specify event filters.

Parameters.

- `type` `MType` — Middleware kind from [`MiddlewareType`](/packages/seedcord/0.14.0/enums/middleware-type)
- `priority?` `number` — Ordering value where lower runs earlier.
- `options?` `MiddlewareOptions<MType, Events>` — Additional registration options

Returns `(ctor: MType extends MiddlewareType.Interaction ? Constructor<InteractionMiddleware<Repliables>> : Events extends readonly [] ? Constructor<EventMiddleware<ValidNonInteractionKeys>> : Constructor<EventMiddleware<Events[number]>>) => void`.
