
Telegram-бот для учёта личных финансов на aiogram 3 + SQLAlchemy 2.0 async. Записи через текст без кнопок, история за любой период, графики по категориям, бюджеты по категориям, накопления и учёт активов/пассивов, финансовые цели, долги и займы, экспорт/импорт в Excel, авторассылки сводок и напоминаний. 519 тестов, модульная архитектура.
|
|
| Язык |
Python 3.14 |
| Фреймворк |
aiogram 3 |
| ORM / БД |
SQLAlchemy 2.0 async + aiosqlite (опц. PostgreSQL через asyncpg) |
| Графики |
matplotlib |
| Планировщик |
APScheduler (рассылки и напоминания) |
| Тесты |
pytest + pytest-asyncio |
+5000 зарплата или -200 кофе — запись без кнопок, несколько строк сразу
- Несколько счетов с выбором при вводе
- История за 8 периодов + произвольный диапазон дат, постраничная навигация
- Редактирование записей из истории: сумма, категория, дата, счёт; удаление с подтверждением
- Столбчатые диаграммы по категориям, топ-5 + «Прочее»
- Динамика доходов и расходов по месяцам за выбранный год
- Накопления: снимки баланса по дням, динамика роста
- Активы и пассивы: учёт имущества и долгов с CRUD-операциями
- Пользовательские категории: CRUD, лимит 30 шт., умная суггестия по ключевым словам
- Поиск по записям: текст,
>1000, <500, =250; фильтр истории по типу операции и по категории
- Месячные бюджеты по категориям: установка лимита, прогресс-бар, уведомления при 80% и 100%
- Отчёт по дням недели: средние траты/доходы по дням, столбчатый график
- Экспорт записей в Excel (по периоду и типу операции, лист с итогами)
- Резервная копия через
/backup: записи, бюджеты, накопления, активы/пассивы в одном файле
- Финансовые цели: создание/редактирование (имя/сумма/дедлайн), пополнение и снятие со счёта без засорения истории, быстрые суммы (10%/25%/50%/ежемес/остаток), индикаторы просрочки и достижения, ETA-прогноз, архив завершённых с длительностью накопления
- Импорт записей из Excel-шаблона: до 1000 строк, валидация, предупреждение о дублях
- Долги и займы (
Долги): кто кому должен («мне должны» / «я должен»), частичные погашения без засорения истории и отчётов, дедлайны, архив закрытых
- Уведомления (
/notifications): еженедельная и ежемесячная сводки, ежедневные итоги, напоминание при простое 2+ дня, напоминания о приближении срока долга; онбординг после первой записи, каждый тип переключается отдельно
- Многошаговые сценарии через aiogram FSM
| Команда |
Действие |
/start |
Главное меню |
/help |
Справка |
/cancel |
Отмена текущего действия |
/backup |
Полная резервная копия в Excel |
/notifications |
Настройка уведомлений |
pip install -r requirements.txt
cp .env.example .env && python bot.py
Токен получить у @BotFather, вставить в .env.
Переменные окружения (читаются в config.py):
| Переменная |
Назначение |
BOT_TOKEN |
Токен бота (обязателен) |
ADMIN_ID |
Telegram ID администратора (без него admin-функции выключены) |
DATABASE_URL |
URL БД, по умолчанию sqlite+aiosqlite:///db.sqlite3 |
PROXY_URL |
SOCKS-прокси для Telegram API (опц.) |
BOT_API_BASE_URL |
Reverse-proxy к Telegram API, приоритет над PROXY_URL (опц.) |
| Главное меню |
История |
График отчёта |
| скоро |
скоро |
скоро |