Как я хотел вести учет финансов через бота, а получился отличный проект

Приветствую всех. Изначально свой опыт учета финансов и, собственно, результат, к которому я пришел сейчас, я описал в статье в «Тинькофф Журнале». Однако местные правила не позволили мне в полной мере рассказать читателям о своем творении. Потому, любезная администрация спокойно удалила упоминание решения, которым я хотел поделиться с людьми, и оставила только, буду честен, неплохо написанную простыню столь необходимой людям информации о моем опыте записи чисел в разные приложения. По просьбам находчивых читателей, я отправился на этот портал, чтобы оставить тут более расширенную версию своей истории.

Как я использовал приложения

Мой более-менее серьезный подход к учету финансов начался не так давно, годика три назад, думаю. Тогда я молодой и глупый думал, что самый крутой способ решить этот вопрос — это всякие приложения. В Play Store и сейчас можно найти множество приложений для этого, они обычно содержат в названии Money или Budget и, в целом, ничем друг от друга не отличаются. Спустя долгое время использования одного из таких, мне стало скучно, я хотел больше оптимизировать процесс, потому что часто забывал внести какие-то траты и в конце недели получал, скажем так, кассовый разрыв. Я начал поиски приложения, которое смогло бы само считывать уведомления банков и заносить все операции в себя.

Тогда я наткнулся на ZenMoney. Оно мне очень нравилось, я даже оплачивал платный функционал, хотя, оплачивать его скорее всего придется, даже если вы просто хотите пользоваться приложением, не являясь его ярым фанатом. Суть его работы заключалась в подключении к банкам. Да, придется сообщить приложению свои данные, в разных банках по-разному, где-то логин пароль, где-то номер телефона. Приложение уверяет, что все безопасно, зашифровано там, ну вы поняли. Справедливости ради, скажу, спустя год деньги ниоткуда не украли, спам не присылали. Но вот что-то мне все равно не нравилось. Такой уж я человек, мне хочется чтобы все по возможности было максимально надежным и отказоустойчивым. Во-первых, со временем, я потерял интерес к ведению финансов. Приложение само все считывало и сохраняло, зачем вообще думать о чем-то? Закончилось тем, что я заходил в него раз в недельку, так, чисто посмотреть аналитику (за которою и платил, к слову), на какие категории больше всего трачу, ну и поправить категории трат, которые определились неправильно. Во-вторых, как не дипломированного специалиста в области информационной безопасности меня беспокоил тот факт, что я не знаю где хранятся мои финансовые данные, не говоря уже о способах доступа к моим банкам. Да в приложение можно было зайти с разных устройств через почту, это было удобно. Но, решив однажды сменить аккаунт, к которому было привязано приложение, я столкнулся с проблемой, что программа не смогла импортировать данные которые я экспортировал из неё. Это вообще как? Бред. В-третьих бедная аналитика. Я не могу получить графики или сводные таблицы со своими данными, которые я хочу. Я должен довольствоваться только тем, что мне дали. А это круговая диаграмма расходов по категориям, ну и какая-нибудь столбчатая диаграмма суммы трат по месяцам. И это еще платно! Подведём итог проблем используемого мною ПО:

  • автоматизированный процесс убивает интерес контроля над ситуацией;
  • низкий уровень безопасности, ПО запрашивает данные для входа в банк;
  • данные о ваших финансах хранятся не у вас, но экспорт данных доступен;
  • мало возможностей визуализации, вы не можете представить данные в таком формате, в котором хотели бы.

Еще стоит добавить тупость автоматизации. Добавляя транзакции из банка, приложение не понимает, что сейчас я оплатил общий счёт в ресторане, и позже друзья скинут мне свою часть. Вместо добавления только моей, скажем, третьей части суммы, приложение добавляет сумму полного счета, а затем перевод друзей записывает как доход. В конце месяца получаю высокий уровень трат, и не понятно откуда пришедший доход, гораздо больше моей зарплаты. Если добавлять такие данные вручную, я бы просто записал трату своей части из счёта.

Таблицы — наше все

