Изначально сей проект жил внутри Coddy Agent, и созданы был так как нам с Антоном @foxyminds нужен был локальный Telegram Bot API, на котором можно нормально гонять тесты агентика без токена, служебных чатов, сети и попыток угадать, как Telegram отреагирует на пограничный запрос.
Проект симулирует не только успешные ответы реализованных методов API, но и характерные ошибки и ограничения: нельзя отредактировать сообщение без изменений, ответить на неизвестный callback или передать слишком длинный
callback_data и так далее.Короче, пилили мы пилили и постепенно стало понятно, что стенд полезен не только Coddy, поэтому приняли решение вынесли его в отдельный реп, доступный всем.
Заюзать
tgfake можно несколькими способами. К примеру скачать статичный бинарник для Linux, macOS или Windows, или поднять стенд прямо внутри Go-теста через httptest, или подключить GitHub Action, который установит и при необходимости запустит сервер в workflow.Есть и режим для ботов, которые ходят в языковые модели, для этого добавили флаг
--llm, он поднимает сценарную OpenAI-совместимую заглушку с /v1/chat/completions, которая умеет выдавать ответы по правилам, воспроизводить tool calls и отвечать через SSE-стриминг. Получается полноценный контур для e2e-теста бота, который одновременно работает с Telegram и моделью, но не требует ни Telegram, ни ключа к LLM.Сорсы тут: https://github.com/EvilFreelancer/tgfake