Behaviour for creating middlewares.
Middlewares receive the context (ExGram.Cnt) and can modify it before passing
it to the next middleware or handler. Use middlewares for authentication, logging,
rate limiting, or enriching the context with additional data.
See the Middlewares guide for usage examples.
Summary
Types
Callbacks
@callback call(ExGram.Cnt.t(), opts()) :: ExGram.Cnt.t()