finance-tracker-bot
Описание
Телеграм бот для добавлений расходов и доходов в Гугл таблицу финансового учета
Языки
- Python99,3%
- Dockerfile0,7%
Finance Tracker Telegram Bot
Телеграм-бот для учёта ежедневных расходов и доходов в Google Spreadsheet.
Возможности
- Добавление расходов с указанием даты, категории, суммы и описания.
- Добавление доходов с указанием даты, категории, суммы и описания.
- Синхронизация с двумя листами Google Spreadsheet –
иРасходы.Доходы - Работа как в Docker-контейнере локально, так и в продакшене (Ansible + Docker).
- Ограничение доступа: бот отвечает только пользователям, перечисленным в переменной
.TELEGRAM_ALLOWED_USERNAMES
Подготовка Google Spreadsheet
- Создайте новую таблицу и добавьте два листа строго с названиями:
- Расходы
- Доходы
- Убедитесь, что первый лист имеет следующие колонки в указанном порядке:
(форматДата)ДД.ММ.ГГ- Категория
- Сумма
- Описание
- Для листа доходов колонки аналогичны.
- Создайте сервис-аккаунт в Google Cloud, выдайте ему роль Editor для Google Sheets и сохраните JSON-файл ключа. Поделитесь таблицей с почтой сервис-аккаунта.
- Запишите ID таблицы (содержимое между
и/d/в URL)./edit
Переменные окружения
Скопируйте файл в и заполните значения:
TELEGRAM_BOT_TOKEN=<токен вашего бота>
GOOGLE_SA_CREDS_FILE=/app/credentials.json
SPREADSHEET_ID=<id таблицы>
EXPENSES_SHEET_TITLE=Расходы
INCOMES_SHEET_TITLE=Доходы
TELEGRAM_ALLOWED_USERNAMES=
Важно: при запуске контейнера положите JSON-файл сервис-аккаунта в
или измените путь в переменной/app/credentials.json.GOOGLE_SA_CREDS_FILE
Запуск локально (Docker)
Деплой на виртуальный сервер (Ansible)
-
Установите зависимости для Ansible-playbook (только один раз):
-
В файле
заменитеansible/inventory.iniна IP или DNS вашей ВМ и при необходимости имя пользователя.vm_ip_address -
Убедитесь, что у вас есть SSH-доступ с sudo-правами.
- При необходимости укажите приватный ключ через
/-uпри запуске playbook либо задайте--private-keyвansible_ssh_private_key_file.inventory.ini
- При необходимости укажите приватный ключ через
-
Создайте
и.envв корне проекта (будут скопированы на сервер).credentials.json -
Запустите деплой:
Playbook выполнит:
- Установку Docker на сервере.
- Синхронизацию исходников проекта в
./opt/finance-tracker-bot - Сборку образа
.finance-tracker-bot:latest - Запуск контейнера с автоперезапуском и использованием
..env
Использование бота
- Убедитесь, что ваш Telegram-username присутствует в
.TELEGRAM_ALLOWED_USERNAMES - Откройте диалог с ботом и отправьте команду
(или/start)./help - На экране появится клавиатура с двумя кнопками: Расход и Доход.
- Выберите нужное действие и следуйте пошаговым инструкциям:
Добавление расхода
- После нажатия Расход бот спросит дату:
- Сегодня – текущая дата будет выбрана автоматически.
- Другая дата – откроется интерактивный календарь, где можно выбрать день.
- Бот предложит список категорий расходов – выберите нужную кнопку.
- Введите сумму (целое или дробное число, разделители:
или.)., - Укажите описание или нажмите кнопку Без описания для пропуска.
- Получите подтверждение «Расход успешно добавлен 🎉» и вернитесь в главное меню.
Добавление дохода
- После нажатия Доход бот также спросит дату (аналогично шагу 1 для расхода).
- Выберите категорию из предложенного списка доходов.
- Введите сумму дохода.
- Укажите описание или нажмите кнопку Без описания.
- Получите подтверждение «Доход успешно добавлен 🎉» и вернитесь в главное меню.
Подсказка: в любой момент можно отправить
, чтобы прервать текущий сценарий и вернуться в меню. Все команды работают только для авторизованных пользователей./cancel
Лицензия
Apache 2.0