@xbibzlibrary/telebibz 0.2.1 → 0.3.2
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 +15 -1
- package/README.id.md +19 -0
- package/README.md +20 -1
- package/README.zh-CN.md +19 -0
- package/dist/src/api/transport.d.ts +15 -0
- package/dist/src/api/transport.d.ts.map +1 -1
- package/dist/src/api/transport.js +23 -0
- package/dist/src/api/transport.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/core/bot.d.ts +43 -1
- package/dist/src/core/bot.d.ts.map +1 -1
- package/dist/src/core/bot.js +74 -8
- 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/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-cjs/src/api/transport.js +23 -0
- package/dist-cjs/src/broadcast/broadcast.js +58 -0
- package/dist-cjs/src/core/bot.js +74 -8
- package/dist-cjs/src/index.js +2 -0
- package/dist-cjs/src/utils/concurrency.js +57 -0
- package/docs/API.id.md +63 -1
- package/docs/API.md +63 -1
- package/docs/API.zh-CN.md +63 -1
- package/package.json +1 -1
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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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export * from "./queue/queue.js";
|
|
|
11
11
|
export * from "./plugins/plugin.js";
|
|
12
12
|
export * from "./webhook/handler.js";
|
|
13
13
|
export * from "./utils/text.js";
|
|
14
|
+
export * from "./utils/concurrency.js";
|
|
15
|
+
export * from "./broadcast/broadcast.js";
|
|
14
16
|
export * from "./state/conversation.js";
|
|
15
17
|
export * from "./state/forms.js";
|
|
16
18
|
export * from "./state/menu.js";
|
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,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,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
|
@@ -11,6 +11,8 @@ export * from "./queue/queue.js";
|
|
|
11
11
|
export * from "./plugins/plugin.js";
|
|
12
12
|
export * from "./webhook/handler.js";
|
|
13
13
|
export * from "./utils/text.js";
|
|
14
|
+
export * from "./utils/concurrency.js";
|
|
15
|
+
export * from "./broadcast/broadcast.js";
|
|
14
16
|
export * from "./state/conversation.js";
|
|
15
17
|
export * from "./state/forms.js";
|
|
16
18
|
export * from "./state/menu.js";
|
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,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,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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal concurrency primitives with zero dependencies.
|
|
3
|
+
*
|
|
4
|
+
* These helpers never add proactive delays: they only cap how many async tasks
|
|
5
|
+
* run at the same time. `Infinity` means fully parallel execution.
|
|
6
|
+
*/
|
|
7
|
+
export declare function validateConcurrency(value: number, label?: string): void;
|
|
8
|
+
/** Promise semaphore: runs tasks immediately while a slot is free, queues the rest in FIFO order. */
|
|
9
|
+
export declare class Limiter {
|
|
10
|
+
readonly limit: number;
|
|
11
|
+
private active;
|
|
12
|
+
private readonly waiters;
|
|
13
|
+
constructor(limit: number);
|
|
14
|
+
/** Number of tasks currently running. */
|
|
15
|
+
get activeCount(): number;
|
|
16
|
+
/** Number of tasks waiting for a free slot. */
|
|
17
|
+
get queuedCount(): number;
|
|
18
|
+
run<T>(task: () => Promise<T>): Promise<T>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Maps items through an async worker with a concurrency cap.
|
|
22
|
+
* Results keep the input order; `Infinity` runs everything in parallel.
|
|
23
|
+
*/
|
|
24
|
+
export declare function mapWithConcurrency<T, R>(items: readonly T[], limit: number, worker: (item: T, index: number) => Promise<R>): Promise<R[]>;
|
|
25
|
+
//# sourceMappingURL=concurrency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../../src/utils/concurrency.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAgB,GAAG,IAAI,CAG9E;AAED,qGAAqG;AACrG,qBAAa,OAAO;IAIN,QAAQ,CAAC,KAAK,EAAE,MAAM;IAHlC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAE5B,KAAK,EAAE,MAAM;IAIlC,yCAAyC;IACzC,IAAI,WAAW,IAAI,MAAM,CAAwB;IACjD,+CAA+C;IAC/C,IAAI,WAAW,IAAI,MAAM,CAAgC;IAEnD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAUjD;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAC3C,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAC7C,OAAO,CAAC,CAAC,EAAE,CAAC,CAQd"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal concurrency primitives with zero dependencies.
|
|
3
|
+
*
|
|
4
|
+
* These helpers never add proactive delays: they only cap how many async tasks
|
|
5
|
+
* run at the same time. `Infinity` means fully parallel execution.
|
|
6
|
+
*/
|
|
7
|
+
export function validateConcurrency(value, label = "concurrency") {
|
|
8
|
+
if (value === Infinity)
|
|
9
|
+
return;
|
|
10
|
+
if (!Number.isInteger(value) || value < 1)
|
|
11
|
+
throw new RangeError(`${label} must be a positive integer or Infinity`);
|
|
12
|
+
}
|
|
13
|
+
/** Promise semaphore: runs tasks immediately while a slot is free, queues the rest in FIFO order. */
|
|
14
|
+
export class Limiter {
|
|
15
|
+
limit;
|
|
16
|
+
active = 0;
|
|
17
|
+
waiters = [];
|
|
18
|
+
constructor(limit) {
|
|
19
|
+
this.limit = limit;
|
|
20
|
+
validateConcurrency(limit);
|
|
21
|
+
}
|
|
22
|
+
/** Number of tasks currently running. */
|
|
23
|
+
get activeCount() { return this.active; }
|
|
24
|
+
/** Number of tasks waiting for a free slot. */
|
|
25
|
+
get queuedCount() { return this.waiters.length; }
|
|
26
|
+
async run(task) {
|
|
27
|
+
if (this.active >= this.limit)
|
|
28
|
+
await new Promise((resolve) => { this.waiters.push(resolve); });
|
|
29
|
+
this.active += 1;
|
|
30
|
+
try {
|
|
31
|
+
return await task();
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
this.active -= 1;
|
|
35
|
+
this.waiters.shift()?.();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Maps items through an async worker with a concurrency cap.
|
|
41
|
+
* Results keep the input order; `Infinity` runs everything in parallel.
|
|
42
|
+
*/
|
|
43
|
+
export async function mapWithConcurrency(items, limit, worker) {
|
|
44
|
+
validateConcurrency(limit);
|
|
45
|
+
const results = new Array(items.length);
|
|
46
|
+
const limiter = new Limiter(limit);
|
|
47
|
+
await Promise.all(items.map((item, index) => limiter.run(async () => {
|
|
48
|
+
results[index] = await worker(item, index);
|
|
49
|
+
})));
|
|
50
|
+
return results;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=concurrency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concurrency.js","sourceRoot":"","sources":["../../../src/utils/concurrency.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,KAAK,GAAG,aAAa;IACtE,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO;IAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,yCAAyC,CAAC,CAAC;AACrH,CAAC;AAED,qGAAqG;AACrG,MAAM,OAAO,OAAO;IAIG;IAHb,MAAM,GAAG,CAAC,CAAC;IACF,OAAO,GAAsB,EAAE,CAAC;IAEjD,YAAqB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QAChC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,yCAAyC;IACzC,IAAI,WAAW,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,+CAA+C;IAC/C,IAAI,WAAW,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzD,KAAK,CAAC,GAAG,CAAI,IAAsB;QACjC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,EAAE,CAAC;QACtB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAmB,EACnB,KAAa,EACb,MAA8C;IAE9C,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,KAAK,CAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;QAClE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC,CAAC,CAAC;IACL,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -13,6 +13,9 @@ class FetchTransport {
|
|
|
13
13
|
maxBackoffMs;
|
|
14
14
|
jitter;
|
|
15
15
|
headers;
|
|
16
|
+
floodGate;
|
|
17
|
+
/** Timestamp (ms) until which Telegram asked us to stop sending. */
|
|
18
|
+
floodUntil = 0;
|
|
16
19
|
constructor(options = {}) {
|
|
17
20
|
this.baseUrl = (options.baseUrl ?? "https://api.telegram.org").replace(/\/$/, "");
|
|
18
21
|
this.fetchImpl = options.fetch ?? globalThis.fetch;
|
|
@@ -24,6 +27,24 @@ class FetchTransport {
|
|
|
24
27
|
this.maxBackoffMs = options.maxBackoffMs ?? 8_000;
|
|
25
28
|
this.jitter = options.jitter ?? 0.2;
|
|
26
29
|
this.headers = options.headers ?? {};
|
|
30
|
+
this.floodGate = options.floodGate ?? true;
|
|
31
|
+
}
|
|
32
|
+
/** Waits out the remainder of a Telegram-ordered flood window, if any. */
|
|
33
|
+
async waitForFloodWindow() {
|
|
34
|
+
if (!this.floodGate)
|
|
35
|
+
return;
|
|
36
|
+
const waitMs = this.floodUntil - Date.now();
|
|
37
|
+
if (waitMs > 0)
|
|
38
|
+
await new Promise((resolve) => setTimeout(resolve, waitMs));
|
|
39
|
+
}
|
|
40
|
+
/** Extends the flood window when Telegram answers 429 or sends retry_after. */
|
|
41
|
+
recordFloodWindow(data) {
|
|
42
|
+
if (!this.floodGate)
|
|
43
|
+
return;
|
|
44
|
+
if (data.ok || (data.error_code !== 429 && data.parameters?.retry_after === undefined))
|
|
45
|
+
return;
|
|
46
|
+
const retryAfterMs = Math.max(0, (data.parameters?.retry_after ?? 0) * 1000);
|
|
47
|
+
this.floodUntil = Math.max(this.floodUntil, Date.now() + retryAfterMs);
|
|
27
48
|
}
|
|
28
49
|
async request({ method, payload = {}, signal, timeoutMs }) {
|
|
29
50
|
const effectiveTimeoutMs = timeoutMs ?? this.timeoutMs;
|
|
@@ -42,6 +63,7 @@ class FetchTransport {
|
|
|
42
63
|
}
|
|
43
64
|
let attempt = 0;
|
|
44
65
|
while (true) {
|
|
66
|
+
await this.waitForFloodWindow();
|
|
45
67
|
let responseStatus;
|
|
46
68
|
const controller = new AbortController();
|
|
47
69
|
const timeout = setTimeout(() => controller.abort(new Error(`Request timed out after ${effectiveTimeoutMs}ms`)), effectiveTimeoutMs);
|
|
@@ -68,6 +90,7 @@ class FetchTransport {
|
|
|
68
90
|
throw error;
|
|
69
91
|
}
|
|
70
92
|
const data = await response.json();
|
|
93
|
+
this.recordFloodWindow(data);
|
|
71
94
|
if (!data.ok && isRetryableResponse(response.status, data) && attempt < this.retries) {
|
|
72
95
|
const retryAfterMs = data.parameters?.retry_after === undefined ? undefined : Math.max(0, data.parameters.retry_after * 1000);
|
|
73
96
|
await waitBeforeRetry(attempt, this.backoffMs, this.maxBackoffMs, this.jitter, retryAfterMs);
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runBroadcast = runBroadcast;
|
|
4
|
+
const errors_js_1 = require("../api/errors.js");
|
|
5
|
+
const concurrency_js_1 = require("../utils/concurrency.js");
|
|
6
|
+
function sleep(delayMs) { return new Promise((resolve) => setTimeout(resolve, delayMs)); }
|
|
7
|
+
function describeError(error) {
|
|
8
|
+
if (error instanceof errors_js_1.TelegramError)
|
|
9
|
+
return { message: error.message, kind: error.kind };
|
|
10
|
+
return { message: error instanceof Error ? error.message : String(error), kind: undefined };
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Sends to many chats in parallel with automatic 429 retry.
|
|
14
|
+
*
|
|
15
|
+
* There is no proactive cooldown: all chats (up to `concurrency`) are attempted
|
|
16
|
+
* at once. The only waiting ever done is the `retry_after` delay Telegram itself
|
|
17
|
+
* returns with a 429 answer, so bursts of 1000+ chats still deliver completely
|
|
18
|
+
* instead of failing.
|
|
19
|
+
*/
|
|
20
|
+
async function runBroadcast(chatIds, send, options = {}) {
|
|
21
|
+
const startedAt = Date.now();
|
|
22
|
+
const maxAttempts = options.maxAttempts ?? 10;
|
|
23
|
+
const failures = [];
|
|
24
|
+
let delivered = 0;
|
|
25
|
+
let processed = 0;
|
|
26
|
+
const total = chatIds.length;
|
|
27
|
+
await (0, concurrency_js_1.mapWithConcurrency)(chatIds, options.concurrency ?? Infinity, async (chatId) => {
|
|
28
|
+
let attempts = 0;
|
|
29
|
+
while (true) {
|
|
30
|
+
if (options.signal?.aborted) {
|
|
31
|
+
failures.push({ chatId, attempts, error: "aborted", errorKind: "aborted" });
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
attempts += 1;
|
|
35
|
+
try {
|
|
36
|
+
await send(chatId);
|
|
37
|
+
delivered += 1;
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
const telegram = error instanceof errors_js_1.TelegramError ? error : undefined;
|
|
42
|
+
if (telegram?.kind === "rate-limit" && attempts < maxAttempts) {
|
|
43
|
+
// Telegram told us exactly how long to wait; honor it (plus a small
|
|
44
|
+
// jitter so retried chats do not fire as one synchronized wave).
|
|
45
|
+
const retryAfterMs = Math.max(0, (telegram.retryAfter ?? 1) * 1000);
|
|
46
|
+
await sleep(retryAfterMs + Math.random() * 250);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const { message, kind } = describeError(error);
|
|
50
|
+
failures.push({ chatId, attempts, error: message, errorKind: kind });
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
processed += 1;
|
|
55
|
+
options.onProgress?.({ total, processed, delivered, failed: failures.length });
|
|
56
|
+
});
|
|
57
|
+
return { total, delivered, failed: failures.length, durationMs: Date.now() - startedAt, failures };
|
|
58
|
+
}
|
package/dist-cjs/src/core/bot.js
CHANGED
|
@@ -12,6 +12,8 @@ const plugin_js_1 = require("../plugins/plugin.js");
|
|
|
12
12
|
const logger_js_1 = require("../observability/logger.js");
|
|
13
13
|
const terminal_js_1 = require("../branding/terminal.js");
|
|
14
14
|
const conversation_js_1 = require("../state/conversation.js");
|
|
15
|
+
const broadcast_js_1 = require("../broadcast/broadcast.js");
|
|
16
|
+
const concurrency_js_1 = require("../utils/concurrency.js");
|
|
15
17
|
class Bot {
|
|
16
18
|
api;
|
|
17
19
|
router;
|
|
@@ -27,6 +29,12 @@ class Bot {
|
|
|
27
29
|
pollingAbort;
|
|
28
30
|
offset = 0;
|
|
29
31
|
me;
|
|
32
|
+
/** Caps how many updates run at once (default: unlimited). */
|
|
33
|
+
updateLimiter;
|
|
34
|
+
/** Per-chat processing chains: parallel across chats, ordered within a chat. */
|
|
35
|
+
chatChains = new Map();
|
|
36
|
+
/** Memoized init so a burst of updates triggers exactly one getMe call. */
|
|
37
|
+
initOnce;
|
|
30
38
|
brandingEnabled;
|
|
31
39
|
/** Branding effects run only on an interactive TTY; structured logs stay untouched otherwise. */
|
|
32
40
|
brandingActive;
|
|
@@ -53,6 +61,7 @@ class Bot {
|
|
|
53
61
|
transport,
|
|
54
62
|
});
|
|
55
63
|
this.plugins = new plugin_js_1.PluginManager(this);
|
|
64
|
+
this.updateLimiter = new concurrency_js_1.Limiter(config.updates?.concurrency ?? Infinity);
|
|
56
65
|
this.pollingOptions = {
|
|
57
66
|
allowedUpdates: config.polling?.allowedUpdates ?? [],
|
|
58
67
|
limit: config.polling?.limit ?? 100,
|
|
@@ -210,7 +219,68 @@ class Bot {
|
|
|
210
219
|
async getMe() { const me = await this.api.methods.getMe(); this.me = me; return me; }
|
|
211
220
|
async setCommands(commands, scope, languageCode) { return this.api.call("setMyCommands", { commands, scope, language_code: languageCode }); }
|
|
212
221
|
async deleteCommands(scope, languageCode) { return this.api.call("deleteMyCommands", { scope, language_code: languageCode }); }
|
|
222
|
+
/**
|
|
223
|
+
* Handles a single update. Updates for different chats run in parallel;
|
|
224
|
+
* updates for the same chat are processed strictly in arrival order so
|
|
225
|
+
* sessions, wizards, and conversations never interleave. Rejects for this
|
|
226
|
+
* update's failure (as before) without affecting other updates.
|
|
227
|
+
*/
|
|
213
228
|
async handleUpdate(update) {
|
|
229
|
+
const key = this.conversationKey(update);
|
|
230
|
+
const previous = this.chatChains.get(key);
|
|
231
|
+
const run = (previous ?? Promise.resolve()).catch(() => undefined).then(() => this.processUpdate(update));
|
|
232
|
+
const tail = run.then(() => undefined, () => undefined);
|
|
233
|
+
this.chatChains.set(key, tail);
|
|
234
|
+
void tail.then(() => {
|
|
235
|
+
if (this.chatChains.get(key) === tail)
|
|
236
|
+
this.chatChains.delete(key);
|
|
237
|
+
});
|
|
238
|
+
await run;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Handles a whole batch of updates at once: every chat in the batch is
|
|
242
|
+
* processed immediately (parallel across chats, ordered per chat), so a
|
|
243
|
+
* burst of 1000 messages is not stuck behind one slow handler. Individual
|
|
244
|
+
* handler failures are logged, emitted as `update:error`, and passed to the
|
|
245
|
+
* `catch()` error boundary; they never reject this promise.
|
|
246
|
+
*/
|
|
247
|
+
async handleUpdates(updates) {
|
|
248
|
+
await Promise.all(updates.map(async (update) => {
|
|
249
|
+
try {
|
|
250
|
+
await this.handleUpdate(update);
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
// Already logged and emitted by processUpdate; the polling loop must
|
|
254
|
+
// keep flowing no matter how many handlers failed.
|
|
255
|
+
}
|
|
256
|
+
}));
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Sends to many chats in parallel — built for broadcasts to 1000+ users.
|
|
260
|
+
* There is no proactive cooldown: every chat is attempted at once (up to
|
|
261
|
+
* `concurrency`). When Telegram answers 429, the send is retried
|
|
262
|
+
* automatically after exactly the `retry_after` delay Telegram ordered, so
|
|
263
|
+
* bursts deliver completely instead of failing.
|
|
264
|
+
*/
|
|
265
|
+
async broadcast(chatIds, send, options) {
|
|
266
|
+
return (0, broadcast_js_1.runBroadcast)(chatIds, send, options);
|
|
267
|
+
}
|
|
268
|
+
/** Runs init() once even when many updates arrive concurrently. */
|
|
269
|
+
ensureInitialized() {
|
|
270
|
+
if (this.me)
|
|
271
|
+
return Promise.resolve();
|
|
272
|
+
if (!this.initOnce) {
|
|
273
|
+
this.initOnce = this.init().then(() => { this.initOnce = undefined; }, (error) => {
|
|
274
|
+
this.initOnce = undefined;
|
|
275
|
+
throw error;
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
return this.initOnce;
|
|
279
|
+
}
|
|
280
|
+
async processUpdate(update) {
|
|
281
|
+
await this.updateLimiter.run(() => this.runUpdate(update));
|
|
282
|
+
}
|
|
283
|
+
async runUpdate(update) {
|
|
214
284
|
this.logger.incoming((0, logger_js_1.describeIncomingUpdate)(update));
|
|
215
285
|
const message = update.message
|
|
216
286
|
?? update.edited_message
|
|
@@ -223,7 +293,7 @@ class Bot {
|
|
|
223
293
|
const key = this.conversationKey(update);
|
|
224
294
|
const session = await this.session.get(key) ?? {};
|
|
225
295
|
if (!this.me)
|
|
226
|
-
await this.
|
|
296
|
+
await this.ensureInitialized();
|
|
227
297
|
if (!this.me)
|
|
228
298
|
return;
|
|
229
299
|
const ctx = new context_js_1.Context({ update, api: this.api, session, services: this.services, me: this.me });
|
|
@@ -312,16 +382,12 @@ class Bot {
|
|
|
312
382
|
try {
|
|
313
383
|
const updates = await this.api.request("getUpdates", { offset: this.offset, limit: this.pollingOptions.limit, timeout, allowed_updates: allowedUpdates }, signal, { timeoutMs: requestTimeoutMs });
|
|
314
384
|
delay = this.pollingOptions.retryDelayMs;
|
|
385
|
+
// Confirm the whole batch first, then process it: updates run in
|
|
386
|
+
// parallel across chats (ordered per chat) instead of one by one.
|
|
315
387
|
for (const update of updates) {
|
|
316
388
|
this.offset = Math.max(this.offset, update.update_id + 1);
|
|
317
|
-
try {
|
|
318
|
-
await this.handleUpdate(update);
|
|
319
|
-
}
|
|
320
|
-
catch {
|
|
321
|
-
// The update has already advanced the offset. Continue with the rest of
|
|
322
|
-
// the batch instead of reconnecting or replaying a failed handler.
|
|
323
|
-
}
|
|
324
389
|
}
|
|
390
|
+
await this.handleUpdates(updates);
|
|
325
391
|
}
|
|
326
392
|
catch (error) {
|
|
327
393
|
if (signal.aborted)
|
package/dist-cjs/src/index.js
CHANGED
|
@@ -28,6 +28,8 @@ __exportStar(require("./queue/queue.js"), exports);
|
|
|
28
28
|
__exportStar(require("./plugins/plugin.js"), exports);
|
|
29
29
|
__exportStar(require("./webhook/handler.js"), exports);
|
|
30
30
|
__exportStar(require("./utils/text.js"), exports);
|
|
31
|
+
__exportStar(require("./utils/concurrency.js"), exports);
|
|
32
|
+
__exportStar(require("./broadcast/broadcast.js"), exports);
|
|
31
33
|
__exportStar(require("./state/conversation.js"), exports);
|
|
32
34
|
__exportStar(require("./state/forms.js"), exports);
|
|
33
35
|
__exportStar(require("./state/menu.js"), exports);
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal concurrency primitives with zero dependencies.
|
|
4
|
+
*
|
|
5
|
+
* These helpers never add proactive delays: they only cap how many async tasks
|
|
6
|
+
* run at the same time. `Infinity` means fully parallel execution.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.Limiter = void 0;
|
|
10
|
+
exports.validateConcurrency = validateConcurrency;
|
|
11
|
+
exports.mapWithConcurrency = mapWithConcurrency;
|
|
12
|
+
function validateConcurrency(value, label = "concurrency") {
|
|
13
|
+
if (value === Infinity)
|
|
14
|
+
return;
|
|
15
|
+
if (!Number.isInteger(value) || value < 1)
|
|
16
|
+
throw new RangeError(`${label} must be a positive integer or Infinity`);
|
|
17
|
+
}
|
|
18
|
+
/** Promise semaphore: runs tasks immediately while a slot is free, queues the rest in FIFO order. */
|
|
19
|
+
class Limiter {
|
|
20
|
+
limit;
|
|
21
|
+
active = 0;
|
|
22
|
+
waiters = [];
|
|
23
|
+
constructor(limit) {
|
|
24
|
+
this.limit = limit;
|
|
25
|
+
validateConcurrency(limit);
|
|
26
|
+
}
|
|
27
|
+
/** Number of tasks currently running. */
|
|
28
|
+
get activeCount() { return this.active; }
|
|
29
|
+
/** Number of tasks waiting for a free slot. */
|
|
30
|
+
get queuedCount() { return this.waiters.length; }
|
|
31
|
+
async run(task) {
|
|
32
|
+
if (this.active >= this.limit)
|
|
33
|
+
await new Promise((resolve) => { this.waiters.push(resolve); });
|
|
34
|
+
this.active += 1;
|
|
35
|
+
try {
|
|
36
|
+
return await task();
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
this.active -= 1;
|
|
40
|
+
this.waiters.shift()?.();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.Limiter = Limiter;
|
|
45
|
+
/**
|
|
46
|
+
* Maps items through an async worker with a concurrency cap.
|
|
47
|
+
* Results keep the input order; `Infinity` runs everything in parallel.
|
|
48
|
+
*/
|
|
49
|
+
async function mapWithConcurrency(items, limit, worker) {
|
|
50
|
+
validateConcurrency(limit);
|
|
51
|
+
const results = new Array(items.length);
|
|
52
|
+
const limiter = new Limiter(limit);
|
|
53
|
+
await Promise.all(items.map((item, index) => limiter.run(async () => {
|
|
54
|
+
results[index] = await worker(item, index);
|
|
55
|
+
})));
|
|
56
|
+
return results;
|
|
57
|
+
}
|
package/docs/API.id.md
CHANGED
|
@@ -74,6 +74,7 @@ type BotStatus =
|
|
|
74
74
|
| `polling.allowedUpdates` | `string[]` | `[]` | Filter update Telegram. |
|
|
75
75
|
| `polling.retryDelayMs` | `number` | `500` | Delay awal ketika polling gagal. |
|
|
76
76
|
| `polling.maxRetryDelayMs` | `number` | `30000` | Batas maksimum delay reconnect. |
|
|
77
|
+
| `updates.concurrency` | `number` | `Infinity` | Batas jumlah update yang diproses bersamaan. Update selalu berjalan paralel antar chat dan tetap berurutan di dalam satu chat, sehingga burst 1000+ pesan tertangani sekaligus. |
|
|
77
78
|
|
|
78
79
|
### Konstruktor `Bot`
|
|
79
80
|
|
|
@@ -201,7 +202,7 @@ launch(options?: {
|
|
|
201
202
|
}): Promise<void>
|
|
202
203
|
```
|
|
203
204
|
|
|
204
|
-
Menjalankan bot dalam mode polling. Saat mulai, lifecycle berpindah melalui `starting` lalu `running`, kemudian loop `getUpdates()` memproses setiap update secara
|
|
205
|
+
Menjalankan bot dalam mode polling. Saat mulai, lifecycle berpindah melalui `starting` lalu `running`, kemudian loop `getUpdates()` memproses setiap batch update secara konkuren: update dari chat berbeda berjalan paralel, sedangkan update dari chat yang sama menjaga urutan kedatangannya. Kegagalan polling memancarkan `polling:reconnect` dan menggunakan backoff eksponensial.
|
|
205
206
|
|
|
206
207
|
Mode selain `"polling"` melempar error dan menyarankan penggunaan `createWebhookHandler()` untuk webhook.
|
|
207
208
|
|
|
@@ -278,8 +279,54 @@ handleUpdate(update: Update): Promise<void>
|
|
|
278
279
|
|
|
279
280
|
Memproses satu update secara manual. Method menentukan kunci session dari `chat.id` dan `from.id`, membuat `Context`, memancarkan event `update` dan `message`, menjalankan middleware lalu router, dan menyimpan session setelah pipeline selesai.
|
|
280
281
|
|
|
282
|
+
Update dari chat berbeda diproses paralel; update dari chat yang sama diserialisasi sesuai urutan kedatangan, sehingga session, wizard, dan conversation tidak pernah saling tumpang tindih dan penulisan session tidak pernah hilang. Burst update konkuren hanya memicu satu inisialisasi `getMe`.
|
|
283
|
+
|
|
281
284
|
Error pipeline mengubah status bot menjadi `error`, memancarkan `bot:error`, lalu dilempar kembali.
|
|
282
285
|
|
|
286
|
+
### `bot.handleUpdates(updates)`
|
|
287
|
+
|
|
288
|
+
```ts
|
|
289
|
+
handleUpdates(updates: readonly Update[]): Promise<void>
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Menangani satu batch update sekaligus: setiap chat dalam batch langsung diproses — paralel antar chat, berurutan per chat — sehingga burst 1000 pesan tidak pernah terhambat oleh satu handler yang lambat. Kegagalan handler individual dicatat ke log, dipancarkan sebagai `update:error`, dan diteruskan ke error boundary `catch()`; kegagalan tersebut tidak pernah menolak promise ini. Loop polling memakai method ini untuk setiap batch `getUpdates`.
|
|
293
|
+
|
|
294
|
+
### `bot.broadcast(chatIds, send, options?)`
|
|
295
|
+
|
|
296
|
+
```ts
|
|
297
|
+
broadcast(
|
|
298
|
+
chatIds: readonly ChatId[],
|
|
299
|
+
send: (chatId: ChatId) => Promise<unknown>,
|
|
300
|
+
options?: BroadcastOptions,
|
|
301
|
+
): Promise<BroadcastReport>
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
Mengirim ke banyak chat secara paralel — dibuat untuk broadcast ke 1000+ user. Tidak ada cooldown proaktif: semua chat langsung dicoba sekaligus (sampai `options.concurrency`, default `Infinity`). Ketika Telegram menjawab 429, pengiriman otomatis diulang setelah tepat delay `retry_after` yang diperintahkan Telegram (maksimal `options.maxAttempts`, default `10`), sehingga burst tetap terkirim lengkap, bukan gagal. Error yang tidak bisa di-retry (misalnya chat yang tidak bisa dihubungi bot) dicatat per chat pada laporan yang dikembalikan.
|
|
305
|
+
|
|
306
|
+
```ts
|
|
307
|
+
const report = await bot.broadcast(
|
|
308
|
+
subscriberIds,
|
|
309
|
+
(chatId) => bot.api.methods.sendMessage({ chat_id: chatId, text: "Newsletter #42" }),
|
|
310
|
+
{ onProgress: (progress) => console.log(`${progress.delivered}/${progress.total} terkirim`) },
|
|
311
|
+
);
|
|
312
|
+
console.log(`Terkirim ${report.delivered} dari ${report.total} dalam ${report.durationMs}ms`);
|
|
313
|
+
for (const failure of report.failures) console.warn(`Gagal: ${failure.chatId} — ${failure.error}`);
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
#### `BroadcastOptions` dan `BroadcastReport`
|
|
317
|
+
|
|
318
|
+
| Properti | Tipe | Default | Deskripsi |
|
|
319
|
+
|---|---|---:|---|
|
|
320
|
+
| `BroadcastOptions.concurrency` | `number` | `Infinity` | Berapa chat dikirimi pesan secara bersamaan. |
|
|
321
|
+
| `BroadcastOptions.maxAttempts` | `number` | `10` | Percobaan per chat ketika Telegram menjawab 429. |
|
|
322
|
+
| `BroadcastOptions.onProgress` | `(progress: BroadcastProgress) => void` | — | Dipanggil setelah setiap chat selesai. |
|
|
323
|
+
| `BroadcastOptions.signal` | `AbortSignal` | — | Membatalkan pengiriman tertunda; pesan yang sudah terkirim tetap terkirim. |
|
|
324
|
+
| `BroadcastReport.total` | `number` | — | Jumlah chat dalam sesi broadcast. |
|
|
325
|
+
| `BroadcastReport.delivered` | `number` | — | Chat yang menerima pesan. |
|
|
326
|
+
| `BroadcastReport.failed` | `number` | — | Chat yang tidak menerima. |
|
|
327
|
+
| `BroadcastReport.durationMs` | `number` | — | Durasi total sesi broadcast. |
|
|
328
|
+
| `BroadcastReport.failures` | `BroadcastFailure[]` | — | Catatan per chat `{ chatId, attempts, error, errorKind }`. |
|
|
329
|
+
|
|
283
330
|
### Contoh bot minimal
|
|
284
331
|
|
|
285
332
|
```ts
|
|
@@ -416,6 +463,7 @@ interface Transport {
|
|
|
416
463
|
| `backoffMs` | `250` | Delay exponential awal. |
|
|
417
464
|
| `maxBackoffMs` | `8000` | Batas delay transport. |
|
|
418
465
|
| `jitter` | `0.2` | Variasi acak ±20% dari exponential delay. |
|
|
466
|
+
| `floodGate` | `true` | Ketika Telegram menjawab 429, permintaan BARU ditunda sampai jendela `retry_after` yang diperintahkan Telegram berlalu. Bukan cooldown proaktif — penundaan satu-satunya hanyalah yang diminta Telegram sendiri. |
|
|
419
467
|
| `headers` | `{}` | Header tambahan. |
|
|
420
468
|
|
|
421
469
|
### `new FetchTransport(options?)`
|
|
@@ -997,6 +1045,20 @@ new Scheduler(): Scheduler
|
|
|
997
1045
|
|
|
998
1046
|
Format cron penuh tidak didukung oleh built-in scheduler. Ekspresi selain `*/N` melempar `Error`.
|
|
999
1047
|
|
|
1048
|
+
### `Limiter` dan `mapWithConcurrency`
|
|
1049
|
+
|
|
1050
|
+
```ts
|
|
1051
|
+
new Limiter(limit: number): Limiter
|
|
1052
|
+
|
|
1053
|
+
mapWithConcurrency<T, R>(
|
|
1054
|
+
items: readonly T[],
|
|
1055
|
+
limit: number,
|
|
1056
|
+
worker: (item: T, index: number) => Promise<R>,
|
|
1057
|
+
): Promise<R[]>
|
|
1058
|
+
```
|
|
1059
|
+
|
|
1060
|
+
`Limiter` adalah semaphore berbasis promise: task langsung berjalan selama ada slot kosong dan mengantre FIFO setelahnya. `limit` menerima bilangan bulat positif atau `Infinity` (sepenuhnya paralel — default library). `mapWithConcurrency` memetakan item melalui async worker dengan batas yang sama sambil menjaga urutan hasil. Primitif ini tidak menambahkan delay apa pun — hanya membatasi jumlah task yang berjalan bersamaan. `Limiter` mengekspos `activeCount` dan `queuedCount` untuk observability.
|
|
1061
|
+
|
|
1000
1062
|
## 9. Plugin dan services
|
|
1001
1063
|
|
|
1002
1064
|
### `Plugin<Context>`
|