Переписать проект в личный MTProto-юзербот

Смена архитектуры с бизнес-бота на Bot API (команды со слешем) на
личный юзербот на GramJS/MTProto с управлением через компаньон-бота.

Возможности:
- antidelete — кэш входящих в личке, восстановление удалённых «у всех»
- onetime — перехват «просмотр один раз» фото/видео до истечения ссылки
- локальное хранилище node:sqlite + шифрование AES-256-GCM, чистка по сроку
- компаньон-бот (grammY): инлайн-панель, лента с пагинацией, выдача медиа,
  доступ только владельцу по OWNER_ID

Устройство:
- core/ — crypto, db, media, loader, registry, logger
- userbot/ — MTProto-клиент из строки сессии, подписка на события
- modules/ — фичи как модули с хуками setup/onMessage/onEdited/onDeleted
- bot/ — компаньон-бот (единственный UI)
- scripts/login.js — генерация строки сессии

Удалён старый код Bot API (commands/, handlers/, middlewares/, dispatcher,
store). Обновлены README и .env.example. Hcrgram/ (сторонний референс)
добавлен в .gitignore.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-09 19:16:52 +03:00
parent e92e0df644
commit 15a03a77fd
40 changed files with 1845 additions and 922 deletions
+25
View File
@@ -0,0 +1,25 @@
import { saveCapture } from '../core/db.js';
import { notifyCapture } from '../bot/panel.js';
/**
* Контекст передаётся в каждый хук модуля. Это единственная точка, через которую
* модуль что-то делает: сохраняет перехват, уведомляет владельца, качает медиа.
* Модуль не знает ни про grammY, ни про схему БД — только про этот интерфейс.
*/
export function createContext({ client, bot, me, registry }) {
return {
client, // MTProto-клиент (GramJS)
me, // объект себя
registry,
/**
* Сохраняет перехват в БД и уведомляет владельца. kind: 'deleted' | 'onetime'.
* data: { chatId, senderId, sender, text, mediaKind, mediaPath }
*/
async capture(kind, data) {
const id = saveCapture(kind, data);
await notifyCapture(bot, { id, kind, ...data });
return id;
},
};
}