Как я перепробовал разные методы ведения бюджета и сделал своего бота для учета финансов
Путь читателя от простой таблицы до чат-бота
Это история из Сообщества. Редакция задала вопросы, бережно отредактировала ее и оформила по стандартам журнала.
Еще будучи школьником, я ощутил потребность в ведении учета своих финансов.
Мои ежедневные траты слишком различались, и нужно было как-то все прогнозировать. Тогда решением стала простая эксель-таблица. Со временем мой подход изменился, и я сделал собственного бота, который помогает следить за бюджетом. В этом материале расскажу, как я к этому пришел.

Первые шаги в области учета расходов
Я родился и до 19 лет жил в Латвии. Учился в средней школе в Риге, жил в 40 километрах от столицы, на природе.
В нашей семье не было принято давать карманные деньги просто так. Деньги от родителей можно было получить, только аргументировав трату, назвав конкретную сумму и причину. Такими расходами могли быть еда и проезд. Я учился далеко от дома, и проезд на автобусе из столицы стоил 1,35—1,90 €. Самую ощутимую сумму можно было получить на праздники, день рождения или Рождество — тут как повезет, обычно дарили 30—50 €, родственников было много.
До 12 класса деньги я получал от отца только на ближайший день:
- 1 €, если день был короткий — только уроки в школе, дорога домой на машине;
- около 3 €, если день длинный — уроки, музыкальная школа и дорога домой на автобусе.
На многое этого не хватало, обычно я мог только чем-то перекусить после школы. Обеды посреди дня в школе были бесплатные.
В 12 классе у меня появилась идея брать у отца деньги сразу на месяц. Тогда он попросил посчитать, какая сумма потребуется, тут я впервые и завел таблицу в «Экселе». Расписание было стабильным, и я мог на месяц вперед достаточно точно знать, когда буду ехать домой на автобусе, а когда — на машине. Получалось порядка 40—50 € на месяц.
Еще я пытался копить, но даже не помню, на что именно: было столько всего, что я хотел себе купить. У меня была большая копилка для мелочи, в ней был счетчик, который точно считал сумму в копилке. Раз в несколько месяцев я отдавал банку маме, ей мелочь нужна была на работе, она меняла мне их на банкноты. Большие суммы накопить не удавалось, покупал себе какие-то ништячки с «Алиэкспресса», например новую мышку или клавиатуру.
Тогда моя таблица представляла собой один лист, сверху я писал сумму, которая у меня была в начале месяца, и затем построчно вписывал даты и суммы трат. В верхней части отображался актуальный остаток — сумма, которая была в начале периода, минус все расходы за это время. Таблица помогала вести учет трат, чтобы под конец месяца не остаться без денег, а в лучшем случае даже что-то сэкономить.
То, к чему я пришел сейчас, далеко от такого формата, но всегда приятно вспомнить, с чего все начиналось.

Как я начал пользоваться приложениями для учета бюджета
Поступив в университет в России, я остался наедине со своими финансами. Нужно было оплачивать все самостоятельно — от общежития до хлеба в магазине. К этому моменту я уже перестал вести таблицу и был уверен, что спокойно смогу тратить мало, так, чтобы у меня еще оставалось, но оказался не прав.
Я старался максимально растянуть свои траты, но без ведения учета все равно создавалось впечатление, что деньги просто исчезали, а я при этом прошу у родителей огромную сумму в пересчете на месяц. К тому же не очень приятно было видеть у себя на счетах маленькие суммы: казалось, вот вдруг что случится, а денег нет.
Гораздо приятнее видеть даже 20 тысяч рублей, отложенные на черный день.
В итоге мы с родителями снова договорились, что я буду получать деньги раз в месяц, от меня требовалось посчитать сумму. Помню, насчитал 16—18 тысяч рублей, тогда это было 230 €. Сейчас, конечно, удивлен, как мне хватало такой суммы, но я жил в общежитии и получал стипендию в размере 2 тысяч рублей, а тратил в основном на еду.
Мне нужно было точно знать, сколько денег необходимо ежемесячно, и я перешел к более современным, как мне тогда казалось, способам ведения бюджета. Я начал пробовать разные приложения для смартфона. Долгое время пользовался 1Money, где все траты надо было вводить вручную. Выбрал это приложение, так как мне нравился дизайн, ну и друг посоветовал. Было удобно: вместо того, чтобы открывать таблицу на компьютере, можно было быстро зайти в приложение и сразу добавить транзакцию.
Со временем мне это наскучило, я захотел что-то более функциональное — с возможностью автоматического добавления операций. То есть чтобы при трате с карты приложение само понимало, откуда и сколько было потрачено, и добавляло соответствующие данные. Тогда мне это казалось суперудобным, именно тем, что мне давно было нужно, но как же я ошибался.
Проанализировав разные варианты, я остановился на ZenMoney. Почитал отзывы, убедился, что людям нравится, и начал пользоваться. В целом обычное приложение для учета финансов, но с автоматизацией. Вместо ручного добавления счетов нужно подключить банк, и тогда все операции будут добавляться после обновления раз в какое-то время. Мне также очень нравилось, что оно работает с большим количеством банков, в том числе и европейских.
Опасения насчет безопасности данных у меня были, но я почему-то доверял команде. Ведь если бы они хоть раз украли чью-то копейку, то их репутация была бы разрушена. К тому же впоследствии я отметил вовлеченность разработчиков: у меня возникали разные технические сложности при подключении некоторых банков, но они старались помочь и решить проблему, пусть и не очень торопливо.
Позже я немного разобрался, как именно работает приложение. Суть в том, что оно использует самописные плагины, которые имитируют приложение того или иного банка. Например, когда в ZenMoney обновляется баланс Сбера, программа делает вид, будто вы вошли в официальное приложение банка и обновили баланс там. Сами плагины доступны в виде исходного кода на GitHub, так что вы можете написать что-то свое и использовать их для подключения к банкам.

