telegraf
Version:
Modern Telegram Bot Framework
25 lines (21 loc) • 731 B
text/typescript
import { Context } from './context'
import { Update } from './core/types/typegram'
/*
next's parameter is in a contravariant position, and thus, trying to type it
prevents assigning `MiddlewareFn<ContextMessageUpdate>`
to `MiddlewareFn<CustomContext>`.
Middleware passing the parameter should be a separate type instead.
*/
export type MiddlewareFn<C extends Context<U>, U extends Update = Update> = (
ctx: C,
next: () => Promise<void>
) => Promise<unknown> | void
export interface MiddlewareObj<
C extends Context<U>,
U extends Update = Update,
> {
middleware: () => MiddlewareFn<C, U>
}
export type Middleware<C extends Context<U>, U extends Update = Update> =
| MiddlewareFn<C, U>
| MiddlewareObj<C, U>