Files
shveitechbot/main.py

57 lines
1.5 KiB
Python

import os
import asyncio
import logging
from aiogram import Bot, Dispatcher
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.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)
# DB services creation
order_repository = OrderRepository()
order_service = OrderService(order_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)
)
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)
)
init_handlers(dp)
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())