Перевести проект на Telegram Business (без хранения сессии)

Смена архитектуры с MTProto-юзербота (GramJS + строка сессии) на
официальное бизнес-подключение Telegram (Bot API). Проект больше НЕ
хранит сессию — работает только через бота с включённым Business Mode,
подключённого в Настройках → Telegram для бизнеса → Чат-боты. Это
соответствует ToS.

Изменения:
- удалено: scripts/login.js, src/userbot/client.js, модуль onetime
- src/userbot/ → src/business/: events.js подписывает business_message /
  edited / deleted / connection и нормализует сообщение; context.js даёт
  ctx.api = bot.api
- core/media.js: скачивание через getFile + fetch вместо GramJS
- core/db.js: составной ключ PRIMARY KEY (chat_id, msg_id) — в Bot API
  message_id уникален только внутри чата
- bot/panel.js: барьер владельца пропускает бизнес-апдейты (у них ctx.from
  это собеседник); убран UI одноразовых
- index.js: сборка только на grammY, явный allowed_updates с бизнес-типами
- config.js: убраны API_ID/API_HASH/SESSION, проверки на старте почищены
- package.json: убраны зависимости telegram и input, скрипт login
- README и .env.example переписаны под бизнес-подключение

Границы: onetime невозможен через Business API (сервер отбрасывает
self-destruct до доставки боту), медиа >~20 МБ не выгружаются (лимит
getFile), перехват — только личные 1-на-1 чаты.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-09 21:00:22 +03:00
parent 0d1af5b50c
commit 8bd13b4dd5
18 changed files with 265 additions and 1174 deletions
+5 -9
View File
@@ -1,12 +1,8 @@
# === MTProto (юзербот) ===
# Получить на https://my.telegram.org → API development tools
API_ID=
API_HASH=
# Строка сессии. Сгенерировать: npm run login — и вставить сюда.
SESSION=
# === Компаньон-бот (единственный интерфейс) ===
# Токен от @BotFather
# === Бот (единственный интерфейс + приёмник бизнес-апдейтов) ===
# Токен от @BotFather. Обязательно включите боту режим бизнеса:
# @BotFather → /mybots → выбрать бота → Bot Settings → Business Mode → Enable.
# Затем в приложении: Настройки → Telegram для бизнеса → Чат-боты → добавить бота.
# Сессия НЕ нужна — работаем только через официальное бизнес-подключение.
BOT_TOKEN=
# Ваш Telegram id (узнать: напишите @userinfobot). Только вы управляете ботом.
OWNER_ID=