Решение пришло не сразу, пришлось подумать. Довольно быстро пришел к мысли, что надо переходить на таблицы. К тому же Google Таблицы уже, на мой взгляд, в подобных задачах куда лучше Excel. Тут вам и простой доступ по API, и формул множество, в том числе и для получения данных из интернета, И расширений полно, если надо. Но вот как в таблицы удобно добавлять данные, не сидя за компом по вечерам, вбивая данные о транзакции в клетки? А вот тут пришлось подумать, требовался интерфейс. Вообще, изучая вопрос, я нашел расширение для Google Таблиц, которое генерировало разные таблицы для учёта финансов и позволяла добавлять данные расходов через Google Формы. Примерно такое же решение мне предложили в комментариях к моей прошлой статье. Мне такое решение не нравится, потому что вводить данные в Google Формы с телефона все равно, на мой взгляд неудобно. Не так удобно как придумал я. А решил я использовать бота, конечно же в Telegram. Не надо ставить лишние приложения, да и интерфейс доступен в виде чата в мессенджере, в котором я и так часто бываю.

Начнем с таблицы

Самое время написать в комментариях, «Статья начинается с такой-то строки». Прежде чем сделать что-то свое, я конечно же, пошел смотреть, не сделал ли кто-то то же самое. Я нашел много разных ботов в открытых репозиториях, но все они предлагали не то что мне нужно. Суть их сводилась к отправке сообщений вида: 200, Тинькофф, Такси, для добавления расхода в 200 рублей в категорию такси. Сохранялось у них все, опять же, не пойми куда, аналитики нет, да и вбивать данные текстом, постоянно набирая одно и то же название счета и категории кажется идиотизмом, в 22 году-то. Понял что надо делать самому и делать лучше. Попробовав в тестовом варианте связать код с моей таблицей, и убедившись, что такое взаимодействие возможно, приступил к созданию самой таблицы. Мне было важно создать лист с настройками, где я, или позже другие пользователи, могли бы указать один раз те данные, которые потом будут использоваться при каждом добавление транзакций, такие как список категорий, список счетов, их валюты и тд. В конечном итоге получилось что-то такое:

Вид листа настроек моей таблицы

В таком листе можно указать категории, выбрать день начала расчетов, указать все свои счета и их балансы, а также выбрать валюту счета. Есть правда один нюанс, который до сих пор немного сбивает пользователей с толку. Дело в том, что выбрав валюту счета, его формат не поменяется. То есть указать EUR в графе Currency мало, нужно еще выделить клетку с числом, перейти, в Формат -> Число и поставить нужный формат валюты. Да, это можно было бы сделать автоматически с помощью Apps Scripts, который привязан к таблице, но я от такой идеи отказался, потому что при использовании такой штуки пользователю нужно выдать разрешение какому-то скрипту на чуть ли не управление его аккаунтом, страшно. Получается, что все клетки, которые показывают какую-либо сумму подлежат ручной настройке? Не совсем, эту проблему я частично решил, позже расскажу.

Раз уж начал про таблицу, покажу всю. Все транзакции добавляются на отдельный лист, это удобно, на основе данных с этого листа пользователь может строить любые графики и делать иные действия. Лист с транзакциями выглядит так:

Лист с транзакциями из моей таблицы

Для меня было важным, чтобы новая транзакция появлялась вверху списка, а не внизу. Многие решения, которые я видел, этого не учитывали. Ну и, конечно же, важен последний столбик, который выдает сумму транзакции в основной валюте таблицы, которую выбрал пользователь. Если надумаете сменить ее спустя какое-то время, все пересчитается.

Ну и самое главное, основная страница таблицы. На ней вывел графики, которые хотел и актуальный баланс счетов.

Главный лист таблицы, графики обновляются автоматически

Важно понять, что все графики обновляются автоматически. В случае со столбчатой диаграммой Expenses per day, она отображает данные за последние 30 дней. Круговые диаграммы расходов и доходов сбрасываются в день начала расчетного периода (можно установить в настройках), а график Monthly income and expenses будет показывать статистику за 24 месяца и затем начнет сдвигаться, показывая только последние 24 месяца. Все эти графики работают через лист Chart data, который по умолчанию скрыт, но пользователь может его настроить под себя при желании. Кстати, справа от баланса счета написан его баланс в основной валюте. Это удобно, когда часть счетов в валюте. Сделал немного серым, чтобы глаз не фокусировался на второстепенной информации.

Ну и последнее: бюджет. Данные из бюджета как раз таки и показываются на графике Monthly income and expenses. Сама страница бюджета выглядит так:

Она полуавтоматическая. В первый раз нужно будет вручную скопировать категории. И еще каждый месяц надо заполнять планируемые расходы, можно скопировать с предыдущего месяца. А вот в столбце Actual все происходит само. Важно в верху столбца написать месяц в формате Month YYYY и таблица сама будет выводить потраченные суммы по каждой категории за указанный период. Таблица немного работает, так сказать, с приколом, если неправильно копировать столбец, потому я расписал все подробнее в инструкции тут. Вообще, если будете пользоваться ботом, рекомендую почитать эту вики, я даже гифки сделал, где все показано.

