Функции бота:
- Добавление расходов и доходов
- Чтение информации из QR кодов
- Вывод диаграмм со статистикой
- Вывод .xlsx таблиц
Используемые технологии и библиотеки
- Python 3.9
- pyTelegramBotAPI
- SQLAlchemy
- OpenCV
- Pandas
- Matplotlib
Принцип работы бота
Для начала работы в файле bot.py вводится ip и запускается функция main(). База данных инициализируется автоматически. Работа с ботом осуществляется через чат в telegram, через отправку текста, фотографий и нажатия клавиш на Inline клавиатуре
Схема работы бота
Структура проекта
База данных
База данных реализована при помощи библиотеки SQLAlchemy, что позволяет работать с объектами базы данных как с объектами Python. База данных представлена в виде связанных таблиц. База данных содержит таблицу с информацией о доходах и расходах, таблицу с информацией о пользователях, таблицы с названиями категорий.
Функции для инициализации и работы с БД находятся в файле module.py
Работа с командами
Бот поддеживает команды /start, /help, а также команды /add и /statistics, дублирующие работу через меню
Inline клавиатуры
Бот использует Inline клавиаутры, что позволяет не засорять переписку и удобно перемещаться по меню. Функции для создания клавиатур хранятся в файле keyboards.py
Добавление доходов и расходов
Позиции всех пользовталей хранятся в базе данных. Добавление позиций происходит по следующей схеме
При добавлении расхода возможно чтение информации из QR кода на чеке, функция для распознавания и чтения находится в файле qr.py. Распознение происходит при помощи библиотеки OpenCV. Изображение обесвечивается и очищается от шумов, затем при помощи встренной функции происходит чтение информации из кода. Обработка фотографии предстаавлена ниже
Вывод статистики
Выбор информации для вывода статистики осуществляется через меню статистики в боте. Схема меню статистики представлена ниже
В боте присутсвует 2 вида статистики: по категориям и общая статистика. В статистике по категориям выводятся диаграммы, в общей статистике выводится таблица .xlsx. Доступен выбор периода статистики: месяц или всё время.
Пример общей статистики
Пример статистики по категориям
Круговая диаграмма отображает соотношение затраченной суммы по категориям, стобчатая диаграмма отображает количество позиций по каждой категории