Участники чата, промпты в файлах, личности только из кода
- Бот запоминает участников (имя, фамилия, ник, активность) и ID автора каждого сообщения - Упоминания в вопросе (@ник и по имени-ссылке) передаются модели с данными участника - Новые инструменты агента: list_chat_members, read_member_messages (поиск по нику/имени) - Бот обращается к людям по имени - Промпты вынесены в prompts/system.md и prompts/personas/<id>.md - Личности больше не редактируются из чата: скрипт seed синхронизирует их с БД при старте - Оставлена одна личность boltun (Dirty D) - Миграция старых баз: колонка messages.user_id Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
14
CLAUDE.md
14
CLAUDE.md
@@ -4,7 +4,8 @@ Telegram-бот на Node.js + TypeScript + grammY, AI через Mastra (мод
|
||||
|
||||
## Команды
|
||||
|
||||
- `pnpm dev` — запуск с автоперезагрузкой (читает `.env`)
|
||||
- `pnpm dev` — seed личностей + запуск с автоперезагрузкой (читает `.env`)
|
||||
- `pnpm seed` / `pnpm seed:dev` — синхронизировать личности из `constants/personas.ts` + `prompts/personas/*.md` с БД
|
||||
- `pnpm typecheck` — проверка типов
|
||||
- `pnpm build` / `pnpm start` — сборка в `dist/` и запуск
|
||||
- Node.js 24 (`.nvmrc`); Mastra требует Node >= 22.13
|
||||
@@ -17,16 +18,21 @@ Telegram-бот на Node.js + TypeScript + grammY, AI через Mastra (мод
|
||||
src/
|
||||
index.ts — создание зависимостей и запуск бота
|
||||
config.ts — чтение и валидация env
|
||||
types.ts — доменные типы (Persona, ChatMessage)
|
||||
constants/ — встроенные личности и прочие константы
|
||||
libs/ — инфраструктура без бизнес-логики (SQLite, форматирование Telegram-сообщений)
|
||||
types.ts — доменные типы (Persona, ChatMessage, ChatMember)
|
||||
constants/ — список личностей (id, название) и прочие константы
|
||||
scripts/ — отдельные точки входа (seed)
|
||||
libs/ — инфраструктура без бизнес-логики (SQLite и миграции, чтение промптов, форматирование Telegram)
|
||||
repositories/ — только SQL и маппинг строк в доменные типы, по репозиторию на таблицу
|
||||
services/ — бизнес-логика; зависят от репозиториев, не знают про grammY
|
||||
assistant/ — AI на Mastra: агент, промпты, tools
|
||||
bot/ — grammY: сборка бота, общие хелперы ответа
|
||||
handlers/ — тонкие Composer'ы: разбор команды → вызов сервиса → ответ
|
||||
prompts/ — тексты промптов: system.md (правила бота) и personas/<id>.md
|
||||
```
|
||||
|
||||
- Промпты храним только в `prompts/*.md`, не в коде.
|
||||
- Личности не редактируются из чата: источник правды — код и `prompts/`, в БД их кладёт `seed`.
|
||||
- Изменения схемы БД — через `migrate` в `libs/db.ts` (у пользователей уже есть базы).
|
||||
- Каждый модуль — фабрика `createX(deps)`, тип экспортируется как `ReturnType<typeof createX>`.
|
||||
- Хендлеры не ходят в репозитории напрямую — только через сервисы.
|
||||
- Правила доступа (только админы) — в `bot/create-bot.ts` через `bot.filter`.
|
||||
|
||||
Reference in New Issue
Block a user