
Я разработал Telegram-бота «Помощник Программиста» — это мой личный проект, который я сделал один, от идеи до поддержки. Цель была простая: создать инструмент для русскоязычных разработчиков, который помогает решать задачи по программированию, хранит контекст диалога и выдаёт код без лишней "воды".
Зачем я сделал этого бота?
- Большинство существующих ботов — просто "прокладки" к ChatGPT без контекста и персонализации
- Я хотел, чтобы ответы были только на русском и с примерами кода
- Нужен был инструмент, которым удобно пользоваться именно в Telegram
- Важно было сохранить простоту деплоя и поддержки, так как работал один
Стек технологий
python-telegram-bot≥ 20.0 — основной фреймворкaiohttp— минимальный HTTP-сервер для health-check- Groq Async API с моделью
gemma2-9b-it— основная LLM - Hugging Face Inference API — fallback для коротких ответов
- Хранение данных пользователей в простом
users.json - Кастомные модули:
smart_features,enhanced_ai_handler,database,utils
Как устроена архитектура
main.py— точка входа с обработчиками команд и сообщений- RateLimiter ограничивает до 10 запросов в минуту на одного пользователя
- ResponseCache хранит последние ответы и снижает нагрузку на LLM
- UserContext сохраняет историю диалога, уровень навыка и предпочтения стиля
- Форматирование кода реализовано через
<pre><code>, чтобы в Telegram блоки выглядели аккуратно
Работа с конфигурацией и секретами
- Все ключи хранятся в
.envи.env.local - При старте бот проверяет наличие обязательных ключей и падает с ошибкой, если чего-то нет
- Есть скрипты
test_api.pyиtest_models.pyдля проверки ключей и доступности моделей
Интеграция с LLM
- Groq — основная модель, которая обрабатывает запросы
- В prompt добавляется системное сообщение и последние 6 реплик из истории
- При таймауте или ошибке подключается Hugging Face
- Температура 0.3 и лимит в 1000 токенов позволяют держать ответы стабильными
Тестирование и поддержка
- Локальные проверки API-ключей
- Тестирование команд:
/start,/help,/stats,/settings - Проверка отображения кода и кириллицы в Telegram
- Введён
TYPING_DELAY, чтобы бот отвечал более "по-человечески"
Деплой
- Railway: запуск через
deploy_railway.py, переменные окружения задаются в Dashboard - Render: используется
render.yamlс конфигурацией порта и командой запуска - Для обоих вариантов реализован health-check по эндпоинту
/health
Выводы
- Контекст и память — обязательная часть, иначе бот превращается в обычный FAQ
- Детальный системный prompt помогает сохранять стиль и язык ответов
- Даже простая JSON-база достаточна на старте
- Rate limiter и кэш экономят ресурсы и ускоряют ответы
Что дальше?
- Добавить "учебные режимы" — мини-курсы и чек-листы прямо в боте
- Сделать простую админку для просмотра статистики
- Расширить базу умных подсказок
Бот создан мной — Вадим, full-stack разработчик. Если нужен такой инструмент, консультация по архитектуре или аудит кода — пишите:
- vadzim.by
- Telegram: @vadzim_belarus
- Попробовать бота: @vadzim_by_programmer_bot