reminder-bot/bot/core/bot.py

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