@xbibzlibrary/telebibz 0.3.2 → 0.4.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 +16 -1
- package/README.id.md +13 -0
- package/README.md +13 -0
- package/README.zh-CN.md +13 -0
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +12 -0
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/context/context.d.ts +46 -1
- package/dist/src/context/context.d.ts.map +1 -1
- package/dist/src/context/context.js +107 -0
- package/dist/src/context/context.js.map +1 -1
- package/dist/src/core/bot.d.ts +38 -3
- package/dist/src/core/bot.d.ts.map +1 -1
- package/dist/src/core/bot.js +70 -7
- package/dist/src/core/bot.js.map +1 -1
- package/dist/src/core/webhook-reply.d.ts +34 -0
- package/dist/src/core/webhook-reply.d.ts.map +1 -0
- package/dist/src/core/webhook-reply.js +37 -0
- package/dist/src/core/webhook-reply.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/webhook/handler.d.ts +8 -0
- package/dist/src/webhook/handler.d.ts.map +1 -1
- package/dist/src/webhook/handler.js +26 -6
- package/dist/src/webhook/handler.js.map +1 -1
- package/dist-cjs/src/api/client.js +12 -0
- package/dist-cjs/src/context/context.js +107 -0
- package/dist-cjs/src/core/bot.js +72 -8
- package/dist-cjs/src/core/webhook-reply.js +42 -0
- package/dist-cjs/src/index.js +1 -0
- package/dist-cjs/src/webhook/handler.js +26 -6
- package/docs/API.id.md +48 -4
- package/docs/API.md +48 -4
- package/docs/API.zh-CN.md +48 -4
- package/package.json +1 -1
package/dist/src/core/bot.js
CHANGED
|
@@ -11,6 +11,16 @@ import { printStatusLine, printTeleBibzBanner, runStartupSequence, startTeleBibz
|
|
|
11
11
|
import { conversationKeyFromContext } from "../state/conversation.js";
|
|
12
12
|
import { runBroadcast } from "../broadcast/broadcast.js";
|
|
13
13
|
import { Limiter } from "../utils/concurrency.js";
|
|
14
|
+
import { runWithWebhookReply, runWithoutWebhookReply } from "./webhook-reply.js";
|
|
15
|
+
/** Thrown when a single update exceeds `handlerTimeout`; the handler keeps running in the background. */
|
|
16
|
+
export class UpdateTimeoutError extends Error {
|
|
17
|
+
name = "UpdateTimeoutError";
|
|
18
|
+
updateId;
|
|
19
|
+
constructor(updateId, timeoutMs) {
|
|
20
|
+
super(`Update ${updateId} handler timed out after ${timeoutMs}ms`);
|
|
21
|
+
this.updateId = updateId;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
14
24
|
export class Bot {
|
|
15
25
|
api;
|
|
16
26
|
router;
|
|
@@ -28,6 +38,10 @@ export class Bot {
|
|
|
28
38
|
me;
|
|
29
39
|
/** Caps how many updates run at once (default: unlimited). */
|
|
30
40
|
updateLimiter;
|
|
41
|
+
/** Per-update timeout in ms; `Infinity` disables. */
|
|
42
|
+
handlerTimeoutMs;
|
|
43
|
+
/** Context class instantiated per update (default `Context`). */
|
|
44
|
+
contextType;
|
|
31
45
|
/** Per-chat processing chains: parallel across chats, ordered within a chat. */
|
|
32
46
|
chatChains = new Map();
|
|
33
47
|
/** Memoized init so a burst of updates triggers exactly one getMe call. */
|
|
@@ -59,6 +73,8 @@ export class Bot {
|
|
|
59
73
|
});
|
|
60
74
|
this.plugins = new PluginManager(this);
|
|
61
75
|
this.updateLimiter = new Limiter(config.updates?.concurrency ?? Infinity);
|
|
76
|
+
this.handlerTimeoutMs = config.handlerTimeout ?? 90_000;
|
|
77
|
+
this.contextType = config.contextType ?? Context;
|
|
62
78
|
this.pollingOptions = {
|
|
63
79
|
allowedUpdates: config.polling?.allowedUpdates ?? [],
|
|
64
80
|
limit: config.polling?.limit ?? 100,
|
|
@@ -152,7 +168,7 @@ export class Bot {
|
|
|
152
168
|
throw error;
|
|
153
169
|
}
|
|
154
170
|
}
|
|
155
|
-
async start() { await this.launch({ mode: "polling" }); }
|
|
171
|
+
async start(options = {}) { await this.launch({ mode: "polling", ...options }); }
|
|
156
172
|
async launch(options = { mode: "polling" }) {
|
|
157
173
|
if (options.mode !== "polling")
|
|
158
174
|
throw new Error("Use createWebhookHandler() for webhook mode.");
|
|
@@ -177,6 +193,11 @@ export class Bot {
|
|
|
177
193
|
}
|
|
178
194
|
if (this.statusValue === "running")
|
|
179
195
|
return;
|
|
196
|
+
if (options.dropPendingUpdates) {
|
|
197
|
+
// Same mechanism Telegraf uses: drop everything Telegram is holding for
|
|
198
|
+
// this bot before the first getUpdates call.
|
|
199
|
+
await this.api.call("deleteWebhook", { drop_pending_updates: true });
|
|
200
|
+
}
|
|
180
201
|
this.statusValue = "starting";
|
|
181
202
|
this.startupLog("bot.starting", { mode: options.mode });
|
|
182
203
|
await this.events.emit("bot:starting", { bot: this });
|
|
@@ -221,18 +242,60 @@ export class Bot {
|
|
|
221
242
|
* updates for the same chat are processed strictly in arrival order so
|
|
222
243
|
* sessions, wizards, and conversations never interleave. Rejects for this
|
|
223
244
|
* update's failure (as before) without affecting other updates.
|
|
245
|
+
*
|
|
246
|
+
* `options.webhookReply` installs a Telegraf-style responder: the first
|
|
247
|
+
* outgoing API call during this update is answered through the webhook HTTP
|
|
248
|
+
* response instead of a separate request, and resolves with `true` because
|
|
249
|
+
* Telegram never sends the method result back to a webhook response.
|
|
224
250
|
*/
|
|
225
|
-
async handleUpdate(update) {
|
|
251
|
+
async handleUpdate(update, options = {}) {
|
|
226
252
|
const key = this.conversationKey(update);
|
|
227
253
|
const previous = this.chatChains.get(key);
|
|
228
|
-
const
|
|
254
|
+
const execute = options.webhookReply === undefined
|
|
255
|
+
? () => this.processUpdate(update)
|
|
256
|
+
: () => runWithWebhookReply(options.webhookReply, () => this.processUpdate(update));
|
|
257
|
+
// The chain waits for the real completion so same-chat ordering holds
|
|
258
|
+
// even when the caller-facing await below is released by a timeout.
|
|
259
|
+
const run = (previous ?? Promise.resolve()).catch(() => undefined).then(execute);
|
|
229
260
|
const tail = run.then(() => undefined, () => undefined);
|
|
230
261
|
this.chatChains.set(key, tail);
|
|
231
262
|
void tail.then(() => {
|
|
232
263
|
if (this.chatChains.get(key) === tail)
|
|
233
264
|
this.chatChains.delete(key);
|
|
234
265
|
});
|
|
235
|
-
|
|
266
|
+
try {
|
|
267
|
+
await this.withTimeout(run, this.handlerTimeoutMs, update.update_id);
|
|
268
|
+
}
|
|
269
|
+
catch (error) {
|
|
270
|
+
if (!(error instanceof UpdateTimeoutError))
|
|
271
|
+
throw error;
|
|
272
|
+
// A timed-out update follows the same error flow as a failed handler;
|
|
273
|
+
// the handler itself keeps running to completion in the background.
|
|
274
|
+
this.logger.error("update.handler_timeout", { updateId: update.update_id, timeoutMs: this.handlerTimeoutMs });
|
|
275
|
+
await this.events.emit("update:error", { update, error });
|
|
276
|
+
await this.events.emit("bot:error", { bot: this, error });
|
|
277
|
+
if (this.errorHandler) {
|
|
278
|
+
await this.errorHandler(error, new Context({ update, api: this.api, session: {}, services: this.services, me: this.me }));
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
throw error;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/** Rejects with `UpdateTimeoutError` after `timeoutMs` unless `promise` settles first. */
|
|
285
|
+
async withTimeout(promise, timeoutMs, updateId) {
|
|
286
|
+
if (!Number.isFinite(timeoutMs))
|
|
287
|
+
return promise;
|
|
288
|
+
let timer;
|
|
289
|
+
const timeout = new Promise((_, reject) => {
|
|
290
|
+
timer = setTimeout(() => reject(new UpdateTimeoutError(updateId, timeoutMs)), timeoutMs);
|
|
291
|
+
});
|
|
292
|
+
try {
|
|
293
|
+
return await Promise.race([promise, timeout]);
|
|
294
|
+
}
|
|
295
|
+
finally {
|
|
296
|
+
if (timer !== undefined)
|
|
297
|
+
clearTimeout(timer);
|
|
298
|
+
}
|
|
236
299
|
}
|
|
237
300
|
/**
|
|
238
301
|
* Handles a whole batch of updates at once: every chat in the batch is
|
|
@@ -262,12 +325,12 @@ export class Bot {
|
|
|
262
325
|
async broadcast(chatIds, send, options) {
|
|
263
326
|
return runBroadcast(chatIds, send, options);
|
|
264
327
|
}
|
|
265
|
-
/** Runs init() once even when many updates arrive concurrently. */
|
|
328
|
+
/** Runs init() once even when many updates arrive concurrently; never claims a webhook reply slot. */
|
|
266
329
|
ensureInitialized() {
|
|
267
330
|
if (this.me)
|
|
268
331
|
return Promise.resolve();
|
|
269
332
|
if (!this.initOnce) {
|
|
270
|
-
this.initOnce = this.init().then(() => { this.initOnce = undefined; }, (error) => {
|
|
333
|
+
this.initOnce = runWithoutWebhookReply(() => this.init()).then(() => { this.initOnce = undefined; }, (error) => {
|
|
271
334
|
this.initOnce = undefined;
|
|
272
335
|
throw error;
|
|
273
336
|
});
|
|
@@ -293,7 +356,7 @@ export class Bot {
|
|
|
293
356
|
await this.ensureInitialized();
|
|
294
357
|
if (!this.me)
|
|
295
358
|
return;
|
|
296
|
-
const ctx = new
|
|
359
|
+
const ctx = new this.contextType({ update, api: this.api, session, services: this.services, me: this.me });
|
|
297
360
|
await this.events.emit("update", { update });
|
|
298
361
|
if (message) {
|
|
299
362
|
await this.events.emit("message", { message });
|
package/dist/src/core/bot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../../../src/core/bot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../../../src/core/bot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook reply support (Telegraf-style): while handling a webhook update, the
|
|
3
|
+
* first outgoing API call can be answered through the webhook HTTP response
|
|
4
|
+
* itself instead of a separate request to api.telegram.org — Telegram executes
|
|
5
|
+
* the method for you. Only one call can ride the response; every other call
|
|
6
|
+
* goes through the transport as usual.
|
|
7
|
+
*
|
|
8
|
+
* The sink is carried in an AsyncLocalStorage, so concurrent updates (parallel
|
|
9
|
+
* across chats) each keep their own responder.
|
|
10
|
+
*/
|
|
11
|
+
export type WebhookReplyPayload = Record<string, unknown>;
|
|
12
|
+
export type WebhookReplySink = (payload: WebhookReplyPayload) => void;
|
|
13
|
+
/** Runs `fn` with a webhook reply sink active for every API call inside it. */
|
|
14
|
+
export declare function runWithWebhookReply<T>(sink: WebhookReplySink, fn: () => Promise<T>): Promise<T>;
|
|
15
|
+
/**
|
|
16
|
+
* Runs `fn` with webhook replies suppressed (library-internal calls such as
|
|
17
|
+
* the lazy `getMe` initialization must never claim the response slot).
|
|
18
|
+
*/
|
|
19
|
+
export declare function runWithoutWebhookReply<T>(fn: () => Promise<T>): Promise<T>;
|
|
20
|
+
/**
|
|
21
|
+
* Claims the webhook reply for `method`/`payload` if a sink is active and not
|
|
22
|
+
* yet used. Returns the synthesized transport response the caller should
|
|
23
|
+
* resolve with, or `undefined` when the call must go through the transport.
|
|
24
|
+
*/
|
|
25
|
+
export declare function claimWebhookReply(method: string, payload: Record<string, unknown> | undefined): {
|
|
26
|
+
status: number;
|
|
27
|
+
data: {
|
|
28
|
+
ok: true;
|
|
29
|
+
result: true;
|
|
30
|
+
};
|
|
31
|
+
} | undefined;
|
|
32
|
+
/** True while an unclaimed webhook reply is available (diagnostics/testing). */
|
|
33
|
+
export declare function hasWebhookReply(): boolean;
|
|
34
|
+
//# sourceMappingURL=webhook-reply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-reply.d.ts","sourceRoot":"","sources":["../../../src/core/webhook-reply.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;AAUtE,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE/F;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAI1E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,IAAI,CAAA;KAAE,CAAA;CAAE,GAAG,SAAS,CAQhK;AAED,gFAAgF;AAChF,wBAAgB,eAAe,IAAI,OAAO,CAGzC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
const storage = new AsyncLocalStorage();
|
|
3
|
+
/** Runs `fn` with a webhook reply sink active for every API call inside it. */
|
|
4
|
+
export function runWithWebhookReply(sink, fn) {
|
|
5
|
+
return storage.run({ sink, claimed: false, suppressed: false }, fn);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Runs `fn` with webhook replies suppressed (library-internal calls such as
|
|
9
|
+
* the lazy `getMe` initialization must never claim the response slot).
|
|
10
|
+
*/
|
|
11
|
+
export function runWithoutWebhookReply(fn) {
|
|
12
|
+
const state = storage.getStore();
|
|
13
|
+
if (!state)
|
|
14
|
+
return fn();
|
|
15
|
+
return storage.run({ ...state, suppressed: true }, fn);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Claims the webhook reply for `method`/`payload` if a sink is active and not
|
|
19
|
+
* yet used. Returns the synthesized transport response the caller should
|
|
20
|
+
* resolve with, or `undefined` when the call must go through the transport.
|
|
21
|
+
*/
|
|
22
|
+
export function claimWebhookReply(method, payload) {
|
|
23
|
+
const state = storage.getStore();
|
|
24
|
+
if (!state || state.claimed || state.suppressed)
|
|
25
|
+
return undefined;
|
|
26
|
+
state.claimed = true;
|
|
27
|
+
state.sink({ method, ...(payload ?? {}) });
|
|
28
|
+
// Telegram never sends the method result back to the webhook response, so
|
|
29
|
+
// the caller resolves with a synthetic success (same as Telegraf).
|
|
30
|
+
return { status: 200, data: { ok: true, result: true } };
|
|
31
|
+
}
|
|
32
|
+
/** True while an unclaimed webhook reply is available (diagnostics/testing). */
|
|
33
|
+
export function hasWebhookReply() {
|
|
34
|
+
const state = storage.getStore();
|
|
35
|
+
return state !== undefined && !state.claimed;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=webhook-reply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-reply.js","sourceRoot":"","sources":["../../../src/core/webhook-reply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAsBrD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAc,CAAC;AAEpD,+EAA+E;AAC/E,MAAM,UAAU,mBAAmB,CAAI,IAAsB,EAAE,EAAoB;IACjF,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAI,EAAoB;IAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,CAAC;IACxB,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,OAA4C;IAC5F,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3C,0EAA0E;IAC1E,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;AAC3D,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,eAAe;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAC/C,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACtF,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACtF,cAAc,2BAA2B,CAAC"}
|
package/dist/src/index.js
CHANGED
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACtF,cAAc,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACtF,cAAc,2BAA2B,CAAC"}
|
|
@@ -4,6 +4,14 @@ export interface WebhookOptions {
|
|
|
4
4
|
secretToken?: string;
|
|
5
5
|
maxBodyBytes?: number;
|
|
6
6
|
onError?: (error: unknown) => void | Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Telegraf-style webhook replies (default `false`). When enabled, the first
|
|
9
|
+
* outgoing API call while handling an update is answered through the webhook
|
|
10
|
+
* HTTP response instead of a separate request to Telegram — Telegram then
|
|
11
|
+
* executes the method for you. That call resolves with `true`, since Telegram
|
|
12
|
+
* never sends the method result back to a webhook response.
|
|
13
|
+
*/
|
|
14
|
+
webhookReply?: boolean;
|
|
7
15
|
}
|
|
8
16
|
export type WebhookFramework = "express" | "http" | "fastify" | "koa";
|
|
9
17
|
export declare function createWebhookHandler<S extends object>(bot: Bot<S>, options?: WebhookOptions): (request: Request) => Promise<Response>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/webhook/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/webhook/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAI1C,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AACD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;AAatE,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,cAAmB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAuBzI;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAC9C,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EACX,UAAU,GAAE,gBAA4B,EACxC,OAAO,GAAE,cAAmB,GAC3B,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAkFnH"}
|
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
import { timingSafeEqual } from "node:crypto";
|
|
2
|
+
/** Runs the update, optionally claiming the webhook response for the first API call. */
|
|
3
|
+
async function processWithOptionalReply(bot, update, sink) {
|
|
4
|
+
if (sink === undefined) {
|
|
5
|
+
await bot.handleUpdate(update);
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
await bot.handleUpdate(update, { webhookReply: sink });
|
|
9
|
+
}
|
|
10
|
+
function replyResponse(payload) {
|
|
11
|
+
if (payload !== undefined)
|
|
12
|
+
return new Response(JSON.stringify(payload), { status: 200, headers: { "content-type": "application/json" } });
|
|
13
|
+
return new Response("OK", { status: 200 });
|
|
14
|
+
}
|
|
2
15
|
export function createWebhookHandler(bot, options = {}) {
|
|
3
16
|
const maxBodyBytes = options.maxBodyBytes ?? 1_048_576;
|
|
4
17
|
return async (request) => {
|
|
@@ -19,8 +32,10 @@ export function createWebhookHandler(bot, options = {}) {
|
|
|
19
32
|
const update = JSON.parse(new TextDecoder().decode(raw));
|
|
20
33
|
if (!Number.isInteger(update.update_id))
|
|
21
34
|
return new Response("Bad Request", { status: 400 });
|
|
22
|
-
|
|
23
|
-
|
|
35
|
+
let replyPayload;
|
|
36
|
+
const sink = options.webhookReply === true ? (payload) => { replyPayload = payload; } : undefined;
|
|
37
|
+
await processWithOptionalReply(bot, update, sink);
|
|
38
|
+
return replyResponse(replyPayload);
|
|
24
39
|
}
|
|
25
40
|
catch (error) {
|
|
26
41
|
await options.onError?.(error);
|
|
@@ -33,9 +48,9 @@ export function webhookCallback(bot, _framework = "express", options = {}) {
|
|
|
33
48
|
return async (req, res) => {
|
|
34
49
|
const rawReq = req;
|
|
35
50
|
const rawRes = res;
|
|
36
|
-
const sendResponse = (status, message) => {
|
|
51
|
+
const sendResponse = (status, message, contentType = "text/plain") => {
|
|
37
52
|
if (rawRes && typeof rawRes.writeHead === "function" && typeof rawRes.end === "function") {
|
|
38
|
-
rawRes.writeHead(status, { "Content-Type":
|
|
53
|
+
rawRes.writeHead(status, { "Content-Type": contentType });
|
|
39
54
|
rawRes.end(message);
|
|
40
55
|
return;
|
|
41
56
|
}
|
|
@@ -95,8 +110,13 @@ export function webhookCallback(bot, _framework = "express", options = {}) {
|
|
|
95
110
|
sendResponse(400, "Bad Request");
|
|
96
111
|
return;
|
|
97
112
|
}
|
|
98
|
-
|
|
99
|
-
|
|
113
|
+
let replyPayload;
|
|
114
|
+
const sink = options.webhookReply === true ? (payload) => { replyPayload = payload; } : undefined;
|
|
115
|
+
await processWithOptionalReply(bot, update, sink);
|
|
116
|
+
if (replyPayload !== undefined)
|
|
117
|
+
sendResponse(200, JSON.stringify(replyPayload), "application/json");
|
|
118
|
+
else
|
|
119
|
+
sendResponse(200, "OK");
|
|
100
120
|
}
|
|
101
121
|
catch (error) {
|
|
102
122
|
await options.onError?.(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/webhook/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/webhook/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ApiClient = void 0;
|
|
4
4
|
const api_js_1 = require("../../generated/api.js");
|
|
5
|
+
const webhook_reply_js_1 = require("../core/webhook-reply.js");
|
|
5
6
|
const errors_js_1 = require("./errors.js");
|
|
6
7
|
class ApiClient {
|
|
7
8
|
methods;
|
|
@@ -25,6 +26,17 @@ class ApiClient {
|
|
|
25
26
|
}
|
|
26
27
|
async call(method, ...args) { return this.request(method, args[0]); }
|
|
27
28
|
async request(method, payload, signal, options) {
|
|
29
|
+
// Webhook reply mode: the first call while handling a webhook update is
|
|
30
|
+
// answered through the webhook HTTP response instead of the transport.
|
|
31
|
+
const webhookReply = (0, webhook_reply_js_1.claimWebhookReply)(method, payload);
|
|
32
|
+
if (webhookReply) {
|
|
33
|
+
const context = { method, payload, startedAt: Date.now() };
|
|
34
|
+
await this.hooks.onRequest?.(context);
|
|
35
|
+
context.durationMs = Date.now() - context.startedAt;
|
|
36
|
+
context.response = webhookReply.data;
|
|
37
|
+
await this.hooks.onResponse?.(context);
|
|
38
|
+
return webhookReply.data.result;
|
|
39
|
+
}
|
|
28
40
|
const context = { method, payload, startedAt: Date.now() };
|
|
29
41
|
await this.hooks.onRequest?.(context);
|
|
30
42
|
try {
|
|
@@ -178,6 +178,113 @@ class Context {
|
|
|
178
178
|
async getUserProfilePhotos(userId = this.from?.id, extra = {}) { if (!userId)
|
|
179
179
|
throw new Error("No user in this update."); return this.api.call("getUserProfilePhotos", { user_id: userId, ...extra }); }
|
|
180
180
|
async getFile(fileId) { return this.api.methods.getFile({ file_id: fileId }); }
|
|
181
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
182
|
+
// Admin & moderation (full Telegraf-parity surface; chat defaults to ctx.chat)
|
|
183
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
184
|
+
requireChatId() { if (this.chat?.id === undefined)
|
|
185
|
+
throw new Error("This update has no chat to act on."); return this.chat.id; }
|
|
186
|
+
async banChatMember(userId, untilDate, extra = {}) {
|
|
187
|
+
return this.api.call("banChatMember", { chat_id: this.requireChatId(), user_id: userId, ...(untilDate !== undefined ? { until_date: untilDate } : {}), ...extra });
|
|
188
|
+
}
|
|
189
|
+
async unbanChatMember(userId, onlyIfBanned, extra = {}) {
|
|
190
|
+
return this.api.call("unbanChatMember", { chat_id: this.requireChatId(), user_id: userId, ...(onlyIfBanned !== undefined ? { only_if_banned: onlyIfBanned } : {}), ...extra });
|
|
191
|
+
}
|
|
192
|
+
async restrictChatMember(userId, permissions, untilDate, extra = {}) {
|
|
193
|
+
return this.api.call("restrictChatMember", { chat_id: this.requireChatId(), user_id: userId, permissions, ...(untilDate !== undefined ? { until_date: untilDate } : {}), ...extra });
|
|
194
|
+
}
|
|
195
|
+
async promoteChatMember(userId, extra = {}) {
|
|
196
|
+
return this.api.call("promoteChatMember", { chat_id: this.requireChatId(), user_id: userId, ...extra });
|
|
197
|
+
}
|
|
198
|
+
async banChatSenderChat(senderChatId, extra = {}) {
|
|
199
|
+
return this.api.call("banChatSenderChat", { chat_id: this.requireChatId(), sender_chat_id: senderChatId, ...extra });
|
|
200
|
+
}
|
|
201
|
+
async unbanChatSenderChat(senderChatId, extra = {}) {
|
|
202
|
+
return this.api.call("unbanChatSenderChat", { chat_id: this.requireChatId(), sender_chat_id: senderChatId, ...extra });
|
|
203
|
+
}
|
|
204
|
+
// ── Chat management ──
|
|
205
|
+
async setChatTitle(title) { return this.api.call("setChatTitle", { chat_id: this.requireChatId(), title }); }
|
|
206
|
+
async setChatDescription(description) { return this.api.call("setChatDescription", { chat_id: this.requireChatId(), description }); }
|
|
207
|
+
async setChatPhoto(photo) { return this.api.call("setChatPhoto", { chat_id: this.requireChatId(), photo }); }
|
|
208
|
+
async deleteChatPhoto() { return this.api.call("deleteChatPhoto", { chat_id: this.requireChatId() }); }
|
|
209
|
+
async setChatPermissions(permissions, extra = {}) {
|
|
210
|
+
return this.api.call("setChatPermissions", { chat_id: this.requireChatId(), permissions, ...extra });
|
|
211
|
+
}
|
|
212
|
+
async leaveChat() { return this.api.call("leaveChat", { chat_id: this.requireChatId() }); }
|
|
213
|
+
async unpinAllChatMessages(extra = {}) { return this.api.call("unpinAllChatMessages", { chat_id: this.requireChatId(), ...extra }); }
|
|
214
|
+
async setChatStickerSet(stickerSetName) { return this.api.call("setChatStickerSet", { chat_id: this.requireChatId(), sticker_set_name: stickerSetName }); }
|
|
215
|
+
async deleteChatStickerSet() { return this.api.call("deleteChatStickerSet", { chat_id: this.requireChatId() }); }
|
|
216
|
+
// ── Chat & member info ──
|
|
217
|
+
async getChatAdministrators() { return this.api.call("getChatAdministrators", { chat_id: this.requireChatId() }); }
|
|
218
|
+
async getChatMemberCount() { return this.api.call("getChatMemberCount", { chat_id: this.requireChatId() }); }
|
|
219
|
+
async getChatMember(userId) { return this.api.call("getChatMember", { chat_id: this.requireChatId(), user_id: userId }); }
|
|
220
|
+
// ── Invite links ──
|
|
221
|
+
async exportChatInviteLink() { return this.api.call("exportChatInviteLink", { chat_id: this.requireChatId() }); }
|
|
222
|
+
async createChatInviteLink(extra = {}) { return this.api.call("createChatInviteLink", { chat_id: this.requireChatId(), ...extra }); }
|
|
223
|
+
async editChatInviteLink(inviteLink, extra = {}) { return this.api.call("editChatInviteLink", { chat_id: this.requireChatId(), invite_link: inviteLink, ...extra }); }
|
|
224
|
+
async revokeChatInviteLink(inviteLink) { return this.api.call("revokeChatInviteLink", { chat_id: this.requireChatId(), invite_link: inviteLink }); }
|
|
225
|
+
// ── Join requests ──
|
|
226
|
+
async approveChatJoinRequest(userId) { return this.api.call("approveChatJoinRequest", { chat_id: this.requireChatId(), user_id: userId }); }
|
|
227
|
+
async declineChatJoinRequest(userId) { return this.api.call("declineChatJoinRequest", { chat_id: this.requireChatId(), user_id: userId }); }
|
|
228
|
+
// ── Polls, live location, games, invoices ──
|
|
229
|
+
async replyWithQuiz(question, options, extra = {}) {
|
|
230
|
+
return this.sendMethod("sendPoll", { question, options, type: "quiz" }, extra);
|
|
231
|
+
}
|
|
232
|
+
async stopPoll(messageId = this.message?.message_id, extra = {}) {
|
|
233
|
+
if (messageId === undefined)
|
|
234
|
+
throw new Error("Cannot stop a poll without a message id.");
|
|
235
|
+
return this.api.call("stopPoll", { chat_id: this.requireChatId(), message_id: messageId, ...extra });
|
|
236
|
+
}
|
|
237
|
+
async editMessageLiveLocation(latitude, longitude, extra = {}) {
|
|
238
|
+
return this.api.call("editMessageLiveLocation", { chat_id: this.chat?.id, message_id: this.message?.message_id, latitude, longitude, ...extra });
|
|
239
|
+
}
|
|
240
|
+
async stopMessageLiveLocation(extra = {}) {
|
|
241
|
+
return this.api.call("stopMessageLiveLocation", { chat_id: this.chat?.id, message_id: this.message?.message_id, ...extra });
|
|
242
|
+
}
|
|
243
|
+
async replyWithGame(gameShortName, extra = {}) {
|
|
244
|
+
return this.sendMethod("sendGame", { game_short_name: gameShortName }, extra);
|
|
245
|
+
}
|
|
246
|
+
async setGameScore(userId, score, extra = {}) {
|
|
247
|
+
return this.api.call("setGameScore", { chat_id: this.chat?.id, message_id: this.message?.message_id, user_id: userId, score, ...extra });
|
|
248
|
+
}
|
|
249
|
+
async getGameHighScores(userId = this.from?.id, extra = {}) {
|
|
250
|
+
if (userId === undefined)
|
|
251
|
+
throw new Error("No user in this update; pass a user_id explicitly.");
|
|
252
|
+
return this.api.call("getGameHighScores", { chat_id: this.chat?.id, message_id: this.message?.message_id, user_id: userId, ...extra });
|
|
253
|
+
}
|
|
254
|
+
async replyWithInvoice(title, description, payload, providerToken, currency, prices, extra = {}) {
|
|
255
|
+
return this.sendMethod("sendInvoice", { title, description, payload, provider_token: providerToken, currency, prices }, extra);
|
|
256
|
+
}
|
|
257
|
+
// ── Forum topics ──
|
|
258
|
+
async createForumTopic(name, extra = {}) { return this.api.call("createForumTopic", { chat_id: this.requireChatId(), name, ...extra }); }
|
|
259
|
+
async editForumTopic(extra = {}) {
|
|
260
|
+
return this.api.call("editForumTopic", { chat_id: this.requireChatId(), message_thread_id: this.message?.message_thread_id, ...extra });
|
|
261
|
+
}
|
|
262
|
+
async closeForumTopic(messageThreadId = this.message?.message_thread_id) {
|
|
263
|
+
if (messageThreadId === undefined)
|
|
264
|
+
throw new Error("Cannot act on a forum topic without a message_thread_id.");
|
|
265
|
+
return this.api.call("closeForumTopic", { chat_id: this.requireChatId(), message_thread_id: messageThreadId });
|
|
266
|
+
}
|
|
267
|
+
async reopenForumTopic(messageThreadId = this.message?.message_thread_id) {
|
|
268
|
+
if (messageThreadId === undefined)
|
|
269
|
+
throw new Error("Cannot act on a forum topic without a message_thread_id.");
|
|
270
|
+
return this.api.call("reopenForumTopic", { chat_id: this.requireChatId(), message_thread_id: messageThreadId });
|
|
271
|
+
}
|
|
272
|
+
async deleteForumTopic(messageThreadId = this.message?.message_thread_id) {
|
|
273
|
+
if (messageThreadId === undefined)
|
|
274
|
+
throw new Error("Cannot act on a forum topic without a message_thread_id.");
|
|
275
|
+
return this.api.call("deleteForumTopic", { chat_id: this.requireChatId(), message_thread_id: messageThreadId });
|
|
276
|
+
}
|
|
277
|
+
async unpinAllForumTopicMessages(messageThreadId = this.message?.message_thread_id) {
|
|
278
|
+
if (messageThreadId === undefined)
|
|
279
|
+
throw new Error("Cannot act on a forum topic without a message_thread_id.");
|
|
280
|
+
return this.api.call("unpinAllForumTopicMessages", { chat_id: this.requireChatId(), message_thread_id: messageThreadId });
|
|
281
|
+
}
|
|
282
|
+
async getForumTopicIconStickers() { return this.api.call("getForumTopicIconStickers", {}); }
|
|
283
|
+
async editGeneralForumTopic(name) { return this.api.call("editGeneralForumTopic", { chat_id: this.requireChatId(), name }); }
|
|
284
|
+
async closeGeneralForumTopic() { return this.api.call("closeGeneralForumTopic", { chat_id: this.requireChatId() }); }
|
|
285
|
+
async reopenGeneralForumTopic() { return this.api.call("reopenGeneralForumTopic", { chat_id: this.requireChatId() }); }
|
|
286
|
+
async hideGeneralForumTopic() { return this.api.call("hideGeneralForumTopic", { chat_id: this.requireChatId() }); }
|
|
287
|
+
async unhideGeneralForumTopic() { return this.api.call("unhideGeneralForumTopic", { chat_id: this.requireChatId() }); }
|
|
181
288
|
withReplyMarkup(markup) { this.state.reply_markup = markup; return this; }
|
|
182
289
|
}
|
|
183
290
|
exports.Context = Context;
|