61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
"""Bot and Dispatcher initialization."""
|
|
|
|
from aiogram import Bot, Dispatcher
|
|
from aiogram.client.default import DefaultBotProperties
|
|
from aiogram.enums import ParseMode
|
|
from aiogram.fsm.storage.memory import MemoryStorage
|
|
|
|
from bot.core.middlewares import DatabaseSessionMiddleware, LoggingMiddleware
|
|
from bot.handlers import common, reminders_create, reminders_manage, callbacks, errors
|
|
from bot.logging_config import get_logger
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
|
|
def create_bot(token: str) -> Bot:
|
|
"""
|
|
Create and configure bot instance.
|
|
|
|
Args:
|
|
token: Bot token
|
|
|
|
Returns:
|
|
Bot instance
|
|
"""
|
|
bot = Bot(
|
|
token=token,
|
|
default=DefaultBotProperties(
|
|
parse_mode=ParseMode.HTML,
|
|
),
|
|
)
|
|
logger.info("Bot instance created")
|
|
return bot
|
|
|
|
|
|
def create_dispatcher() -> Dispatcher:
|
|
"""
|
|
Create and configure dispatcher with routers and middlewares.
|
|
|
|
Returns:
|
|
Dispatcher instance
|
|
"""
|
|
# Create dispatcher with memory storage for FSM
|
|
storage = MemoryStorage()
|
|
dp = Dispatcher(storage=storage)
|
|
|
|
# Register middlewares
|
|
dp.message.middleware(DatabaseSessionMiddleware())
|
|
dp.callback_query.middleware(DatabaseSessionMiddleware())
|
|
dp.message.middleware(LoggingMiddleware())
|
|
dp.callback_query.middleware(LoggingMiddleware())
|
|
|
|
# Register routers (order matters!)
|
|
dp.include_router(errors.router) # Error handler should be first
|
|
dp.include_router(common.router)
|
|
dp.include_router(reminders_create.router)
|
|
dp.include_router(reminders_manage.router)
|
|
dp.include_router(callbacks.router)
|
|
|
|
logger.info("Dispatcher configured with routers and middlewares")
|
|
return dp
|