import os import asyncio import logging from aiogram import Bot, Dispatcher from aiogram.client.default import DefaultBotProperties from config import BOT_TOKEN from handlers import init_handlers from middlewares.di import DIMiddleware from middlewares.repository import RepositoryMiddleware from middlewares.session import DBSessionMiddleware from repositories.categories import CategoriesRepository from repositories.order_items import OrderItemRepository from repositories.orders import OrderRepository from repositories.products import ProductRepository from services import OrderService from db.base import async_session logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) os.makedirs("static/img", exist_ok=True) async def main(): dp = Dispatcher() bot = Bot(token=BOT_TOKEN, default=DefaultBotProperties(parse_mode="HTML")) # DB services creation order_repository = OrderRepository() order_items_repository = OrderItemRepository() order_service = OrderService(order_repository, order_items_repository) category_repository = CategoriesRepository() product_repository = ProductRepository() # DI Middleware Init dp.message.middleware(DIMiddleware(order_service)) dp.message.middleware(DBSessionMiddleware(async_session)) dp.message.middleware( RepositoryMiddleware( order_repository, category_repository, product_repository, order_items_repository, ) ) dp.callback_query.middleware(DIMiddleware(order_service)) dp.callback_query.middleware(DBSessionMiddleware(async_session)) dp.callback_query.middleware( RepositoryMiddleware( order_repository, category_repository, product_repository, order_items_repository, ) ) init_handlers(dp) await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main())