/** @format */ import * as tg from './core/types/typegram'; import * as tt from './telegram-types'; import { Middleware, MiddlewareFn, MiddlewareObj } from './middleware'; import Context from './context'; export declare type MaybeArray = T | T[]; export declare type MaybePromise = T | Promise; export declare type NonemptyReadonlyArray = readonly [T, ...T[]]; export declare type Triggers = MaybeArray RegExpExecArray | null)>; export declare type Predicate = (t: T) => boolean; export declare type AsyncPredicate = (t: T) => Promise; export declare type MatchedMiddleware = NonemptyReadonlyArray>>; /** Takes: a context type and an update type (or message subtype). Produces: a context that has some properties required, and some undefined. The required ones are those that are always present when the given update (or message) arrives. The undefined ones are those that are always absent when the given update (or message) arrives. */ /** @deprecated */ declare type MatchedContext = NarrowedContext; /** * Narrows down `C['update']` (and derived getters) * to specific update type `U`. * * Used by [[`Composer`]], * possibly useful for splitting a bot into multiple files. */ export declare type NarrowedContext = Context & Omit; export interface GameQueryUpdate extends tg.Update.CallbackQueryUpdate { callback_query: tg.CallbackQuery.GameShortGameCallbackQuery; } export declare class Composer implements MiddlewareObj { private handler; constructor(...fns: ReadonlyArray>); /** * Registers a middleware. */ use(...fns: ReadonlyArray>): this; /** * Registers middleware for handling updates * matching given type guard function. */ guard(guardFn: (update: tg.Update) => update is U, ...fns: NonemptyReadonlyArray>>): this; /** * Registers middleware for handling provided update types. */ on(updateType: MaybeArray, ...fns: NonemptyReadonlyArray>>): this; /** * Registers middleware for handling matching text messages. */ hears(triggers: Triggers, ...fns: MatchedMiddleware): this; /** * Registers middleware for handling specified commands. */ command(command: MaybeArray, ...fns: NonemptyReadonlyArray>>): this; /** * Registers middleware for handling matching callback queries. */ action(triggers: Triggers, ...fns: MatchedMiddleware): this; /** * Registers middleware for handling matching inline queries. */ inlineQuery(triggers: Triggers, ...fns: MatchedMiddleware): this; /** * Registers middleware for handling game queries */ gameQuery(...fns: NonemptyReadonlyArray>>): this; /** * Registers middleware for dropping matching updates. */ drop(predicate: Predicate): this; filter(predicate: Predicate): this; private entity; email(email: Triggers, ...fns: MatchedMiddleware): this; url(url: Triggers, ...fns: MatchedMiddleware): this; textLink(link: Triggers, ...fns: MatchedMiddleware): this; textMention(mention: Triggers, ...fns: MatchedMiddleware): this; mention(mention: MaybeArray, ...fns: MatchedMiddleware): this; phone(number: Triggers, ...fns: MatchedMiddleware): this; hashtag(hashtag: MaybeArray, ...fns: MatchedMiddleware): this; cashtag(cashtag: MaybeArray, ...fns: MatchedMiddleware): this; /** * Registers a middleware for handling /start */ start(...fns: NonemptyReadonlyArray & { startPayload: string; }>>): this; /** * Registers a middleware for handling /help */ help(...fns: NonemptyReadonlyArray>>): this; /** * Registers a middleware for handling /settings */ settings(...fns: NonemptyReadonlyArray>>): this; middleware(): MiddlewareFn; static reply(...args: Parameters): MiddlewareFn; static catch(errorHandler: (err: unknown, ctx: C) => void, ...fns: ReadonlyArray>): MiddlewareFn; /** * Generates middleware that runs in the background. */ static fork(middleware: Middleware): MiddlewareFn; static tap(middleware: Middleware): MiddlewareFn; /** * Generates middleware that gives up control to the next middleware. */ static passThru(): MiddlewareFn; static lazy(factoryFn: (ctx: C) => MaybePromise>): MiddlewareFn; static log(logFn?: (s: string) => void): MiddlewareFn; /** * @param trueMiddleware middleware to run if the predicate returns true * @param falseMiddleware middleware to run if the predicate returns false */ static branch(predicate: Predicate | AsyncPredicate, trueMiddleware: Middleware, falseMiddleware: Middleware): MiddlewareFn; /** * Generates optional middleware. * @param predicate predicate to decide on a context object whether to run the middleware * @param middleware middleware to run if the predicate returns true */ static optional(predicate: Predicate | AsyncPredicate, ...fns: NonemptyReadonlyArray>): MiddlewareFn; static filter(predicate: Predicate): MiddlewareFn; /** * Generates middleware for dropping matching updates. */ static drop(predicate: Predicate): MiddlewareFn; static dispatch>>(routeFn: (ctx: C) => MaybePromise, handlers: Handlers): Middleware; /** * Generates optional middleware based on a predicate that only operates on `ctx.update`. * * Example: * ```ts * import { Composer, Update } from 'telegraf' * * const predicate = (u): u is Update.MessageUpdate => 'message' in u * const middleware = Composer.guard(predicate, (ctx) => { * const message = ctx.update.message * }) * ``` * * Note that `Composer.mount('message')` is preferred over this. * * @param guardFn predicate to decide whether to run the middleware based on the `ctx.update` object * @param fns middleware to run if the predicate returns true * @see `Composer.optional` for a more generic version of this method that allows the predicate to operate on `ctx` itself */ static guard(guardFn: (u: tg.Update) => u is U, ...fns: NonemptyReadonlyArray>>): MiddlewareFn; /** * Generates middleware for handling provided update types. * @deprecated use `Composer.on` */ static mount(updateType: MaybeArray, ...fns: NonemptyReadonlyArray>>): MiddlewareFn; /** * Generates middleware for handling provided update types. */ static on(updateType: MaybeArray, ...fns: NonemptyReadonlyArray>>): MiddlewareFn; private static entity; static entityText(entityType: MaybeArray, predicate: Triggers, ...fns: MatchedMiddleware): MiddlewareFn; static email(email: Triggers, ...fns: MatchedMiddleware): MiddlewareFn; static phone(number: Triggers, ...fns: MatchedMiddleware): MiddlewareFn; static url(url: Triggers, ...fns: MatchedMiddleware): MiddlewareFn; static textLink(link: Triggers, ...fns: MatchedMiddleware): MiddlewareFn; static textMention(mention: Triggers, ...fns: MatchedMiddleware): MiddlewareFn; static mention(mention: MaybeArray, ...fns: MatchedMiddleware): MiddlewareFn; static hashtag(hashtag: MaybeArray, ...fns: MatchedMiddleware): MiddlewareFn; static cashtag(cashtag: MaybeArray, ...fns: MatchedMiddleware): MiddlewareFn; private static match; /** * Generates middleware for handling matching text messages. */ static hears(triggers: Triggers, ...fns: MatchedMiddleware): MiddlewareFn; /** * Generates middleware for handling specified commands. */ static command(command: MaybeArray, ...fns: NonemptyReadonlyArray>>): MiddlewareFn; /** * Generates middleware for handling matching callback queries. */ static action(triggers: Triggers, ...fns: MatchedMiddleware): MiddlewareFn; /** * Generates middleware for handling matching inline queries. */ static inlineQuery(triggers: Triggers, ...fns: MatchedMiddleware): MiddlewareFn; /** * Generates middleware responding only to specified users. */ static acl(userId: MaybeArray, ...fns: NonemptyReadonlyArray>): MiddlewareFn; private static memberStatus; /** * Generates middleware responding only to chat admins and chat creator. */ static admin(...fns: NonemptyReadonlyArray>): MiddlewareFn; /** * Generates middleware responding only to chat creator. */ static creator(...fns: NonemptyReadonlyArray>): MiddlewareFn; /** * Generates middleware running only in specified chat types. */ static chatType(type: MaybeArray, ...fns: NonemptyReadonlyArray>): MiddlewareFn; /** * Generates middleware running only in private chats. */ static privateChat(...fns: NonemptyReadonlyArray>): MiddlewareFn; /** * Generates middleware running only in groups and supergroups. */ static groupChat(...fns: NonemptyReadonlyArray>): MiddlewareFn; /** * Generates middleware for handling game queries. */ static gameQuery(...fns: NonemptyReadonlyArray>>): MiddlewareFn; static unwrap(handler: Middleware): MiddlewareFn; static compose(middlewares: ReadonlyArray>): MiddlewareFn; } export default Composer; //# sourceMappingURL=composer.d.ts.map