Почему я потерял интерес к приложениям
Какое-то время я пользовался приложениями и бед не знал. Вернее, знал: с некоторыми банками приложение долгое время отказывалось работать корректно, например с Revolut. Несмотря на это, я даже купил платную функциональность. Но со временем столкнулся с проблемами, после которых навсегда забыл о подобных приложениях.
Первым звоночком стала потеря интереса к отслеживанию расходов. Действительно, зачем вообще вести учет и досконально следить за деньгами, когда все делается само? Если вначале я заходил в приложение раз в день — поправить категории добавленных трат или добавить QR-код чека, — то через пару месяцев почти полностью забил и заходил раз в месяц, только чтобы посмотреть статистику, которая, к слову, была бедна. Приложения не дают вам никакой свободы обработки данных, максимум, что вы можете, — это посмотреть график распределения трат по категориям и еще какие-нибудь диаграммы.
Второй проблемой стал вопрос хранения данных. Да, в приложение можно зайти с разных устройств через почту, и вроде даже где-то там была кнопка экспорта в CSV, так что я всегда могу получить свои данные. Но, как оказалось, не тут-то было.
Приспичило мне сменить свой основной гугл-аккаунт, и надо было перенести все данные. А что делать, если я заходил в приложение со старого аккаунта, а теперь надо перевести все в новый? Поддержка не ответила, и я решил экспортировать данные и импортировать их снова. Каково же было мое удивление, когда приложение, из которого я все экспортировал, не могло понять эти же данные при импорте. Тут я подумал, что пора все менять.

Создание собственного бота
Желание самостоятельно следить за процессом побудило меня найти новое решение. Возвращаться в старое приложение не хотелось: сколько еще раз я буду менять приложения и каждый раз начинать историю операций заново? Данные, конечно, можно экспортировать, но не всегда они легко и быстро импортируются в другое приложение. Поэтому переход на гугл-таблицу для меня был очевиден: данные всегда будут в одном формате и в одном месте.
Так уж сложилось, что в тот момент я уже слушал подкаст Тинькофф Журнала, — рекомендую. Там я услышал мнение, что многие ведут учет своих финансов именно в таблицах, хотя мне на тот момент казалось это не очень удобным. С телефона вносить данные неудобно — на компьютере, что ли, по вечерам клетки заполнять? Ну нет. Встал вопрос, как быстро вносить их в таблицу и с телефона, и с компьютера. И тут я вспомнил про телеграм-ботов.
Меня не интересовали готовые решения — я начинающий программист и хотел пополнить свое портфолио каким-нибудь ботом на Python. Но прежде чем приступить к делу, я все же ознакомился с наработками других разработчиков. Находил всякое, чаще всего кто-то делал очень простого бота, данные в которого заносятся при помощи команд. Да и оформлено все было как «проект по разработке». Пользоваться можно, но, пожалуйста, сам установи, сам запусти и поддерживай бота. Они предлагали только исходный код и инструкцию по запуску. Это было не то.
Так я начал работу над ботом, который отвечал бы именно моим запросам и одновременно был бы продуктом для пользователей. Мой код также общедоступен, но только для ознакомления, я не предлагаю инструкций по развертыванию такого же бота на ваших вычислительных машинах.
Основная мысль, вокруг которой крутилась идея и которую я впоследствии реализовал, — это кнопки с названиями всех категорий и счетов. Вы вносите их в таблицу однократно, и каждый раз при добавлении нового расхода бот сам будет предлагать соответствующие кнопки. Еще я хотел сделать крутой интерфейс, насколько это было возможно. Получилось отлично: единственное, что нужно вводить с клавиатуры, — это цифры, сумма транзакции. Все остальные команды можно выбрать из меню.
Разобравшись в написании ботов и работе с «Гугл-таблицами», я пришел к такому варианту:
- Гугл-таблица, в которой один раз надо произвести настройку, добавить счета, категории, настроить форматы валют.
- Бот используется не только для добавления записей о транзакциях на отдельный лист, но и для получения данных из таблицы — например, об остатке на счетах или категориях.
- Категории и счета представлены в виде кнопок.

