Skip to content

Курсовой проект Телеграм бот - финансовый помощник. Выполнил Шарапов Егор Сергеевич

Notifications You must be signed in to change notification settings

Kratosterra/TelegramBotFinancialAssistant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Телеграм бот - финансовый помощник

Разрабочик

Шарапов Егор Сергеевич БПИ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

Структура

Модули

database

Данный модуль занимается хранением данных и работой с db.

  • data (хранит db для каждого отдельного пользователя)
  • db_functions.py (содержит асинхронные функции взаимодействия с db)

handlers

Данный модуль занимается работой с пользователем через перехват его сообщений и состояний.

  • 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 (содержит главные хэндлеры бота, ответственные за обработку команд)

helpers

Данный модуль занимается работой с некоторыми данными и содержит вспомогательные функции.

  • export.py (содержит асинхронную функцию для экспорта данных)
  • full_report.py (содержит асинхронные функции для создания отчёта Excel)
  • helpers.py (содержит функции для помощи с работой со временем)
  • import_data.py (содержит асинхронные для работы с импортом данных)
  • information.py (содержит асинхронные функции для создания сообщений с бюджетом)
  • parser.py (содержит асинхронные функции для парсинга и получения валют)
  • qr_scanner.py (содержит асинхронную функцию для получения данных с qr кода)
  • report.py (содержит асинхронные функции для создания отчёта в виде сообщения)

texts

Данный модуль занимается хранением данных и работой с db.

  • ru_RU (содержит сообщения на русском языке)
    • messages.py (содержит сообщения для пользователя на русском языке)

Машина состояний

Работа с пользователем внутри команд основано на состояниях машины состояний, чтобы обеспечить точную работу с данными, полученными от пользователя.

База данных

Данные хранятся в отдельных db для каждого пользователя. Каждая db содержит 6 таблиц:

  • categories (содержит категории и подкатегории трат пользователя)
  • events_income (содержит информации о событиях дохода пользователя)
  • events_spend (содержит информации о событиях трат пользователя)
  • income (содержит информацию о доходах пользователя)
  • spend (содержит информацию о тратах пользователя)
  • user_data (содержит информацию о пользователе)

Запуск

Запустите main.py вручную, либо через консоль:
python3 main.py

About

Курсовой проект Телеграм бот - финансовый помощник. Выполнил Шарапов Егор Сергеевич

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages