@imessaging/telegram-mtproto 0.6.6 → 0.6.7
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/package.json
CHANGED
|
@@ -243,8 +243,13 @@ export class TelegramMtprotoTransport
|
|
|
243
243
|
* Повторы неизбежны и это нормально: потребитель обязан отсеивать по идентификатору сообщения,
|
|
244
244
|
* а не полагаться на то, что канал не повторится. Он и так повторяется в обычной жизни.
|
|
245
245
|
*/
|
|
246
|
-
async catchUp(options: { limit?: number; dialogs?: number } = {}): Promise<number> {
|
|
246
|
+
async catchUp(options: { limit?: number; dialogs?: number; sinceMs?: number } = {}): Promise<number> {
|
|
247
247
|
const limit = options.limit ?? 20;
|
|
248
|
+
// ГРАНИЦА ПО ВРЕМЕНИ ОБЯЗАТЕЛЬНА ПО СМЫСЛУ: без неё первый же опрос поднимает всю доступную
|
|
249
|
+
// историю каждого диалога и отдаёт её потребителю как новьё. Замер 07.09.2026 — сотни старых
|
|
250
|
+
// сообщений уехали продукту, который их давно разобрал. Догрузка чинит пропажу последних
|
|
251
|
+
// минут, а не восстанавливает архив.
|
|
252
|
+
const since = options.sinceMs ?? Date.now() - 6 * 60 * 60 * 1000;
|
|
248
253
|
const dialogs = await this.client.getDialogs({ limit: options.dialogs ?? 200 });
|
|
249
254
|
let dispatched = 0;
|
|
250
255
|
for (const dialog of dialogs) {
|
|
@@ -254,6 +259,8 @@ export class TelegramMtprotoTransport
|
|
|
254
259
|
const messages = await this.client.getMessages(entity, { limit }).catch(() => []);
|
|
255
260
|
// От старых к новым: порядок обработки должен совпадать с тем, в каком они пришли бы живьём.
|
|
256
261
|
for (const message of [...messages].reverse()) {
|
|
262
|
+
const at = (message as { date?: number }).date;
|
|
263
|
+
if (typeof at === "number" && at * 1000 < since) continue;
|
|
257
264
|
const delivered = await this.incoming.dispatch(
|
|
258
265
|
message as unknown as MtprotoMessageLike,
|
|
259
266
|
this.id,
|