Делаю бота, но не очередного

Вот мы и подошли к сути. Таблица готова, бот с ней может работать. Важно заметить, что бот в данной системе выступает как интерфейс взаимодействия. Он не хранит данные пользователей, за исключением тех, которые необходимы для подключения к таблице. Сама таблица храниться у пользователя в аккаунте, он копирует к себе шаблон при регистрации. Если вдруг бот сломается, ничего страшного не произойдет, все данные останутся целыми, а бота можно подключить снова. Хотите перенести таблицу? Не беда, хоть строки перекопируйте.

Основные инструмента бота выведены вот в такие кнопки:

Кнопки управления ботом

Да, с момента прошлой статьи подъехал перевод на русский язык. Назначения кнопок и так очевидны, посмотрим как происходит добавление транзакций.

Категории представлены в виде кнопок

И вот та магия, которой я добивался. Все категории представлены в виде списка кнопок с названиями категорий прямо из таблицы. Если вы добавите новую категорию в таблицу, она появится в боте сразу после вызова кнопки «Расход» или «Доход». Мне нравится. Так же сделано и со счетами.

Классический способ ввода транзакций

Не забыл также и про старый способ, возможно, он будет кому то удобнее при работе с компьютера. Можно добавить операцию одним сообщением.

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

Баланс счетов в боте

Я дополняю бота новыми функциями, есть команда /undo для удаления последней добавленной операции из таблицы, можно поменять основную валюту и ее формат в самом боте. Это не поменяет формат валюты отдельных счетов, но поменяет формат клеток, которые показывают основную валюту на главном листе.

Это все, что я хотел вам рассказать. Бота из текста можно найти тут. Если переживаете за свои данные, не волнуйтесь, проект open source, код здесь. Более-менее подробная вики здесь. Если будете пользоваться моей разработкой, прошу поддержать проект командой /donate. Это помогает проекту оставаться бесплатным и свободным от рекламы. Пишите свое мнение в комментариях.

0
30 комментариев
Написать комментарий...
Эрик

Я вообще смотрю и понимаю, что люди которые дружат с Excel очень далеко пойдут) везде пригождаются. Я к сожалению с Excel на "вы "

Ответить
Развернуть ветку
Павел
Автор

Бытует мнение, что вся экономика держится на Excel...

Ответить
Развернуть ветку
Эрик

Ну все, начинаю изучать Excel 😀

Ответить
Развернуть ветку
Эрик

Про Дзен Мани все верно сказано. ИИ плохо работает. Писал в чате, где сидях их пользователи, говорят что ИИ учится. Но одни и те-же действия запомнить не может и путает. Так же плохо соединяется с расчетными счетами. Так как я ИП приходится и личные финансы и рабочие вместе вести. Но именно для меня то, что соединяется с банками как раз то что мне нужно.

Ответить
Развернуть ветку
Павел
Автор

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

Ответить
Развернуть ветку
Эрик

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

Ответить
Развернуть ветку
Павел
Автор

Это странно, особенно если вспомнить, что в настройках категории можно указать доходная эта категория, или расходная. Может там что-то не так?

Ответить
Развернуть ветку
Эрик

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

Ответить
Развернуть ветку
Павел
Автор

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

Ответить
Развернуть ветку
Эрик

Давным дано пользовался Coin Keeper, но потом они что то начали внедрять и просто лаги пошли. Бросил это дело. Но интерфейс у них очень удобный, за счёт переиягивания иконок.

Ответить
Развернуть ветку
Олег Делинков

вообще классная идея, упростит жизнь многих людей)

Ответить
Развернуть ветку
Nikolay Vinogradov

хотел зарегистрироваться, но почему то бот полностью на английском...

Ответить
Развернуть ветку
Павел
Автор

Смена языка доступна после регистрации. Если не понятна регистрация, можно прочитать про нее на русском в вики (ссылка в конце статьи). В любом случае, после регистрации русский можно поставить командой /language. Учел ваше пожелание

Ответить
Развернуть ветку
Олег Муравьёв

Проделана отличная работа! Понравилось, что таблица используется как БД и данные не хранятся на сервере, если я правильно понял)
А есть поддержка валюты BYN?

Ответить
Развернуть ветку
Павел
Автор

