41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
"""Создание объектов Bot и Dispatcher, регистрация роутеров."""
|
||
|
||
from __future__ import annotations
|
||
|
||
from aiogram import Bot, Dispatcher
|
||
from aiogram.client.default import DefaultBotProperties
|
||
from aiogram.enums import ParseMode
|
||
from aiogram.fsm.storage.memory import MemoryStorage
|
||
|
||
from common.config import get_settings
|
||
|
||
|
||
def create_bot() -> Bot:
|
||
"""Создать объект бота с HTML-разметкой по умолчанию."""
|
||
settings = get_settings()
|
||
return Bot(
|
||
token=settings.bot_token,
|
||
default=DefaultBotProperties(parse_mode=ParseMode.HTML),
|
||
)
|
||
|
||
|
||
def create_dispatcher() -> Dispatcher:
|
||
"""Собрать Dispatcher и подключить все роутеры.
|
||
|
||
Порядок важен: сначала события участников и команды, затем магазин,
|
||
и в конце — экономика (в ней есть catch-all обработчик сообщений).
|
||
"""
|
||
from bot.handlers import commands, economy, member_events, shop
|
||
from bot.handlers.errors import register_errors
|
||
from bot.middlewares import AnalyticsMiddleware
|
||
|
||
dp = Dispatcher(storage=MemoryStorage())
|
||
# Внешний middleware: ловит все сообщения до фильтров (события `message`/`command`).
|
||
dp.message.outer_middleware(AnalyticsMiddleware())
|
||
dp.include_router(member_events.router)
|
||
dp.include_router(commands.router)
|
||
dp.include_router(shop.router)
|
||
dp.include_router(economy.router)
|
||
register_errors(dp)
|
||
return dp
|