Overview
GetMyBudget — Telegram-бот для обліку доходів і витрат.
Стек:
- Python 3.12
- aiogram 3.x
- SQLAlchemy (async)
- SQLite (тимчасово), БД винесена за межі репозиторію
- systemd-сервіс на сервері Hetzner (Ubuntu)
🔹 ПОТОЧНИЙ ФУНКЦІОНАЛ
- Додавання транзакцій текстом:
- -120 їжа
- +5000 зарплата
- -45 транспорт 31.01 ; таксі
- -10 USD підписка
- Підтримка дат:
- DD.MM
- YYYY-MM-DD
- якщо дата не вказана — використовується сьогоднішня
- Категорії:
- автоматично нормалізуються (різні апострофи → один ')
- приводяться до нижнього регістру
- Команди:
- /start — оновлений help-текст
- /month — статистика за поточний місяць
- /last_month — статистика за попередній місяць
- Контекст:
- у приватному чаті — рахуються тільки операції користувача - у групі — загальна статистика по чату
- UI:
- використовуються inline-кнопки: - 📊 Поточний місяць - 📅 Попередній місяць
- reply-клавіатури повністю прибрані (Telegram Desktop кешував їх і ламав UX)
🔹 ВАЖЛИВІ НЮАНСИ
- БД НЕ лежить у папці проєкту (щоб уникнути перетирання при деплої).
- Раніше були баги через одночасний запуск двох інстансів бота (systemd + manual run).
- Баги зі статистикою були повʼязані з перезаписом БД, а не з логікою підрахунку.
- Порожні повідомлення ("", \u200b) викликають TelegramBadRequest: text must be non-empty.