Files
shveitechbot/main.py

71 lines
1.9 KiB
Python

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())