Шарапов Егор Сергеевич БПИ219
Телеграм-бот должен предоставлять возможность пользователем мессенджера «Telegram» получать статистику о тратах и доходах, выводимую в виде отчёта за произвольный период в формате .XLSX, краткий отчёт в сообщениях по месяцам и отчёт о состоянии бюджета за текущий месяц. Также программный продукт должен предоставлять возможность задавать события трат и доходов на определённое число месяца, а также добавлять траты или доходы не только вручную, но и с помощью сканирования QR-кода из чека. Реализованные методы импорта и экспорта данных должны быть реализованы, чтобы помочь в случае, если пользователь какое-то время сам ввел бюджет или хочет некоторое время вести его офлайн. Лимит по потраченным средствам должен позволить пользователю узнать о превышении заданной суммы в отчёте о бюджете, а цель по сохранённым финансам должна помочь экономить личные или семейные средства.
- Python 3.11
Взаимодействие с API Telegram
- aiogram - MIT license
Парсинг сайтов
- requests - Apache License 2.0
- bs4 - MIT license
Хранение данных и логирование
- coloredlogs - MIT License
- logging - Apache License 2.0
- sqlite3 - MIT License
Работа со временем
- time - PSF LICENSE
- datetime - Apache License 2.0
- calendar - Apache License 2.0
- dateutil - Apache License 2.0
Работа с файловой системой
- os - PSF LICENSE
- pathlib - Apache License 2.0
Запись файлов в формате таблиц и графика
- csv - PSF LICENSE
- xlsxwriter - BSD 2-Clause License
- matplotlib - License agreement for matplotlib versions 1.3.0 and later
Компьютерное зрение
- cv2 - MIT license
- pyzbar - MIT license
Дополнительно
- re - PSF LICENSE
Данный модуль занимается хранением данных и работой с db.
- data (хранит db для каждого отдельного пользователя)
- db_functions.py (содержит асинхронные функции взаимодействия с db)
Данный модуль занимается работой с пользователем через перехват его сообщений и состояний.
- button_handlers (содержит хэндлеры для работы внутри меню бота)
- income_spend_handlers.py (содержит хэндлеры для работы с меню удаления и добавления категорий, удаления записей)
- report_handlers.py (содержит хэндлеры для работы с меню отчётов)
- settings_handlers.py (содержит хэндлеры для работы в меню настроек бота)
- data_handlers (содержит хэндлеры для работы c информацией от пользователя)
- document_handlers.py (содержит хэндлеры для работы с документами и фото от пользователя)
- text_handlers.py (содержит хэндлеры для работы с тестом от пользователя)
- keyboards (содержит клавиатуры и асинхронные функции для их создания)
- inline_keyboards.py (содержит готовые инлайн клавиатуры и асинхронные функции для их генерации)
- keyboard.py (содержит клавиатуру главного меню)
- models (содержит хэндлеры для работы внутри меню бота)
- categories_deletion_models.py (содержит модель, набор состояний, для работы с категориями)
- income_spend.py (содержит модель, набор состояний, для работы с сумами доходов и трат)
- report_model.py (содержит модель, набор состояний, для работы с отчётом)
- settings_model.py (содержит модель, набор состояний, для работы с настройками)
- client.py (содержит главные хэндлеры бота, ответственные за обработку команд)
Данный модуль занимается работой с некоторыми данными и содержит вспомогательные функции.
- export.py (содержит асинхронную функцию для экспорта данных)
- full_report.py (содержит асинхронные функции для создания отчёта Excel)
- helpers.py (содержит функции для помощи с работой со временем)
- import_data.py (содержит асинхронные для работы с импортом данных)
- information.py (содержит асинхронные функции для создания сообщений с бюджетом)
- parser.py (содержит асинхронные функции для парсинга и получения валют)
- qr_scanner.py (содержит асинхронную функцию для получения данных с qr кода)
- report.py (содержит асинхронные функции для создания отчёта в виде сообщения)
Данный модуль занимается хранением данных и работой с db.
- ru_RU (содержит сообщения на русском языке)
- messages.py (содержит сообщения для пользователя на русском языке)
Работа с пользователем внутри команд основано на состояниях машины состояний, чтобы обеспечить точную работу с данными, полученными от пользователя.
Данные хранятся в отдельных db для каждого пользователя. Каждая db содержит 6 таблиц:
- categories (содержит категории и подкатегории трат пользователя)
- events_income (содержит информации о событиях дохода пользователя)
- events_spend (содержит информации о событиях трат пользователя)
- income (содержит информацию о доходах пользователя)
- spend (содержит информацию о тратах пользователя)
- user_data (содержит информацию о пользователе)
Запустите main.py вручную, либо через консоль:
python3 main.py