/** @format */ import * as tt from './telegram-types.d' import { TelegrafContext } from './context' type MaybeArray = T | T[] type MaybePromise = T | Promise type NormalizedTrigger = (value: string, ctx: TContext) => RegExpExecArray | null type HearsTriggers = MaybeArray> type Predicate = (ctx: TContext) => MaybePromise type BranchPredicate = boolean | Predicate export interface MiddlewareFn { /* next's parameter is in a contravariant position, and thus, trying to type it prevents assigning `MiddlewareFn` to `MiddlewareFn`. Middleware passing the parameter should be a separate type instead. */ (ctx: TContext, next: () => Promise): void | Promise } export interface MiddlewareObj { middleware(): MiddlewareFn } export type Middleware = | MiddlewareFn | MiddlewareObj export declare class Composer implements MiddlewareObj { constructor(...middlewares: ReadonlyArray>) /** * Registers a middleware. */ use(...middlewares: ReadonlyArray>): this /** * Registers middleware for provided update type. */ on( updateTypes: MaybeArray, ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling text messages. */ hears( triggers: HearsTriggers, ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling specified commands. */ command( command: string | string[], ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling callbackQuery data with regular expressions */ action( triggers: HearsTriggers, ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling inlineQuery data with regular expressions */ inlineQuery( triggers: HearsTriggers, ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling callback_data actions with game query. */ gameQuery(...middlewares: ReadonlyArray>): this /** * Generates drop middleware. */ drop( predicate: BranchPredicate ): this /** * Generates filter middleware. */ filter( predicate: BranchPredicate ): this /** * Registers middleware for handling entities */ entity( predicate: MaybeArray | ((entity: tt.MessageEntity, entityText: string, ctx: TContext) => MaybePromise), ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling messages with matching emails. */ email( email: HearsTriggers, ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling messages with matching phones. */ phone( number: HearsTriggers, ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling messages with matching urls. */ url( url: HearsTriggers, ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling messages with matching text links. */ textLink( link: HearsTriggers, ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling messages with matching text mentions. */ textMention( mention: HearsTriggers, ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling messages with matching mentions. */ mention( mention: HearsTriggers, ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling messages with matching hashtags. */ hashtag( hashtag: HearsTriggers, ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling messages with matching cashtags. */ cashtag( cashtag: HearsTriggers, ...middlewares: ReadonlyArray> ): this /** * Registers middleware for handling /start command. */ start(...middlewares: ReadonlyArray>): this /** * Registers middleware for handling /help command. */ help(...middlewares: ReadonlyArray>): this /** * Registers middleware for handling /ыуеештпы command. */ settings(...middlewares: ReadonlyArray>): this /** * Return the middleware created by this Composer */ middleware(): MiddlewareFn static reply( text: string, extra?: tt.ExtraSendMessage ): MiddlewareFn static catchAll( ...middlewares: ReadonlyArray> ): MiddlewareFn static catch( errorHandler: (error: Error, ctx: TContext) => void, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware that runs in the background. */ static fork( middleware: Middleware ): MiddlewareFn /** * Generates tap middleware. */ static tap( middleware: Middleware ): MiddlewareFn /** * Generates pass thru middleware. */ static passThru(): MiddlewareFn /** * Generates safe version of pass thru middleware. */ static safePassThru(): MiddlewareFn static lazy( factoryFn: (ctx: TContext) => MaybePromise> ): MiddlewareFn static log(logFn?: (s: string) => void): MiddlewareFn /** * @param predicate function that returns boolean or Promise * @param trueMiddleware middleware to run if the predicate returns true * @param falseMiddleware middleware to run if the predicate returns false */ static branch( predicate: BranchPredicate, trueMiddleware: Middleware, falseMiddleware: Middleware ): MiddlewareFn /** * Generates optional middleware. * @param predicate function that returns boolean or Promise * @param middlewares middleware to run if the predicate returns true */ static optional( predicate: BranchPredicate, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates filter middleware. */ static filter( predicate: BranchPredicate ): MiddlewareFn /** * Generates drop middleware. */ static drop( predicate: BranchPredicate ): Middleware static dispatch< C extends TelegrafContext, Handlers extends Record> >( routeFn: (ctx: C) => MaybePromise, handlers: Handlers ): Middleware /** * Generates middleware for handling provided update types. */ static mount( updateType: tt.UpdateType | tt.UpdateType[], ...middlewares: ReadonlyArray> ): MiddlewareFn static entity( predicate: MaybeArray | ((entity: tt.MessageEntity, entityText: string, ctx: TContext) => MaybePromise), ...middlewares: ReadonlyArray> ): MiddlewareFn static entityText( entityType: tt.MessageEntityType, triggers: HearsTriggers, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling messages with matching emails. */ static email( email: HearsTriggers, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling messages with matching phones. */ static phone( number: HearsTriggers, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling messages with matching urls. */ static url( url: HearsTriggers, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling messages with matching text links. */ static textLink( link: HearsTriggers, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling messages with matching text mentions. */ static textMention( mention: HearsTriggers, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling messages with matching mentions. */ static mention( mention: HearsTriggers, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling messages with matching hashtags. */ static hashtag( hashtag: HearsTriggers, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling messages with matching cashtags. */ static cashtag( cashtag: HearsTriggers, ...middlewares: ReadonlyArray> ): MiddlewareFn static match( triggers: NormalizedTrigger[], ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling matching text messages. */ static hears( triggers: HearsTriggers, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling messages with matching commands. */ static command( command: string | string[], ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling messages with commands. */ static command( ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling matching callback queries. */ static action( triggers: HearsTriggers, ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware for handling matching inline queries. */ static inlineQuery( triggers: HearsTriggers, ...middlewares: ReadonlyArray> ): MiddlewareFn static acl( status: number | number[] | BranchPredicate, ...middlewares: ReadonlyArray> ): MiddlewareFn static memberStatus( status: tt.ChatMemberStatus | tt.ChatMemberStatus[], ...middlewares: ReadonlyArray> ): MiddlewareFn static admin( ...middlewares: ReadonlyArray> ): MiddlewareFn static creator( ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware running only in given chat types. */ static chatType( type: tt.ChatType | tt.ChatType[], ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware running only in private chats. */ static privateChat( ...middlewares: ReadonlyArray> ): MiddlewareFn /** * Generates middleware running only in groups and supergroups. */ static groupChat( ...middlewares: ReadonlyArray> ): MiddlewareFn static gameQuery( ...middlewares: ReadonlyArray> ): MiddlewareFn static unwrap( middleware: Middleware ): MiddlewareFn /** * Compose middlewares returning a fully valid middleware comprised of all those which are passed. */ static compose( middlewares: ReadonlyArray> ): MiddlewareFn }