tg-bot-golang
Телеграм бот на GO (Golang)
Это учебный проект, демонстрирующий работу с телеграм ботом на примере учета расходов пользователя по категориям.
В данном проекте:
- получение и отправка сообщений пользователю через телеграм бот (используется библиотека go-telegram-bot-api),
- пример загрузки конфигурационного файла приложения,
- работа с PostgreSQL,
- взаимодействие с внешним API (скачивание курсов валют из открытого источника),
- работа с горутинами (периодическое обновление курсов валют),
- примеры юнит и мок тестов,
- вывод логов (zap),
- пример middleware-функций для трейсинга и метрик,
- пример compose для работы с докер-контенерами (postgres, prometheus, grafana, jaeger, kafka, zookeeper),
- пример реализации LRU кэширования,
- взаимодействие с брокером сообщений Кафка (Kafka),
- отправка/получение прото-файлов по gRPC между сервисами,
- отдельный сервис для получения сообщений из кафки и отправки данных по gRPC,
- пример функции-дженерика (см. пакет net_http)
Описание интерфейса работы с ботом в телеграме
Для начала работы необходимо ввети команду
. Будет отображено основное меню:
Ввод суммы расхода по категории
Для ввода суммы расхода, необхоходимо нажать кнопку
и в появившемся списке категорий выбрать ту, по которой был совершен расход:
После выбора категории необходимо ввести сумму расхода (допускается ввод с копейками, например, 150.5):
Будет сохранен расход текущей датой.
Для добавления категории необходимо в основном меню нажать кнопку
и ввести название новой категории.
Загрузка истории данных
Для загрузки истории расходов введите таблицу в следующем формате (дата сумма категория):
, например:
2022-09-20 1500 Кино
2022-07-12 350.50 Продукты, еда
2022-08-30 8000 Одежда и обувь
2022-09-01 60 Бензин
2022-09-27 425 Такси
Вывод отчета
Для вывода отчета необходимо в основном меню нажать соответствующие кнопки:
,
или
. Будет выведена таблица с отчетом по категориям за выбранный период:
Изменение валюты
Для смены основной валюты для ввода расходов и отображения отчетов нажмите кнопку "Выбрать валюту" в основном меню, а затем кнопку с выбранной валютой.
Установка лимита расходов на месяц
Для установки ежемесячного лимита расходов необхоходимо нажать кнопку
в основном меню ввести максимальную сумму бюджета (например, 150000):
При установке бюджета все вводимые расходы, превышающие бюджет, будут отклонены.
Проект написан в 2022 году.
Языки
Go
- Makefile
- Shell