Городская лента

Разработчик написал Telegram-бота для подготовки к собеседованиям по Go

· 4

Разработчик, который готовится к переходу в бэкенд-разработку на Go, написал Telegram-бота для тренировки технических собеседований и выложил его в открытый доступ. Проект бесплатный, исходный код опубликован на GitHub.

Бот принимает ответы голосом, распознаёт речь через облачный сервис Deepgram с моделью Nova-2 и оценивает содержание через DeepSeek на Groq Cloud API. Для жёсткой оценки собрана база из 860 вопросов по 85 темам с эталонными критериями: модель сверяет ответ со списком ключевых пунктов, а не просто соглашается с пользователем.

Для повторения используется интервальное повторение на Redis: вопрос с оценкой 8–10 баллов уходит в конец очереди, а ответ слабее 6 баллов возвращается через пару шагов. Все попытки и баллы сохраняются в PostgreSQL, чтобы можно было смотреть статистику.

Есть режим имитации собеседования под разные грейды — от стажёра до сеньора: бот задаёт 10 вопросов, может уточнять по ходу ответа и в конце выносит вердикт Hire или No Hire с разбором ошибок.

Бэкенд написан на Go 1.23 с библиотекой telebot.v3, данные хранятся в PostgreSQL 16 через pgx/v5, миграции выполняются через golang-migrate, сессии и очереди — в Redis 7. Всё развёрнуто в Docker Compose на недорогом VPS под Ubuntu: в продакшене приложение занимает 25–35 МБ оперативной памяти, отметил автор.

Среди решённых проблем автор называет разметку HTML в Telegram — для этого написан санитайзер, который распознаёт код на Go и экранирует его. Двойные нажатия на кнопки он гасит через EditReplyMarkup до запросов к базе, а в Docker контейнеры запускаются не от root: используется пользователь appuser, включены флаги read_only и cap_drop: ALL, системные папки вынесены в tmpfs.