Статья посвящена обзору коммерческого продукта — Telegram-бота @budgetmoneybot для ведения семейного бюджета.
Прежде чем начать обзор, я бы хотел написать несколько строк о том, как мы с супругой пришли к ведению бюджета в Telegram.
Надо сказать, что необходимость ведения бюджета мы начали осознавать с первых дней после свадьбы. Сначала мы записывали наши доходы и расходы в простую ods-таблицу.
![](https://habrastorage.org/r/w1560/webt/f4/zh/kw/f4zhkwn_456kcbbn66zrx-9knoq.png)
Но ведение такой таблицы уже через несколько месяцев показалось нам утомительным. Очень хотелось иметь более мобильный инструмент, позволяющий сохранять данные и выводить отчеты.
Тем не менее 5 лет мы усердно заполняли таблицу, в той или иной степени регулируя свои расходы. Потом был год перерыва, в течение которого мы еще раз убедились, что вести бюджет нужно.
В начале 2019 года мы снова решили вести бюджет, но возвращаться к заполнению ods-таблицы мы не хотели. Мы попробовали некоторые мобильные сервисы и пришли к выводу, что нам они не подходят.
Тогда я подумал, что для ведения бюджета было бы удобно использовать Telegram-бота, который принимал бы сообщения с числами или с математическими выражениями и распределял бы суммы по заранее настроенным категориям. Кроме того, хотелось иметь возможность направлять такому боту фотографии QR-кодов на чеках, чтобы бот сам распределял позиции в чеках по категориям. А для ведения семейного бюджета хорошо было бы создать отдельную группу в Telegram и добавить в неё бота.
Несколько месяцев мне потребовалось на реализацию и тестирование такого бота. Но, как говорится, «дорогу осилит идущий» — в августе 2019 года бот был реализован.
Telegram-бот @budgetmoneybot предоставляет пользователям возможность вести как личный, так и семейный бюджет.
Для ведения семейного бюджета необходимо создать группу в Telegram и добавить в неё бота.
![](https://habrastorage.org/r/w1560/webt/ti/rp/sg/tirpsgbfdkjdwe5rn_c7ijyqmtw.png)
![](https://habrastorage.org/r/w1560/webt/rt/22/va/rt22vawnhowko9qymexykpx0_tw.png)
Напишем, что-нибудь в группу. Бот предложит настроить категории доходов и расходов.
![](https://habrastorage.org/r/w1560/webt/ze/bq/az/zebqazbbo1u5uipyvr1ro23cmfy.png)
Нажимаем кнопку «Доходы» и вводим названия источников доходов и плановые суммы по предлагаемому формату. Далее вводим названия категорий расходов с плановыми суммами.
Я рекомендую использовать emoji для визуализации категорий. Удобно при просмотре отчетов.
![](https://habrastorage.org/r/w1560/webt/s4/cs/__/s4cs__vj9zot-zgd-wlz3rwz5v4.png)
Категории доходов и расходов настроены! Теперь попробуем, добавить сведения о расходах.
![](https://habrastorage.org/r/w1560/webt/hx/-m/kz/hx-mkzfbsfhoty0xgh6hqtkafoy.png)
Выбираем, категорию «Продукты».
Сообщение редактируется — выводится отчет о добавлении суммы.
![](https://habrastorage.org/r/w1560/webt/fu/le/nj/fulenjq_cmoiiqie0mpr4hf7gn4.png)
Бот позволяет уточнить дату. Это полезно, если, к примеру, Вы вносите суммы за предыдущий месяц. Также можно отменить добавление суммы.
Теперь добавим информацию о доходах.
Вводим сумму, выбираем последнюю кнопку «К доходам».
![](https://habrastorage.org/r/w1560/webt/a-/dy/19/a-dy19pfiejw-wcizd44y3ynwye.png)
Затем выбираем категорию.
Аналогично, сообщение редактируется — выводится отчет о добавлении суммы.
![](https://habrastorage.org/r/w1560/webt/f4/nm/iy/f4nmiyhm8pfcvvne780tom5n7qi.png)
Попробуем посмотреть отчет.
Вводим команду /report.
![](https://habrastorage.org/r/w1560/webt/9d/db/yz/9ddbyzy6gbdysslb5v5g4sg8qp0.png)
Кнопки под отчетом позволяют быстро переключаться между отчетными месяцами.
Попробуем направить боту фотографию QR-кода на чеке.
![](https://habrastorage.org/r/w1560/webt/ae/ct/hn/aecthnyztf54kzwrn3l3jabmim8.png)
Бот начнет распределять товары по категориям. Если Вы впервые покупаете фасоль в магазине (точнее «Фасоль фас 800гр :6»), бот Вас спросит, к какой категории добавить позицию в чеке.
В нашем случае — это «Продукты». В следующий раз фасоль будет автоматически попадать в категорию «Продукты».
После распределения всех товаров по категориям, бот выдаст отчет.
![](https://habrastorage.org/r/w1560/webt/gt/ur/k1/gturk1joskaedjodihce1q1xuio.png)
BudgetMoneyBot имеет широкий спектр настроек. Можно добавлять, удалять, сортировать и переименовывать категории, менять плановые суммы, отвязывать товары от категорий, выводить отчеты за произвольный период.
В дальнейшем планирую функционал расширять.
За пользование ботом установлена плата — 23 рубля в месяц. При этом при подключении начисляются вступительные 23 рубля. Если на счету «0», ботом можно будет пользоваться (вбивать суммы, направлять чеки), однако отчеты будут недоступны. В минус баланс не уходит.
Действует реферальная программа лояльности: за каждого пользователя, зарегистрированного по специальной ссылке (см. команду /referal), начисляются 23 рубля.
Прежде чем начать обзор, я бы хотел написать несколько строк о том, как мы с супругой пришли к ведению бюджета в Telegram.
Надо сказать, что необходимость ведения бюджета мы начали осознавать с первых дней после свадьбы. Сначала мы записывали наши доходы и расходы в простую ods-таблицу.
![](https://habrastorage.org/webt/f4/zh/kw/f4zhkwn_456kcbbn66zrx-9knoq.png)
Но ведение такой таблицы уже через несколько месяцев показалось нам утомительным. Очень хотелось иметь более мобильный инструмент, позволяющий сохранять данные и выводить отчеты.
Тем не менее 5 лет мы усердно заполняли таблицу, в той или иной степени регулируя свои расходы. Потом был год перерыва, в течение которого мы еще раз убедились, что вести бюджет нужно.
В начале 2019 года мы снова решили вести бюджет, но возвращаться к заполнению ods-таблицы мы не хотели. Мы попробовали некоторые мобильные сервисы и пришли к выводу, что нам они не подходят.
Тогда я подумал, что для ведения бюджета было бы удобно использовать Telegram-бота, который принимал бы сообщения с числами или с математическими выражениями и распределял бы суммы по заранее настроенным категориям. Кроме того, хотелось иметь возможность направлять такому боту фотографии QR-кодов на чеках, чтобы бот сам распределял позиции в чеках по категориям. А для ведения семейного бюджета хорошо было бы создать отдельную группу в Telegram и добавить в неё бота.
Несколько месяцев мне потребовалось на реализацию и тестирование такого бота. Но, как говорится, «дорогу осилит идущий» — в августе 2019 года бот был реализован.
Telegram-бот @budgetmoneybot предоставляет пользователям возможность вести как личный, так и семейный бюджет.
Для ведения семейного бюджета необходимо создать группу в Telegram и добавить в неё бота.
![](https://habrastorage.org/webt/ti/rp/sg/tirpsgbfdkjdwe5rn_c7ijyqmtw.png)
![](https://habrastorage.org/webt/rt/22/va/rt22vawnhowko9qymexykpx0_tw.png)
Напишем, что-нибудь в группу. Бот предложит настроить категории доходов и расходов.
![](https://habrastorage.org/webt/ze/bq/az/zebqazbbo1u5uipyvr1ro23cmfy.png)
Нажимаем кнопку «Доходы» и вводим названия источников доходов и плановые суммы по предлагаемому формату. Далее вводим названия категорий расходов с плановыми суммами.
Я рекомендую использовать emoji для визуализации категорий. Удобно при просмотре отчетов.
![](https://habrastorage.org/webt/s4/cs/__/s4cs__vj9zot-zgd-wlz3rwz5v4.png)
Категории доходов и расходов настроены! Теперь попробуем, добавить сведения о расходах.
![](https://habrastorage.org/webt/hx/-m/kz/hx-mkzfbsfhoty0xgh6hqtkafoy.png)
Выбираем, категорию «Продукты».
Сообщение редактируется — выводится отчет о добавлении суммы.
![](https://habrastorage.org/webt/fu/le/nj/fulenjq_cmoiiqie0mpr4hf7gn4.png)
Бот позволяет уточнить дату. Это полезно, если, к примеру, Вы вносите суммы за предыдущий месяц. Также можно отменить добавление суммы.
Теперь добавим информацию о доходах.
Вводим сумму, выбираем последнюю кнопку «К доходам».
![](https://habrastorage.org/webt/a-/dy/19/a-dy19pfiejw-wcizd44y3ynwye.png)
Затем выбираем категорию.
Аналогично, сообщение редактируется — выводится отчет о добавлении суммы.
![](https://habrastorage.org/webt/f4/nm/iy/f4nmiyhm8pfcvvne780tom5n7qi.png)
Попробуем посмотреть отчет.
Вводим команду /report.
![](https://habrastorage.org/webt/9d/db/yz/9ddbyzy6gbdysslb5v5g4sg8qp0.png)
Кнопки под отчетом позволяют быстро переключаться между отчетными месяцами.
Попробуем направить боту фотографию QR-кода на чеке.
![](https://habrastorage.org/webt/ae/ct/hn/aecthnyztf54kzwrn3l3jabmim8.png)
Бот начнет распределять товары по категориям. Если Вы впервые покупаете фасоль в магазине (точнее «Фасоль фас 800гр :6»), бот Вас спросит, к какой категории добавить позицию в чеке.
В нашем случае — это «Продукты». В следующий раз фасоль будет автоматически попадать в категорию «Продукты».
После распределения всех товаров по категориям, бот выдаст отчет.
![](https://habrastorage.org/webt/gt/ur/k1/gturk1joskaedjodihce1q1xuio.png)
BudgetMoneyBot имеет широкий спектр настроек. Можно добавлять, удалять, сортировать и переименовывать категории, менять плановые суммы, отвязывать товары от категорий, выводить отчеты за произвольный период.
В дальнейшем планирую функционал расширять.
За пользование ботом установлена плата — 23 рубля в месяц. При этом при подключении начисляются вступительные 23 рубля. Если на счету «0», ботом можно будет пользоваться (вбивать суммы, направлять чеки), однако отчеты будут недоступны. В минус баланс не уходит.
Действует реферальная программа лояльности: за каждого пользователя, зарегистрированного по специальной ссылке (см. команду /referal), начисляются 23 рубля.
Техническая информация
Бот разработан на языке Golang. База данных реализована на MongoDB. Из сторонних библиотек используются tgbotapi и mgo. Для декодирования QR-кода используется zbarimg.
Сбор информации с чеков сначала был завязан непосредственно на сайты операторов фискальных данных. Но отсутствие API вынуждало писать веб-скраперы, при этом в некоторых случаях приходилось высылать пользователям captcha-картинки. Из чека понять, к какому оператору фискальных данных нужно обращаться, невозможно. Делать итерацию по всем операторам (по состоянию на 22.03.2019 их было 21) трудоемко. Поэтому было принято решение обращаться напрямую к API ФНС.
На Хабре пользователи писали, что в API ФНС существуют ограничения. С ограничениями столкнуться мне не удалось. Тем не менее, допускаю, что придется реализовывать авторизацию пользователей в системе проверок чеков ФНС (просить пользователя поделиться номером телефона, направлять запрос на авторизацию пользователя в ФНС, просить пользователя поделиться паролем из sms).
Обновление 19.08.2019
С ограничениями API ФНС всё же мы столкнулись. Доработал бота. Теперь пользователям предлагается пройти авторизацию в системе проверки чеков ФНС. После успешной авторизации пользователь сможет получать от ФНС информацию с чеков в пределах лимитов, отведенных ему лично.
Сбор информации с чеков сначала был завязан непосредственно на сайты операторов фискальных данных. Но отсутствие API вынуждало писать веб-скраперы, при этом в некоторых случаях приходилось высылать пользователям captcha-картинки. Из чека понять, к какому оператору фискальных данных нужно обращаться, невозможно. Делать итерацию по всем операторам (по состоянию на 22.03.2019 их было 21) трудоемко. Поэтому было принято решение обращаться напрямую к API ФНС.
На Хабре пользователи писали, что в API ФНС существуют ограничения. С ограничениями столкнуться мне не удалось. Тем не менее, допускаю, что придется реализовывать авторизацию пользователей в системе проверок чеков ФНС (просить пользователя поделиться номером телефона, направлять запрос на авторизацию пользователя в ФНС, просить пользователя поделиться паролем из sms).
Обновление 19.08.2019
С ограничениями API ФНС всё же мы столкнулись. Доработал бота. Теперь пользователям предлагается пройти авторизацию в системе проверки чеков ФНС. После успешной авторизации пользователь сможет получать от ФНС информацию с чеков в пределах лимитов, отведенных ему лично.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Ведете ли Вы учет доходов и расходов? (личный/семейный бюджет)
36.13% Да, веду (ведём)375
30.92% Раньше вел(а) (вели), сейчас не веду (не ведём)321
32.95% Нет, никогда не вел(а) (не вели)342
Проголосовали 1038 пользователей. Воздержались 102 пользователя.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Ведете ли Вы учет доходов и расходов? (личный/семейный бюджет)
53.66% Да, веду (ведём)22
17.07% Раньше вел(а) (вели), сейчас не веду (не ведём)7
29.27% Нет, никогда не вел(а) (не вели)12
Проголосовал 41 пользователь. Воздержались 7 пользователей.