Telegram-бот Boltun AI на grammY + Mastra

- Отвечает только администраторам из ADMIN_IDS
- Личности на чат: встроенные и пользовательские (/personas, /persona, /persona_add, /persona_del)
- Вопросы через /ask, упоминание, ответ боту или личку
- Сохраняет сообщения чата в SQLite; агент по просьбе читает их инструментом read_chat_messages
- Модели через OpenRouter (по умолчанию DeepSeek)
- Слои: libs, repositories, services, bot/handlers
- Dockerfile для деплоя в Dokploy

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
yunogasai
2026-09-24 18:31:44 +02:00
commit 99c4660da9
32 changed files with 3173 additions and 0 deletions

26
src/bot/commands.ts Normal file
View File

@@ -0,0 +1,26 @@
export const BOT_COMMANDS = [
{ command: "ask", description: "Задать вопрос боту" },
{ command: "personas", description: "Список личностей и выбор" },
{ command: "persona", description: "Выбрать личность: /persona <id>" },
{ command: "persona_add", description: "Добавить личность: /persona_add <id> <описание>" },
{ command: "persona_del", description: "Удалить пользовательскую личность: /persona_del <id>" },
{ command: "help", description: "Справка" },
];
export const helpText = (username: string) => `Я отвечаю только администраторам.
Как спросить:
• /ask <вопрос>
• упомяни меня (@${username}) или ответь на моё сообщение
• в личке — просто напиши
Ответь командой /ask на чьё-то сообщение — я учту его. Попроси «посмотри последние 50 сообщений» — я прочитаю переписку чата.
Чтобы я видел переписку в группе, отключи privacy mode в @BotFather (/setprivacy → Disable) или сделай меня админом группы.
Личности:
• /personas — список и выбор кнопками
• /persona <id> — выбрать
• /persona_add <id> <описание характера> — добавить или изменить пользовательскую
• /persona_del <id> — удалить пользовательскую
/whoami — узнать свой Telegram ID (в личке).`;