telegraf
Version:
Modern Telegram Bot Framework
117 lines • 5.14 kB
TypeScript
/// <reference types="node" />
/// <reference types="node" />
import * as http from 'http';
import * as tg from './core/types/typegram';
import * as tt from './telegram-types';
import { Composer } from './composer';
import { MaybePromise } from './core/helpers/util';
import ApiClient from './core/network/client';
import Context from './context';
import Telegram from './telegram';
import { TlsOptions } from 'tls';
export declare namespace Telegraf {
interface Options<TContext extends Context> {
contextType: new (...args: ConstructorParameters<typeof Context>) => TContext;
handlerTimeout: number;
telegram?: Partial<ApiClient.Options>;
}
interface LaunchOptions {
dropPendingUpdates?: boolean;
/** List the types of updates you want your bot to receive */
allowedUpdates?: tt.UpdateType[];
/** Configuration options for when the bot is run via webhooks */
webhook?: {
/** Public domain for webhook. */
domain: string;
/**
* Webhook url path; will be automatically generated if not specified
* @deprecated Pass `path` instead
* */
hookPath?: string;
/** Webhook url path; will be automatically generated if not specified */
path?: string;
host?: string;
port?: number;
/** The fixed IP address which will be used to send webhook requests instead of the IP address resolved through DNS */
ipAddress?: string;
/**
* Maximum allowed number of simultaneous HTTPS connections to the webhook for update delivery, 1-100. Defaults to 40.
* Use lower values to limit the load on your bot's server, and higher values to increase your bot's throughput.
*/
maxConnections?: number;
/** TLS server options. Omit to use http. */
tlsOptions?: TlsOptions;
/**
* A secret token to be sent in a header `“X-Telegram-Bot-Api-Secret-Token”` in every webhook request.
* 1-256 characters. Only characters `A-Z`, `a-z`, `0-9`, `_` and `-` are allowed.
* The header is useful to ensure that the request comes from a webhook set by you.
*/
secretToken?: string;
/**
* Upload your public key certificate so that the root certificate in use can be checked.
* See [self-signed guide](https://core.telegram.org/bots/self-signed) for details.
*/
certificate?: tg.InputFile;
cb?: http.RequestListener;
};
}
}
export declare class Telegraf<C extends Context = Context> extends Composer<C> {
private readonly options;
private webhookServer?;
private polling?;
/** Set manually to avoid implicit `getMe` call in `launch` or `webhookCallback` */
botInfo?: tg.UserFromGetMe;
telegram: Telegram;
readonly context: Partial<C>;
/** Assign to this to customise the webhook filter middleware.
* `{ path, secretToken }` will be bound to this rather than the Telegraf instance.
* Remember to assign a regular function and not an arrow function so it's bindable.
*/
webhookFilter: (this: {
/** @deprecated Use path instead */
hookPath: string;
path: string;
secretToken?: string;
}, req: http.IncomingMessage) => boolean;
private handleError;
constructor(token: string, options?: Partial<Telegraf.Options<C>>);
private get token();
/** @deprecated use `ctx.telegram.webhookReply` */
set webhookReply(webhookReply: boolean);
/** @deprecated use `ctx.telegram.webhookReply` */
get webhookReply(): boolean;
/**
* _Override_ error handling
*/
catch(handler: (err: unknown, ctx: C) => MaybePromise<void>): this;
/**
* You must call `bot.telegram.setWebhook` for this to work.
* You should probably use {@link Telegraf.createWebhook} instead.
*/
webhookCallback(path?: string, opts?: {
secretToken?: string;
}): (req: http.IncomingMessage & {
body?: tg.Update | undefined;
}, res: http.ServerResponse<http.IncomingMessage>, next?: () => void) => Promise<void>;
private getDomainOpts;
/**
* Specify a url to receive incoming updates via webhook.
* Returns an Express-style middleware you can pass to app.use()
*/
createWebhook(opts: {
domain: string;
path?: string;
} & tt.ExtraSetWebhook): Promise<(req: http.IncomingMessage & {
body?: tg.Update | undefined;
}, res: http.ServerResponse<http.IncomingMessage>, next?: () => void) => Promise<void>>;
private startPolling;
private startWebhook;
secretPathComponent(): string;
launch(onLaunch?: () => void): Promise<void>;
launch(config: Telegraf.LaunchOptions, onLaunch?: () => void): Promise<void>;
stop(reason?: string): void;
private botInfoCall?;
handleUpdate(update: tg.Update, webhookResponse?: http.ServerResponse): Promise<void>;
}
//# sourceMappingURL=telegraf.d.ts.map