pip install -r requirements.txtВ requirements.txt:
pyTelegramBotAPIrequestsaiohttppython-dotenv
Создай файл .env рядом с bot.py:
BOT_TOKEN=1234567890:YOUR_TELEGRAM_BOT_TOKEN
GIGACHAT_AUTH=BASE64_GIGACHAT_AUTH_STRING
GIGACHAT_SCOPE=GIGACHAT_API_PERS
GIGACHAT_MODEL=GigaChat-2-Max
ALLOWED_CHAT_IDS=123456789GIGACHAT_SCOPE— тип доступа:GIGACHAT_API_PERS(физлицо) илиGIGACHAT_API_CORP(юрлицо)GIGACHAT_MODEL— модель GigaChat (по умолчаниюGigaChat-2-Max)ALLOWED_CHAT_IDS— числовые chat_id через запятую; если пусто — бот отвечает всем. Свой ID можно узнать у @userinfobot
| Команда | Описание |
|---|---|
/start |
Запуск бота, сброс истории |
/reset |
Сбросить историю диалога |
/mode |
Показать текущий режим |
/mode_short |
Короткие ответы |
/mode_long |
Длинные, подробные ответы |
/mode_creative |
Креативные ответы |
/mode_teacher |
Учитель английского |
- Память по чатам хранится в оперативке в словарях
chat_historiesиchat_modes. - В запрос уходит только хвост истории (последние ~20 сообщений).
- После перезапуска память обнуляется (диалоги остаются в лог-файле).
Режим влияет на temperature, max_tokens и системный промпт.
Ответы от GigaChat приходят потоком — бот отправляет сообщение ... и обновляет его по мере поступления токенов, как в ChatGPT.
Логи пишутся в chat_logs.jsonl рядом с bot.py. Формат — одна JSON-строка на событие:
{"ts": "...", "chat_id": 123, "role": "user", "event": "message", "mode": "short", "text": "привет"}
{"ts": "...", "chat_id": 123, "role": "assistant", "event": "message", "mode": "short", "text": "Ответ бота"}Логируются: /start, /reset, смена режима, каждое сообщение пользователя и ответ ассистента.
python bot.pyБот запускается в режиме polling и обслуживает несколько чатов одновременно.