Skip to content
aslan-pyPublic

About

Telegram expense tracker bot

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Проект count_bot 🤖 CI/CD Pipeline для проекта count_bot

Телеграм-бот для удобного учета личных финансов. Сохраняет в Базу Данных статью затрат, категорию затрат и стоимость.

Основные возможности 🌟

  • Мультимодальный ввод: Бот принимает как текстовые сообщения, так и голосовые заметки (через Yandex SpeechKit).
  • ИИ-парсинг: Использование модели DeepSeek для извлечения сущностей (категория, сумма, дата) из неструктурированного текста.
  • Автоматическая отчетность: Генерация наглядных таблиц с расходами за выбранный период.
  • Валидация данных: Строгая проверка типов через Pydantic перед записью в базу данных.
  • Надежное логирование: Вся работа системы фиксируется через Loguru для быстрого мониторинга и отладки.

🛠 Технологии

  • Python 3.12.7
  • pyTelegramBotAPI — взаимодействие с Telegram
  • SQLAlchemy — работа с базой данных
  • OpenAI — интеграция с DeepSeek AI
  • PrettyTable — формирование отчетов и сводных таблиц
  • Loguru — логирование данных
  • Requests — API запросы к Яндекс
  • Pydantic — валидация данных
  • YandexSpeechKit — перевод голоса в текст
  • Ruff — Линтинг и форматирование кода

🚀 Быстрый старт

  1. Клонируйте репозиторий:
    git clone [https://github.com/ваш_логин/count_bot.git]
    cd count_bot
  2. Создайте и активируйте виртуальное окружение:
    python -m venv venv
    source venv/bin/activate  # Для Linux/macOS
    venv\Scripts\activate     # Для Windows
  3. Установите зависимости:
    pip install -r requirements.txt
    

⚙️ Настройка переменных окружения

  1. Создайте в корне проекта файл .env.

  2. Добавьте в него следующие переменные:

    DEEPSEEK_API_KEY = ваш_ключ_deepseek
    TOKEN_TELEGRAMM = ваш_токен_телеграм_бота
    AUTH (OAuth-токен): токен_к_сервисам_яндекса
    FOLDER_ID = Идентификатор_каталога
    DATABASE_URL = испольщзуемая база, попробуйте  начать с sqlite 'sqlite:///count_bot.sqlite'
    
    

Получить OAuth-токен Идентификатор_каталога

📝 Функционал и использование

Пример работы с ботом:

Пользователь: Купил продукты на 1500 и заехал на мойку 500 Бот:

✅ Данные сохранены!
+-----------+----------+-------+
| Категория | Товар    | Цена  |
+-----------+----------+-------+
| продукты  | продукты | 1500  |
| транспорт | мойка    | 500   |
+-----------+----------+-------+

Пользователь: (Голосовое): «Купил лошадь за сто рублей Бот:

✅ Данные сохранены!
+-----------+--------+-------+
| Категория | Товар  | Цена  |
+-----------+--------+-------+
| животные  | лошадь | 100   |
+-----------+--------+-------+

Пользователь: Покажи расходы за неделю Бот:

+-----------+--------+
| Категория | Сумма  |
+-----------+--------+
| животные  |   100  |
+-----------+--------+
|продукты   |  1500  |
+-----------+--------+
|Итого      | 1600   |
+-----------+--------+

📂 Структура проекта

count_bot/
├── alembic/                # Миграции базы данных (хранение истории изменений)
├── app/                    # Основной код приложения
│   ├── main.py             # Точка входа, запуск бота
│   ├── telebot_config.py   # Конфигурация и хендлеры Telegram
│   ├── service.py          # Бизнес-логика (MainService)
│   ├── crud.py             # Операции с базой данных (SQLAlchemy CRUD)
│   ├── models.py           # SQLAlchemy модели (Описание таблиц)
│   ├── schemas.py          # Pydantic схемы (Валидация данных)
│   ├── validators.py       # Логика предварительной проверки сообщений
│   ├── table_factory.py    # Генерация визуальных отчетов (таблиц)
│   ├── constants.py        # Текстовые константы и настройки приложения
│   ├── loguru_config.py    # Инициализация и настройка логгера
│   ├── deepseek_config.py  # Интеграция с ИИ DeepSeek
│   └── yandex_speech_kit_config.py # Интеграция с Yandex SpeechKit
├── logs/                   # Логи приложения (создаются автоматически)
├── .pre-commit-config.yaml # Конфигурация хуков (Ruff, линтеры)
├── alembic.ini             # Конфигурация Alembic
├── requirements.txt        # Зависимости проекта
├── ruff.toml               # Настройки линтера Ruff
└── README.md               # Документация

Файл базы данных (count_bot.sqlite) будет доступен в корне после выполнения миграции: alembic upgrade head

👤 Автор

  • Аслан Лигус — Идея и разработка — @Aslan_Ligus

📄 Лицензия

Этот проект распространяется под лицензией MIT — подробности см. в файле LICENSE.

About

Telegram expense tracker bot

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages