MoneyNag Bot (@moneynag_bot)- это коммерческий проект Telegram-бота для учета личных финансов, который я разработал для клиента. Задача была создать удобный инструмент для контроля расходов с интеграцией в сервис ZenMoney, чтобы пользователи могли получать аналитику своих трат прямо в Telegram.
За основу я взял асинхронный фреймворк aiogram 3.21., который обеспечивает быструю обработку запросов от пользователей. Одной из главных задач была безопасная авторизация через ZenMoney, поэтому я реализовал полноценный OAuth 2.0 flow с Flask-приложением в качестве callback-сервера. Все токены перед сохранением в PostgreSQL были зашифрованы библиотекой cryptography.
По функционалу сделал несколько основных блоков.
1. Аналитика и визуализация: бот генерирует графики расходов через matplotlib и pandas, показывает тренды, соотношение доходов и расходов.
2. Система бюджетирования: добавил возможность устанавливать месячные лимиты и разделять траты на обязательные и необязательные категории. Бот сам мониторит расходы и предупреждает при превышении лимита.
Интересная особенность - функция «друзей по бюджету». По запросу клиента реализовал функцию, где пользователи могут добавить доверенных лиц и автоматически делиться с ними финансовыми отчетами.
Для автоматизации интегрировал
APScheduler, бот сам отправляет отчеты в то время, которое настроит пользователь.
Код структурировал по чистой архитектуре: handlers для команд, services для бизнес-логики, middlewares для контроля доступа. Написал полную техническую документацию, подготовил скрипты для развертывания на VPS, настроил nginx и gunicorn для продакшена.
Клиент получил готовое к запуску решение с документацией по поддержке и расширению.
Технологический стек:
Python 3.10+, aiogram 3.21, asyncpg
Flask, gunicorn, nginx
PostgreSQL with asyncpg
matplotlib, pandas
cryptography, APScheduler
ZenMoney REST API, OAuth 2.0
aiohttp, asyncio