75 lines
3.5 KiB
Markdown
75 lines
3.5 KiB
Markdown
# 🤖 Байтик — Telegram-бот для Егора
|
||
|
||
Детский ИИ-помощник с интеграцией OpenRouter (Qwen 3.6-Plus).
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
1. **Скопируйте `.env.example` в `.env`:**
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
2. **Заполните `.env`:**
|
||
- `BOT_TOKEN` — токен от @BotFather
|
||
- `ALLOWED_CHAT_ID` — ID разрешённой группы (критично!)
|
||
- `OPENROUTER_API_KEY` — ключ от OpenRouter
|
||
- `OPENROUTER_MODEL` — по умолчанию `openrouter/qwen/qwen3.6-plus`
|
||
|
||
3. **Установите зависимости:**
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
4. **Запустите бота:**
|
||
```bash
|
||
python bot.py
|
||
```
|
||
|
||
## 📁 Структура проекта
|
||
|
||
| Файл | Описание |
|
||
|------|----------|
|
||
| `bot.py` | Точка входа, хэндлеры Telegram |
|
||
| `config.py` | Загрузка конфига из `.env` |
|
||
| `prompts.py` | Системный промпт, факты, праздники |
|
||
| `llm.py` | Обёртка над OpenRouter API + фильтр слов |
|
||
| `chat_history.py` | Хранение контекста диалога (JSON) |
|
||
| `scheduler.py` | Утренняя рассылка + праздники |
|
||
| `tts.py` | Голосовые сообщения (ElevenLabs) |
|
||
| `data/chat_history/` | JSON-файлы с историей по user_id |
|
||
| `logs/bytik.log` | Лог-файл |
|
||
|
||
## ✅ Реализовано (Фаза 1 + 2)
|
||
|
||
- [x] Whitelist chat_id — бот игнорирует все чаты кроме `ALLOWED_CHAT_ID`
|
||
- [x] Авто-выход при добавлении в новую группу
|
||
- [x] Интеграция с OpenRouter (Qwen 3.6-Plus)
|
||
- [x] Детский системный промпт (0+)
|
||
- [x] Фильтр запрещённых слов (двойная защита)
|
||
- [x] Контекст диалога (последние 10 сообщений)
|
||
- [x] Утренняя рассылка 7:30 MSK с энциклопедическими фактами
|
||
- [x] Праздничные поздравления (включая ДР Егора 17.04!)
|
||
- [x] Логи в `logs/bytik.log`
|
||
- [x] TTS через ElevenLabs (опционально, базовая реализация)
|
||
|
||
## 🔧 Тестирование
|
||
|
||
1. **Whitelist:** Попробуйте написать боту в ЛС — он должен проигнорировать
|
||
2. **Группа:** Добавьте бота в разрешённую группу — должен работать
|
||
3. **Чужая группа:** Добавьте бота в другую группу — должен автоматически выйти
|
||
4. **Промпт:** Задайте провокационный вопрос — должен мягко уйти от темы
|
||
5. **Рассылка:** Проверьте лог в 7:30 MSK на наличие утреннего факта
|
||
6. **ДР Егора:** 17 апреля бот должен отправить особое поздравление
|
||
|
||
## 📝 Команды бота
|
||
|
||
- `/start` — приветствие
|
||
- `/clear` — очистить историю диалога
|
||
|
||
## 🔐 Безопасность
|
||
|
||
- Whitelist на уровне `message.chat.id`
|
||
- Системный промпт запрещает взрослый контент
|
||
- Дополнительный фильтр запрещённых слов в `llm.py`
|
||
- Логи пишутся в файл для аудита
|