Здравствуйте! Да, действительно, бот не хранит данных, таблица клиента как БД). Поддержка есть всех кодов валют, попробуйте написать код вашей валюты в клетку main currency. Он будет ругаться, но работать будет

Ответить
Развернуть ветку
waveform

Сообщение удалено

Ответить
Развернуть ветку
waveform

Разработка супер! Единственное чего не хватает (пока заметил только это) - в боте когда выводишь баланс, почему то доступно в день есть, а общей суммы всех счетов нет. Было бы очень удобно быстро в боте смотреть все свои финансы, не заходя в таблицу (у меня лично несколько счетов в разных криптокоинах, и на глаз сориентироваться бывает сложно)

Ответить
Развернуть ветку
Павел
Автор

Спасибо за рекомендацию. Действительно, нужно добавить. Постараюсь сделать в будущих обновлениях.

Ответить
Развернуть ветку
Vladimir Tarasyuk

Павел, а не планируете прикрутить совместный учёт? Было бы очень круто, потому что вести бюджет с кем-то — это настоящая боль. Например, я веду бюджет с супругой, даже создал для этого отдельную группу в телеге (без какой-либо автоматизации). Сделать возможность добавить бота в группу и каждый сможет вносить операции. Это, кстати, было бы полезно не только семейным парам, но и предпринимателям и небольшому бизнесу

Ответить
Развернуть ветку
Иван Рыжко

Тот же zenmoney это позволяет. Очень удобно. Учитывая, что жена не любит вносить транзакции вручную, синхронизация с банками весьма полезна.

Ответить
Развернуть ветку
Vladimir Tarasyuk

Купил zenmoney давным давно. С тех пор пытался вести бюджет в нём. Но каждый раз, как только я переставал контролировать, всё ломалось. Жена тоже не любит ничего вносить и приходится контролировать и её карты, а если забросить хоть на неделю, то потом вообще фиг разберёшься, кто, что, когда покупал.
Есть предположение, что в телегу будет психологически проще заносить траты и не будет такого сопротивления.

Хотя сейчас после перерыва снова задумался про ZM. Наверное, ничего лучше для совместного учёта нет

Ответить
Развернуть ветку
Павел
Автор

Здравствуйте! Да, действительно, думал об этом, чтобы, как вы сказали, добавить бота в совместный чат и транзакции заносились в одну таблицу.
Вообще у меня на уме уже много функций, которые я бы хотел добавить в бота, но к сожалению, времени совсем нет, да и донатов бот не собирает совсем, потому тратить на него свободное время хочется, но совсем не получается. А так обязательно доберусь до этого и добавлю крутые функции! Спасибо!

Ответить
Развернуть ветку

Комментарий удален автором поста

Развернуть ветку
Alex Nenashev

Здравствуйте! Тот же вопрос про совместное внесение расходов. Можно ли на один лист привязать несколько тг аккаунтов?

Ну и запрос по кастомизации - можно ли добавить настройку бота "включать/отключать добавление description"?

Ответить
Развернуть ветку
Павел
Автор

Здравствуйте! Все названное вами недоступно в текущей версии бота. Разработка новой версии уже ведется. Если у вас есть еще замечания или пожелания по работе бота, а также если хотите принять участие в будущем тестировании новой версии, можете связаться со мной в ТГ @telexpense_help

Ответить
Развернуть ветку
Павел
Автор

Здравствуйте! Буду рад, если свяжетесь со мной и опишите то, как вы бы хотели видеть функцию совместного учета расходов, я бы хотел собрать информацию от пользователей для внедрения нового функционала

Ответить
Развернуть ветку
Rebecca McDonald

Привет, как сделать чтоб категорий расходов было больше? Как я понял бот берет категории в диапазоне F4:F43

Ответить
Развернуть ветку
Павел
Автор

Здравствуйте! Вы правы, диапазон верный. К сожалению, в этой версии бота нет возможности расширить количество категорий. Я уже работаю над новой версией, где будет около 30 категорий и до 12 подкатегорий в каждой. Если интересно или нужна иная помощь, напишите мне в ТГ @telexpense_help

Ответить
Развернуть ветку
Rebecca McDonald

Где следить за новостями чтоб не пропустить выход новой версии?)

Ответить
Развернуть ветку
Павел
Автор

В этом чате точно будет – https://t.me/telexpense_chat
В боте тоже рассылку сделаю

Ответить
Развернуть ветку
Rebecca McDonald

Где следить за новостями чтоб не пропустить выход новой версии?)

Ответить
Развернуть ветку
27 комментариев
Раскрывать всегда