Files
shveitechbot/main.py

50 lines
1.4 KiB
Python

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 services import OrderService
from db.base import async_session
from services.categories import CategoryService
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
async def main():
dp = Dispatcher()
bot = Bot(token=BOT_TOKEN)
# DB services creation
order_repository = OrderRepository()
order_service = OrderService(order_repository)
category_repository = CategoriesRepository()
category_service = CategoryService(category_repository)
# DI Middleware Init
dp.message.middleware(DIMiddleware(order_service, category_service))
dp.message.middleware(DBSessionMiddleware(async_session))
dp.message.middleware(RepositoryMiddleware())
dp.callback_query.middleware(DIMiddleware(order_service, category_service))
dp.callback_query.middleware(DBSessionMiddleware(async_session))
dp.callback_query.middleware(RepositoryMiddleware())
init_handlers(dp)
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())