Телеграм бот для Planning Pocker

Недавно начал изучать GoLang, и как известно, без практики никуда. Нужно было выбрать какой нибудь проект для реализации, что бы попробовать все аспекты языка.

Я на работе часто пользуюсь инструментом для грумминга задач. Обычно это встроенный в трекер задач инструмент. Но он мне не очень нравился своими возможностями, поэтому я решил реализовать свой собственный, и решить 2 проблемы, впервые написать телеграм бота, и написать его на GoLang

Что у меня получилось можно опробовать здесь https://t.me/AgileEstimateBot

Что нужно от такого бота

1) Легкость постановки задачи для оценки
2) Возможность задавать свою шкалу оценки
3) Удобное отображение результатов

Это были все мои требования, но если у вас есть предложения, пишите в комментариях, возможно я доработаю бот.

Легкость постановки задачи для оценки

По поводу легкости постановки задачи, я решил что будет здорово если я просто опубликую сообщение, и бот сразу подумает что то что я написал требует оценки.


Мне такая механика понравилась, но она исключает вопросы в чат(возможно это и хорошо, не будет флуда, только оценка задач).
В качестве фидбека мне мне предложили добавить 2 команды которые будут регулировать этот режим. Одна будет включать другая отключать оценку всего что написали в чат. Так же нужно добавить команду на оценку, что бы иметь возможность оценить задачу без включения режима.

Считаю что идея классная, и обязательно ее добавлю

Возможность задавать свою шкалу оценки

Исходя из опыта, я понимаю что разные команды вкладывают разный смысл в сторипоинты. В целом боту это должно быть без разницы, пусть то часы, минуты, абстрактные сторипоинты, или вообще смайлы. Поэтому принимается любой текст (разумного размера и кроме запятых), разделенный запятыми

Удобное отображение результатов

С этим все оказалось сложнее. К сожалению телеграм не обладает широкими возможностями по форматированию текста.
У меня получилось сделать , как я читаю приемлемо
— Что бы выделить результаты я обернул их в формат ответа
— Как смог выровнял разное количество символов по ширине
— Добавил звездочку и жирный шрифт к результату с большим количеством голосов
— Не вывожу голоса за которые никто не проголосовал

Получилось как то так

Про опыт с GoLang

В целом мне понравилось писать на GoLang. Но после многих лет работы с PHP довольно сложно перестроиться. Разные паттерны которые были у меня в логове, в GoLang не реализуются(точнее реализуются, но выглядит это мягко говоря не очень). Думаю все это исправляется практикой, поэтому будем дальше практиковаться.

Из того что мне пока не очень понравилось(но возможно я еще не разобрался)
1) Работа с переводами
2) Деплой проекта

Для работы бота, я настроил supervisor который отвечает за бесперебойную работу бота, postgres в докере, в bash скрипт который компилит мне приложение и перезапускает супервизор.
Все таки нужно разобраться с деплоем что бы можно было легко откатываться на предыдущие версии, автоматом прогонять тесты и так далее. Возможно нужно просто разобраться с GitHub actions

И конечно для пет проекта очень не хватает разных няшек которые используем в интерпрайзе, меткрики, легкий просмотр логов и так далее.

Попробуйте бота в действии, пишите фидбек на почту [email protected]