From 6a2cc9f76ba18323c2bc16923a80d534dd872cbd Mon Sep 17 00:00:00 2001 From: Folist Date: Tue, 13 Oct 2026 19:19:09 +0300 Subject: [PATCH] =?UTF-8?q?1.3.8-beta.5:=20=D1=82=D0=B5=D0=BC=D0=B0=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=BD=D0=B0=D0=BB=D0=B0=20=D1=81=20=D0=BD=D1=83?= =?UTF-8?q?=D0=BB=D1=8F=20=E2=80=94=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=D0=B4?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=2010=20=D0=BF=D0=BE=D1=81=D1=82=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=2050=20(=D1=80=D0=B5?= =?UTF-8?q?=D1=88=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- src/bridge/sync.ts | 8 ++++---- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 86be7c2..e565e54 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Команда `/panel` (и закреплённое в теме группы сообщение) открывает пульт с кнопками — меню прямо в Telegram-группе: -- **👤 Найти контакт** — поиск MAX-контакта по номеру, нику или MAX ID; из карточки результата «Начать чат» в один тап создаёт диалог и его тему, а «➕ В контакты MAX» сохраняет человека в контакты вашего MAX (их видно и в приложении на телефоне). Или просто поделитесь в общей теме группы контактом из Telegram — бот найдёт его в MAX по номеру, а в контакты MAX сохранит под тем же именем, что у вас в Telegram (читать вашу книгу контактов Telegram бот не может: Bot API такого доступа не даёт). Человека, который закрыл поиск по номеру в настройках приватности MAX, не найти никак — попросите его написать вам первым, и чат сам появится темой. Каналы MAX находятся по нику или названию: в карточке канала — «📢 Подписаться», и канал появляется темой с последними 50 постами (писать в чужой канал нельзя). Вставьте ссылку-приглашение `max.ru/join/…` — вступите в группу или канал прямо из пульта. +- **👤 Найти контакт** — поиск MAX-контакта по номеру, нику или MAX ID; из карточки результата «Начать чат» в один тап создаёт диалог и его тему, а «➕ В контакты MAX» сохраняет человека в контакты вашего MAX (их видно и в приложении на телефоне). Или просто поделитесь в общей теме группы контактом из Telegram — бот найдёт его в MAX по номеру, а в контакты MAX сохранит под тем же именем, что у вас в Telegram (читать вашу книгу контактов Telegram бот не может: Bot API такого доступа не даёт). Человека, который закрыл поиск по номеру в настройках приватности MAX, не найти никак — попросите его написать вам первым, и чат сам появится темой. Каналы MAX находятся по нику или названию: в карточке канала — «📢 Подписаться», и канал появляется темой с последними 10 постами (писать в чужой канал нельзя). Вставьте ссылку-приглашение `max.ru/join/…` — вступите в группу или канал прямо из пульта. - **🚫 Управление чатами** — заглушить (бан) или вернуть чат. - **🔐 Вход в MAX** — кнопка ведёт в личку бота, где проходит авторизация (номер + SMS-код, при 2FA — пароль). - **⚙️ Система** — «📊 Статус» (версия, аптайм, состояние MAX и Telegram, последние сообщения, диск/RAM/нагрузка, доступность обновления), пауза MAX на время (10 мин / 1 час / 1 сутки / до перезапуска моста), обновление, пересинхронизация, список команд и «🔁 Перезапустить мост» — без пересборки и без SSH, за 10–20 секунд. diff --git a/package-lock.json b/package-lock.json index 4380e6b..f0069f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "telemax", - "version": "1.3.8-beta.4", + "version": "1.3.8-beta.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "telemax", - "version": "1.3.8-beta.4", + "version": "1.3.8-beta.5", "license": "AGPL-3.0-only", "dependencies": { "dotenv": "^17.2.3", diff --git a/package.json b/package.json index 052e508..e65b8e8 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "telemax", "private": true, "license": "AGPL-3.0-only", - "version": "1.3.8-beta.4", + "version": "1.3.8-beta.5", "type": "module", "scripts": { "dev": "tsx watch src/server/app.ts", diff --git a/src/bridge/sync.ts b/src/bridge/sync.ts index 8d19c87..9372671 100644 --- a/src/bridge/sync.ts +++ b/src/bridge/sync.ts @@ -851,7 +851,7 @@ export function channelCardText(title: string, channel?: { subscribers?: number; } /** A channel's topic filled from scratch gets this many of its newest posts at most (HISTORY_LIMIT may say fewer). */ -export const CHANNEL_HISTORY_LIMIT = 50; +export const CHANNEL_HISTORY_LIMIT = 10; /** The first line of a topic HISTORY_LIMIT (or the channel cap) cut short: «последние 300 сообщений» (agreed with the number). */ export function historyLimitNotice(limit: number, channel = false): string { @@ -3066,9 +3066,9 @@ export function wireBridge({ if (ensured.created) await sendAutoInfoCard(chat.id, undefined, topicId).catch((err) => logger.error('Failed to send the card of a joined chat', err)); }); if (topicId == null) return { ok: false, error: 'тема не открылась — она появится с первым новым сообщением', topicName: name }; - // The recent posts follow in the chat's queue, NOT awaited: 50 of them take ~2.5 minutes at - // Telegram's pace, and awaiting them held the button press (and with it the bot) past - // telegraf's 90 s limit while the user saw nothing (live 2026-10-13). + // The recent posts follow in the chat's queue, NOT awaited: they go at Telegram's ~20 a minute, + // and awaiting 50 of them held the button press (and with it the bot) past telegraf's 90 s + // limit while the user saw nothing (live 2026-10-13). void chatSync .runInChat(chat.id, async () => { await chatSync.ensureCaughtUp(chat.id);