Как воспользоваться ботом
Бот называется Telexpense. Он написан на языке Python с использованием асинхронной библиотеки Aiogram. Выбор библиотеки был обусловлен наличием большого количества обучающих материалов, тогда это мне было очень нужно. Для добавления данных в таблицу я использовал Google Sheets API, воспользовался ее оберткой в Python gspread. База данных очень маленькая, храню только id пользователей и id их таблиц.
Ботом может пользоваться любой человек. Для этого нужно:
- Найти бота в «Телеграме» и написать ему.
- Скопировать специальный шаблон таблицы, с которым работает бот.
- Добавить в таблицу почту бота в качестве редактора.
- Отправить боту ссылку на таблицу, чтобы он вас запомнил.
- Настроить таблицу по своему вкусу — добавить счета, указать валюту, внести категории доходов и расходов, отметить, является ли счет сберегательным. Это требуется для статистики распределения бюджета, чтобы бот понимал, какие деньги «текущие», а какие — «сбережения».
Я снабдил все шаги добавления таблицы небольшими видео, которые помогут разобраться тем, кто запутался.






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

Итоги и планы
Теперь я решил все проблемы, связанные с учетом финансов:
- Данные хранятся в таблице, в облаке в моем аккаунте. Бот выступает только как интерфейс взаимодействия.
- Я всегда могу перенести свои данные в другую таблицу или аккаунт.
- Могу строить любые графики на основе данных, которые добавляю.
- Добавляю данные вручную, не теряя интереса и внимания.
- У сторонних приложений больше нет доступа к моим банкам.
Планы развития бота:
- У меня появилось много знаний и опыта в области разработки ботов, поэтому в первую очередь думаю подлатать всю техническую часть в целом.
- Сейчас главный план — пересмотреть работу бота и ускорить его. Постараюсь ускорить работу с таблицами пользователей и увеличить количество запросов, которые бот может обработать за единицу времени.
- Я получил много обращений, в которых люди просят добавить разную функциональность, например русский язык. Изначально бот был только на английском.
- Хочу переделать шаблон таблицы, сделать ее еще понятнее и дать пользователям больше возможностей для редактирования и адаптирования ее под свои нужды. Пока главное, чего мне не хватает в таблице, — это подкатегории. Чтобы подкатегорию «Продукты» можно было положить в категорию «Еда», например.
- Планирую внедрить более глубокую поддержку криптовалют.
Буду рад получить обратную связь по работе бота. Пишите комментарии — буду их читать.
06.06.22, 16:22
Круто! А как можно найти вашего бота, если он общедоступен?
06.06.22, 17:53
Александр, по правилам не могу пиарить своего бота, но недавно нашел похожий, @telexpense_bot
10.06.22, 21:14
Павел, это мой первый комментарий на данной платформе. Я крайне редко регистрируюсь ради комментария и вообще хоть где-то регистрируюсь, всегда просто анонимно читаю. Но Вы стоите этого. Пожалуйста, продублируйте данную статью на VC.RU, расширьте её подробно своим опытом, как не смогли здесь. И открыто дайте все ссылки, рекламы, названия, что угодно пишите. Просто дайте людям этот шедевр в полной мере, как не можете здесь. Вы над ним трудились и сделали общедоступным, просто варварство оставлять здесь продукты конкурентов вместо своего. (Не знаю, что там о себе возомнила местная администрация). Пусть сотни тысяч узнают об этом шедевре. Отправляйтесь на vc.
13.06.22, 12:38
Крол, как просили, https://vc.ru/u/1218657-pavel/441532-kak-ya-hotel-vesti-uchet-finansov-cherez-bota-a-poluchilsya-otlichnyy-proekt
11.06.22, 11:27
Крол, спасибо! Такие комментарии очень вдохновляют на продолжение работы над проектом. Как раз думал рассказать людям про бота и на других порталах!)
09.06.22, 18:02
Павел, ну напишииите и своего
Админы, разрешите!
19.09.22, 17:09
Собака, если соотнести картинку в статье и названия канала, который отправил автор, и немного разобраться, то можно и без ссылки на канал автора обойтись.
19.09.22, 17:11
What, с другой стороны, в комментариях к этому посту есть ссылка на сторонний ресурс, где доступна ссылка.
19.09.22, 17:11
What, всё так.
06.06.22, 18:09
А у меня ввод платежей организован через гугл формы.
И никакого программирования не надо, разве что немного макросов, чтобы введенный платеж поместить куда нужно в нужном формате.
И ярлык к форме прямо на рабочем столе телефона. Ни в какой телеграмм заходить не надо.
08.06.22, 07:53
Павел, а как это сделать? можно подробнее?)
08.06.22, 15:28
Дмитрий, не понимаю что именно вас интересует, если могу быть полезен, напишите мне в телеграме @treskoww
06.06.22, 18:40
Павел, хм, а это крутое решение. И кросплатформенное. Здорово!
19.09.22, 17:16
Оу, неплохо
Сама в свое время писала таблицы эксель для автоматизации. Самое узкое место - внесение данных. Забываешь, лень. Всё таки ежели б прога могла прочитать и выбрать данные из официальных уведомлений банков - был бы другой разговор.
19.09.22, 17:24
ТиграБенгальская, посмотрела таблицу, как то не зашло. Всё таки объективный учёт возможен не менее чем в двух разрезах, а не только лишь поишло- ушло. Грубо говоря никакую деятельность в одну таблицу не свести, а вот найти ситуации требующих больше 2х таблиц очень трудно. Т е табла 2 листа- вот мой идеал учета. Всё что требуется от ПО заносить туда автоматом
19.09.22, 17:47
ТиграБенгальская, понимаю, таблица может быть на любителя. В целом, вы можете создать свой лист и сделать там отображение данных как вам удобно, просто используя для расчетов данные с листа Transactions. В будущем планирую дать пользователям больше свободы по изменению таблицы, например, возможность выбирать, какие клетки будет смотреть бот при вызове 'Баланс'
20.09.22, 11:42
Большая работа, уважаю 👍
Про анализ трат и визуализацию хочется подробнее. Если сделано, то как? А внесение данных - круто!
20.09.22, 14:06
Сокол, в таблице есть скрытый лист chart data, там все данные для графиков генерируются. Пришлось посидеть недельку-другую чтобы найти все нужные формулы) Если интересно, можете потыкать по клеткам, посмотреть, к чему я пришел
20.09.22, 12:42
Интересно! Тоже проделал ровно такой же путь как и вы от приложений к таблицам и своему боту. В итоге понял, что нет ни одного приложения, которое бы подходило моей модели учета и пришлось сделать самому. Пользуюсь каждый день, вбивая траты, доходы, долги, переводы и что угодно. Бот сам переваривает категории по ключевым словам и ведет итоговую отчетную таблицу.
20.09.22, 14:04
Егор, круто! Эх, не добил когда то сокращённые названия категорий в своем боте, но точно сделаю в обновлениях! Ещё бы подкатегории хорошо продумать и вообще красота будет! Идей у меня масса, жаль времени мало(
20.09.22, 14:47
Егор, ваш приятнее, я считаю
20.09.22, 17:45
Amalia, 😒
20.09.22, 12:42
Егор,
20.09.22, 11:35
Сделал в гугл-таблицах файл, доход/расход добавляю с телефона, занимает минуту времени.
Доход разделён на зп, премию, другие поступления, займы/кредитка. Расходы - самые стандартные категории.
Настроил формулами подсчёт остатков, максимума трат на месяц с учётом %, который откладываю.
Пока всё работает, только не совсем понял ещё, как отражать средства с кредитки, которые я трачу в льготный период. Пока отражаю как если бы это были траты с моей карты.
20.09.22, 14:07
Rex, да, разные подсчёты по кредитам сам не придумал как сделать, но ваш опыт все равно интересный!
07.06.22, 08:42
А как в этот бот импортировать данные?
07.06.22, 08:49
Иван, при регистрации пользователю дается шаблон таблицы, который можно настроить под себя. На вкладке Transactions можно вставить все данные, если таковые имеются
19.09.22, 17:11
Здравствуйте, к сожалению я плох в английском, поэтому хотел спросить от лица таких как я, будет ли версия бота на русском языке?😁
19.09.22, 17:42
Гасан, уже есть, команда /language)
19.09.22, 17:47
Павел, благодарю)
19.10.22, 18:22
Удобное вроде приложение, хочется потестить
23.11, 14:51
Здравствуйте. Очень интересно взглянуть на код самого бота, если есть такая возможность. Ссылка на Github или что-то похожее.)