@xbibzlibrary/telebibz 0.1.19 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -8
- package/CONTRIBUTING.md +2 -2
- package/README.id.md +44 -5
- package/README.md +45 -6
- package/README.zh-CN.md +44 -5
- package/RELEASE_AUTOMATION.md +17 -5
- package/bin/telebibz.mjs +1 -1
- package/dist/src/api/client.d.ts +3 -1
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +3 -1
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/transport.d.ts +18 -1
- package/dist/src/api/transport.d.ts.map +1 -1
- package/dist/src/api/transport.js +26 -2
- package/dist/src/api/transport.js.map +1 -1
- package/dist/src/branding/terminal.d.ts +62 -0
- package/dist/src/branding/terminal.d.ts.map +1 -1
- package/dist/src/branding/terminal.js +258 -0
- package/dist/src/branding/terminal.js.map +1 -1
- package/dist/src/broadcast/broadcast.d.ts +50 -0
- package/dist/src/broadcast/broadcast.d.ts.map +1 -0
- package/dist/src/broadcast/broadcast.js +56 -0
- package/dist/src/broadcast/broadcast.js.map +1 -0
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +7 -3
- package/dist/src/cli.js.map +1 -1
- package/dist/src/context/context.d.ts +24 -1
- package/dist/src/context/context.d.ts.map +1 -1
- package/dist/src/context/context.js +102 -8
- package/dist/src/context/context.js.map +1 -1
- package/dist/src/core/bot.d.ts +61 -2
- package/dist/src/core/bot.d.ts.map +1 -1
- package/dist/src/core/bot.js +180 -31
- package/dist/src/core/bot.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/keyboard/index.d.ts +12 -0
- package/dist/src/keyboard/index.d.ts.map +1 -1
- package/dist/src/keyboard/index.js +13 -1
- package/dist/src/keyboard/index.js.map +1 -1
- package/dist/src/observability/logger.d.ts +28 -1
- package/dist/src/observability/logger.d.ts.map +1 -1
- package/dist/src/observability/logger.js +110 -0
- package/dist/src/observability/logger.js.map +1 -1
- package/dist/src/plugins/plugin.d.ts +2 -0
- package/dist/src/plugins/plugin.d.ts.map +1 -1
- package/dist/src/plugins/plugin.js +11 -4
- package/dist/src/plugins/plugin.js.map +1 -1
- package/dist/src/router/router.d.ts +19 -0
- package/dist/src/router/router.d.ts.map +1 -1
- package/dist/src/router/router.js +125 -23
- package/dist/src/router/router.js.map +1 -1
- package/dist/src/state/forms.d.ts +0 -1
- package/dist/src/state/forms.d.ts.map +1 -1
- package/dist/src/state/forms.js +27 -24
- package/dist/src/state/forms.js.map +1 -1
- package/dist/src/storage/storage.d.ts +10 -0
- package/dist/src/storage/storage.d.ts.map +1 -1
- package/dist/src/storage/storage.js +20 -2
- package/dist/src/storage/storage.js.map +1 -1
- package/dist/src/utils/concurrency.d.ts +25 -0
- package/dist/src/utils/concurrency.d.ts.map +1 -0
- package/dist/src/utils/concurrency.js +52 -0
- package/dist/src/utils/concurrency.js.map +1 -0
- package/dist/src/utils/text.d.ts +22 -0
- package/dist/src/utils/text.d.ts.map +1 -1
- package/dist/src/utils/text.js +0 -0
- package/dist/src/utils/text.js.map +1 -1
- package/dist/src/webhook/handler.d.ts +3 -0
- package/dist/src/webhook/handler.d.ts.map +1 -1
- package/dist/src/webhook/handler.js +85 -0
- package/dist/src/webhook/handler.js.map +1 -1
- package/dist-cjs/src/api/client.js +3 -1
- package/dist-cjs/src/api/transport.js +26 -2
- package/dist-cjs/src/branding/terminal.js +264 -1
- package/dist-cjs/src/broadcast/broadcast.js +58 -0
- package/dist-cjs/src/cli.js +7 -3
- package/dist-cjs/src/context/context.js +102 -8
- package/dist-cjs/src/core/bot.js +178 -29
- package/dist-cjs/src/index.js +2 -0
- package/dist-cjs/src/keyboard/index.js +13 -1
- package/dist-cjs/src/observability/logger.js +113 -1
- package/dist-cjs/src/plugins/plugin.js +11 -4
- package/dist-cjs/src/router/router.js +126 -24
- package/dist-cjs/src/state/forms.js +27 -24
- package/dist-cjs/src/storage/storage.js +20 -2
- package/dist-cjs/src/utils/concurrency.js +57 -0
- package/dist-cjs/src/utils/text.js +0 -0
- package/dist-cjs/src/webhook/handler.js +86 -0
- package/docs/API.id.md +120 -4
- package/docs/API.md +122 -4
- package/docs/API.zh-CN.md +119 -3
- package/package.json +3 -3
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { ApiClient } from "../api/client.js";
|
|
2
|
-
import type { Chat, ChatId, Message, ReplyMarkup, Update, User } from "../api/types.js";
|
|
2
|
+
import type { Chat, ChatId, InputFile, Message, ReplyMarkup, Update, User } from "../api/types.js";
|
|
3
3
|
export interface ContextOptions<S extends object = Record<string, unknown>> {
|
|
4
4
|
update: Update;
|
|
5
5
|
api: ApiClient;
|
|
6
6
|
session: S;
|
|
7
7
|
services: Record<string, unknown>;
|
|
8
|
+
me?: User | undefined;
|
|
8
9
|
}
|
|
9
10
|
export declare class Context<S extends object = Record<string, unknown>> {
|
|
10
11
|
readonly update: Update;
|
|
@@ -13,6 +14,9 @@ export declare class Context<S extends object = Record<string, unknown>> {
|
|
|
13
14
|
readonly state: Record<string, unknown>;
|
|
14
15
|
readonly services: Record<string, unknown>;
|
|
15
16
|
readonly params: Record<string, string>;
|
|
17
|
+
readonly me?: User | undefined;
|
|
18
|
+
match?: RegExpMatchArray;
|
|
19
|
+
args?: string[];
|
|
16
20
|
constructor(options: ContextOptions<S>);
|
|
17
21
|
get message(): Message | undefined;
|
|
18
22
|
get chat(): Chat | undefined;
|
|
@@ -27,9 +31,28 @@ export declare class Context<S extends object = Record<string, unknown>> {
|
|
|
27
31
|
get chatJoinRequest(): import("../api/types.js").ChatJoinRequest | undefined;
|
|
28
32
|
get reaction(): Record<string, unknown> | undefined;
|
|
29
33
|
get boost(): Record<string, unknown> | undefined;
|
|
34
|
+
private replyExtras;
|
|
35
|
+
private sendMethod;
|
|
30
36
|
reply(text: string, extra?: Record<string, unknown>): Promise<Message>;
|
|
31
37
|
send(text: string, extra?: Record<string, unknown>): Promise<Message>;
|
|
32
38
|
edit(text: string, extra?: Record<string, unknown>): Promise<Message | true>;
|
|
39
|
+
replyWithHTML(text: string, extra?: Record<string, unknown>): Promise<Message>;
|
|
40
|
+
replyWithMarkdown(text: string, extra?: Record<string, unknown>): Promise<Message>;
|
|
41
|
+
replyWithPhoto(photo: InputFile, extra?: Record<string, unknown>): Promise<Message>;
|
|
42
|
+
replyWithDocument(document: InputFile, extra?: Record<string, unknown>): Promise<Message>;
|
|
43
|
+
replyWithAudio(audio: InputFile, extra?: Record<string, unknown>): Promise<Message>;
|
|
44
|
+
replyWithVideo(video: InputFile, extra?: Record<string, unknown>): Promise<Message>;
|
|
45
|
+
replyWithVoice(voice: InputFile, extra?: Record<string, unknown>): Promise<Message>;
|
|
46
|
+
replyWithAnimation(animation: InputFile, extra?: Record<string, unknown>): Promise<Message>;
|
|
47
|
+
replyWithVideoNote(videoNote: InputFile, extra?: Record<string, unknown>): Promise<Message>;
|
|
48
|
+
replyWithSticker(sticker: InputFile, extra?: Record<string, unknown>): Promise<Message>;
|
|
49
|
+
replyWithMediaGroup(media: Array<Record<string, unknown>>, extra?: Record<string, unknown>): Promise<Message[]>;
|
|
50
|
+
replyWithLocation(latitude: number, longitude: number, extra?: Record<string, unknown>): Promise<Message>;
|
|
51
|
+
replyWithVenue(latitude: number, longitude: number, title: string, address: string, extra?: Record<string, unknown>): Promise<Message>;
|
|
52
|
+
replyWithContact(phoneNumber: string, firstName: string, extra?: Record<string, unknown>): Promise<Message>;
|
|
53
|
+
replyWithPoll(question: string, options: string[], extra?: Record<string, unknown>): Promise<Message>;
|
|
54
|
+
replyWithDice(emoji?: string, extra?: Record<string, unknown>): Promise<Message>;
|
|
55
|
+
sendChatAction(action: string, extra?: Record<string, unknown>): Promise<true>;
|
|
33
56
|
delete(): Promise<true>;
|
|
34
57
|
copy(fromChatId: ChatId, messageId: number, extra?: Record<string, unknown>): Promise<unknown>;
|
|
35
58
|
forward(fromChatId: ChatId, messageId: number, extra?: Record<string, unknown>): Promise<Message>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,11 +5,15 @@ export class Context {
|
|
|
5
5
|
state = Object.create(null);
|
|
6
6
|
services;
|
|
7
7
|
params = Object.create(null);
|
|
8
|
+
me;
|
|
9
|
+
match;
|
|
10
|
+
args;
|
|
8
11
|
constructor(options) {
|
|
9
12
|
this.update = options.update;
|
|
10
13
|
this.api = options.api;
|
|
11
14
|
this.session = options.session;
|
|
12
15
|
this.services = options.services;
|
|
16
|
+
this.me = options.me;
|
|
13
17
|
}
|
|
14
18
|
get message() {
|
|
15
19
|
return this.update.message
|
|
@@ -29,13 +33,21 @@ export class Context {
|
|
|
29
33
|
?? this.pollAnswer?.voter_chat;
|
|
30
34
|
}
|
|
31
35
|
get from() {
|
|
32
|
-
return this.
|
|
33
|
-
?? this.callbackQuery?.from
|
|
36
|
+
return this.callbackQuery?.from
|
|
34
37
|
?? this.inlineQuery?.from
|
|
38
|
+
?? this.update.chosen_inline_result?.from
|
|
39
|
+
?? this.update.message?.from
|
|
40
|
+
?? this.update.edited_message?.from
|
|
41
|
+
?? this.update.channel_post?.from
|
|
42
|
+
?? this.update.edited_channel_post?.from
|
|
43
|
+
?? this.update.business_message?.from
|
|
44
|
+
?? this.update.edited_business_message?.from
|
|
45
|
+
?? this.update.guest_message?.from
|
|
35
46
|
?? this.update.chat_member?.from
|
|
36
47
|
?? this.update.my_chat_member?.from
|
|
37
48
|
?? this.update.chat_join_request?.from
|
|
38
|
-
?? this.pollAnswer?.user
|
|
49
|
+
?? this.pollAnswer?.user
|
|
50
|
+
?? this.message?.from;
|
|
39
51
|
}
|
|
40
52
|
get sender() { return this.from; }
|
|
41
53
|
get callbackQuery() { return this.update.callback_query; }
|
|
@@ -47,20 +59,102 @@ export class Context {
|
|
|
47
59
|
get chatJoinRequest() { return this.update.chat_join_request; }
|
|
48
60
|
get reaction() { return this.update.message_reaction; }
|
|
49
61
|
get boost() { return this.update.chat_boost ?? this.update.removed_chat_boost; }
|
|
50
|
-
|
|
62
|
+
replyExtras(extra) {
|
|
63
|
+
const { reply_parameters, reply_markup, ...rest } = extra;
|
|
64
|
+
const quoted = this.message?.message_id !== undefined ? { message_id: this.message.message_id } : undefined;
|
|
65
|
+
const replyParameters = quoted === undefined && reply_parameters === undefined ? undefined : { ...(quoted ?? {}), ...(reply_parameters ?? {}) };
|
|
66
|
+
return { replyParameters, replyMarkup: reply_markup ?? this.state.reply_markup, rest };
|
|
67
|
+
}
|
|
68
|
+
sendMethod(method, payload, extra = {}) {
|
|
51
69
|
if (!this.chat)
|
|
52
|
-
throw new Error(
|
|
53
|
-
|
|
70
|
+
throw new Error(`Cannot send ${method} without a chat in this update.`);
|
|
71
|
+
const { replyParameters, replyMarkup, rest } = this.replyExtras(extra);
|
|
72
|
+
return this.api.call(method, {
|
|
73
|
+
chat_id: this.chat.id,
|
|
74
|
+
...payload,
|
|
75
|
+
...rest,
|
|
76
|
+
...(replyParameters ? { reply_parameters: replyParameters } : {}),
|
|
77
|
+
...(replyMarkup ? { reply_markup: replyMarkup } : {}),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
async reply(text, extra = {}) {
|
|
81
|
+
return this.sendMethod("sendMessage", { text }, extra);
|
|
54
82
|
}
|
|
55
83
|
async send(text, extra = {}) {
|
|
56
84
|
if (!this.chat)
|
|
57
85
|
throw new Error("Cannot send without a chat in this update.");
|
|
58
|
-
|
|
86
|
+
const { replyMarkup, rest } = this.replyExtras(extra);
|
|
87
|
+
return this.api.methods.sendMessage({
|
|
88
|
+
chat_id: this.chat.id,
|
|
89
|
+
text,
|
|
90
|
+
...rest,
|
|
91
|
+
...(replyMarkup ? { reply_markup: replyMarkup } : {}),
|
|
92
|
+
});
|
|
59
93
|
}
|
|
60
94
|
async edit(text, extra = {}) {
|
|
61
95
|
if (!this.chat || !this.message)
|
|
62
96
|
throw new Error("Cannot edit without a chat and message in this update.");
|
|
63
|
-
|
|
97
|
+
const { replyMarkup, rest } = this.replyExtras(extra);
|
|
98
|
+
return this.api.methods.editMessageText({
|
|
99
|
+
chat_id: this.chat.id,
|
|
100
|
+
message_id: this.message.message_id,
|
|
101
|
+
text,
|
|
102
|
+
...rest,
|
|
103
|
+
...(replyMarkup ? { reply_markup: replyMarkup } : {}),
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
async replyWithHTML(text, extra = {}) {
|
|
107
|
+
return this.reply(text, { parse_mode: "HTML", ...extra });
|
|
108
|
+
}
|
|
109
|
+
async replyWithMarkdown(text, extra = {}) {
|
|
110
|
+
return this.reply(text, { parse_mode: "MarkdownV2", ...extra });
|
|
111
|
+
}
|
|
112
|
+
async replyWithPhoto(photo, extra = {}) {
|
|
113
|
+
return this.sendMethod("sendPhoto", { photo }, extra);
|
|
114
|
+
}
|
|
115
|
+
async replyWithDocument(document, extra = {}) {
|
|
116
|
+
return this.sendMethod("sendDocument", { document }, extra);
|
|
117
|
+
}
|
|
118
|
+
async replyWithAudio(audio, extra = {}) {
|
|
119
|
+
return this.sendMethod("sendAudio", { audio }, extra);
|
|
120
|
+
}
|
|
121
|
+
async replyWithVideo(video, extra = {}) {
|
|
122
|
+
return this.sendMethod("sendVideo", { video }, extra);
|
|
123
|
+
}
|
|
124
|
+
async replyWithVoice(voice, extra = {}) {
|
|
125
|
+
return this.sendMethod("sendVoice", { voice }, extra);
|
|
126
|
+
}
|
|
127
|
+
async replyWithAnimation(animation, extra = {}) {
|
|
128
|
+
return this.sendMethod("sendAnimation", { animation }, extra);
|
|
129
|
+
}
|
|
130
|
+
async replyWithVideoNote(videoNote, extra = {}) {
|
|
131
|
+
return this.sendMethod("sendVideoNote", { video_note: videoNote }, extra);
|
|
132
|
+
}
|
|
133
|
+
async replyWithSticker(sticker, extra = {}) {
|
|
134
|
+
return this.sendMethod("sendSticker", { sticker }, extra);
|
|
135
|
+
}
|
|
136
|
+
async replyWithMediaGroup(media, extra = {}) {
|
|
137
|
+
return this.sendMethod("sendMediaGroup", { media }, extra);
|
|
138
|
+
}
|
|
139
|
+
async replyWithLocation(latitude, longitude, extra = {}) {
|
|
140
|
+
return this.sendMethod("sendLocation", { latitude, longitude }, extra);
|
|
141
|
+
}
|
|
142
|
+
async replyWithVenue(latitude, longitude, title, address, extra = {}) {
|
|
143
|
+
return this.sendMethod("sendVenue", { latitude, longitude, title, address }, extra);
|
|
144
|
+
}
|
|
145
|
+
async replyWithContact(phoneNumber, firstName, extra = {}) {
|
|
146
|
+
return this.sendMethod("sendContact", { phone_number: phoneNumber, first_name: firstName }, extra);
|
|
147
|
+
}
|
|
148
|
+
async replyWithPoll(question, options, extra = {}) {
|
|
149
|
+
return this.sendMethod("sendPoll", { question, options }, extra);
|
|
150
|
+
}
|
|
151
|
+
async replyWithDice(emoji, extra = {}) {
|
|
152
|
+
return this.sendMethod("sendDice", emoji === undefined ? {} : { emoji }, extra);
|
|
153
|
+
}
|
|
154
|
+
async sendChatAction(action, extra = {}) {
|
|
155
|
+
if (!this.chat)
|
|
156
|
+
throw new Error("Cannot send chat action without a chat in this update.");
|
|
157
|
+
return this.api.call("sendChatAction", { chat_id: this.chat.id, action, ...extra });
|
|
64
158
|
}
|
|
65
159
|
async delete() {
|
|
66
160
|
if (!this.chat || !this.message)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"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"}
|
package/dist/src/core/bot.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { ApiClient } from "../api/client.js";
|
|
2
2
|
import { type FetchTransportOptions, type Transport } from "../api/transport.js";
|
|
3
|
-
import type { BotCommand, BotCommandScope, Update, User } from "../api/types.js";
|
|
3
|
+
import type { BotCommand, BotCommandScope, ChatId, Update, User } from "../api/types.js";
|
|
4
4
|
import { Context } from "../context/context.js";
|
|
5
5
|
import { type Middleware } from "../middleware/compose.js";
|
|
6
|
-
import { Router, type RouterOptions } from "../router/router.js";
|
|
6
|
+
import { Router, type RouterOptions, type UpdateFilter } from "../router/router.js";
|
|
7
7
|
import { EventBus, type EventMap } from "./events.js";
|
|
8
8
|
import { type Storage } from "../storage/storage.js";
|
|
9
9
|
import { PluginManager, type Plugin } from "../plugins/plugin.js";
|
|
10
10
|
import { Logger, type LoggerOptions } from "../observability/logger.js";
|
|
11
11
|
import { type Wizard } from "../state/conversation.js";
|
|
12
|
+
import { type BroadcastOptions, type BroadcastReport } from "../broadcast/broadcast.js";
|
|
12
13
|
export type BotStatus = "created" | "initialized" | "starting" | "running" | "stopping" | "stopped" | "error";
|
|
13
14
|
export type BotContext<S extends object = Record<string, unknown>> = Context<S>;
|
|
14
15
|
export interface BotOptions<S extends object = Record<string, unknown>> {
|
|
@@ -25,8 +26,18 @@ export interface BotOptions<S extends object = Record<string, unknown>> {
|
|
|
25
26
|
retryDelayMs?: number;
|
|
26
27
|
maxRetryDelayMs?: number;
|
|
27
28
|
};
|
|
29
|
+
/**
|
|
30
|
+
* Update-processing tuning. Updates always run in parallel across chats
|
|
31
|
+
* while staying ordered within a single chat. `concurrency` caps how many
|
|
32
|
+
* updates may be processed at the same time (default `Infinity` — bursts of
|
|
33
|
+
* 1000+ messages are processed at once, with no artificial cooldown).
|
|
34
|
+
*/
|
|
35
|
+
updates?: {
|
|
36
|
+
concurrency?: number;
|
|
37
|
+
};
|
|
28
38
|
router?: RouterOptions;
|
|
29
39
|
logger?: Logger | LoggerOptions;
|
|
40
|
+
branding?: boolean;
|
|
30
41
|
}
|
|
31
42
|
export interface HealthStatus {
|
|
32
43
|
status: BotStatus;
|
|
@@ -50,7 +61,20 @@ export declare class Bot<S extends object = Record<string, unknown>> {
|
|
|
50
61
|
private pollingAbort;
|
|
51
62
|
private offset;
|
|
52
63
|
private me?;
|
|
64
|
+
/** Caps how many updates run at once (default: unlimited). */
|
|
65
|
+
private readonly updateLimiter;
|
|
66
|
+
/** Per-chat processing chains: parallel across chats, ordered within a chat. */
|
|
67
|
+
private readonly chatChains;
|
|
68
|
+
/** Memoized init so a burst of updates triggers exactly one getMe call. */
|
|
69
|
+
private initOnce;
|
|
70
|
+
private readonly brandingEnabled;
|
|
71
|
+
/** Branding effects run only on an interactive TTY; structured logs stay untouched otherwise. */
|
|
72
|
+
private readonly brandingActive;
|
|
73
|
+
private activeBanner;
|
|
74
|
+
private errorHandler?;
|
|
53
75
|
constructor(options: string | BotOptions<S>);
|
|
76
|
+
/** Startup info logs are demoted to debug while the branding sequence owns the terminal. */
|
|
77
|
+
private startupLog;
|
|
54
78
|
get status(): BotStatus;
|
|
55
79
|
get botInfo(): User | undefined;
|
|
56
80
|
use(...middleware: Middleware<Context<S>>[]): this;
|
|
@@ -58,6 +82,15 @@ export declare class Bot<S extends object = Record<string, unknown>> {
|
|
|
58
82
|
callback(pattern: string | RegExp, handler: Middleware<Context<S>>): this;
|
|
59
83
|
onText(text: string, handler: Middleware<Context<S>>): this;
|
|
60
84
|
onRegex(expression: RegExp, handler: Middleware<Context<S>>): this;
|
|
85
|
+
/** Registers a handler for update types: `bot.on("message:photo", handler)` or `bot.on(["message:text", "callback_query:data"], handler)`. */
|
|
86
|
+
on(filter: UpdateFilter | UpdateFilter[], handler: Middleware<Context<S>>): this;
|
|
87
|
+
/** Registers a handler for exact text or a regular expression, mirroring familiar frameworks. */
|
|
88
|
+
hears(trigger: string | RegExp, handler: Middleware<Context<S>>): this;
|
|
89
|
+
/**
|
|
90
|
+
* Sets the error boundary for update handlers. When set, handler failures are
|
|
91
|
+
* passed here instead of rejecting `handleUpdate()` (webhooks answer 200).
|
|
92
|
+
*/
|
|
93
|
+
catch(handler: (error: unknown, ctx: Context<S>) => void | Promise<void>): this;
|
|
61
94
|
usePlugin(plugin: Plugin<Context<S>>): this;
|
|
62
95
|
/**
|
|
63
96
|
* Routes subsequent messages to the active Wizard step for the same chat/user.
|
|
@@ -80,7 +113,33 @@ export declare class Bot<S extends object = Record<string, unknown>> {
|
|
|
80
113
|
getMe(): Promise<User>;
|
|
81
114
|
setCommands(commands: BotCommand[], scope?: BotCommandScope, languageCode?: string): Promise<true>;
|
|
82
115
|
deleteCommands(scope?: BotCommandScope, languageCode?: string): Promise<true>;
|
|
116
|
+
/**
|
|
117
|
+
* Handles a single update. Updates for different chats run in parallel;
|
|
118
|
+
* updates for the same chat are processed strictly in arrival order so
|
|
119
|
+
* sessions, wizards, and conversations never interleave. Rejects for this
|
|
120
|
+
* update's failure (as before) without affecting other updates.
|
|
121
|
+
*/
|
|
83
122
|
handleUpdate(update: Update): Promise<void>;
|
|
123
|
+
/**
|
|
124
|
+
* Handles a whole batch of updates at once: every chat in the batch is
|
|
125
|
+
* processed immediately (parallel across chats, ordered per chat), so a
|
|
126
|
+
* burst of 1000 messages is not stuck behind one slow handler. Individual
|
|
127
|
+
* handler failures are logged, emitted as `update:error`, and passed to the
|
|
128
|
+
* `catch()` error boundary; they never reject this promise.
|
|
129
|
+
*/
|
|
130
|
+
handleUpdates(updates: readonly Update[]): Promise<void>;
|
|
131
|
+
/**
|
|
132
|
+
* Sends to many chats in parallel — built for broadcasts to 1000+ users.
|
|
133
|
+
* There is no proactive cooldown: every chat is attempted at once (up to
|
|
134
|
+
* `concurrency`). When Telegram answers 429, the send is retried
|
|
135
|
+
* automatically after exactly the `retry_after` delay Telegram ordered, so
|
|
136
|
+
* bursts deliver completely instead of failing.
|
|
137
|
+
*/
|
|
138
|
+
broadcast(chatIds: readonly ChatId[], send: (chatId: ChatId) => Promise<unknown>, options?: BroadcastOptions): Promise<BroadcastReport>;
|
|
139
|
+
/** Runs init() once even when many updates arrive concurrently. */
|
|
140
|
+
private ensureInitialized;
|
|
141
|
+
private processUpdate;
|
|
142
|
+
private runUpdate;
|
|
84
143
|
private conversationKey;
|
|
85
144
|
private waitForRetry;
|
|
86
145
|
private poll;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../../src/core/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAkB,KAAK,qBAAqB,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../../src/core/bot.ts"],"names":[],"mappings":"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"}
|