← Все вопросы

Чем Dispatcher отличается от Router в aiogram 3?

Задан 8 месяцев назад1к просмотров1 ответ
5

Читаю разные уроки по aiogram 3: в одних хендлеры вешают на dp (Dispatcher), в других на какой-то router. В чём разница и что мне использовать в учебном боте?

1 ответ

10
✓ Принятый ответ — помог автору

Коротко:

  • Dispatcher (dp) — главный «диспетчер», который получает обновления от Telegram и раздаёт их хендлерам. Он один на весь бот, и именно у него вызывают start_polling.
  • Router — это как «папка» для группы хендлеров. Удобно, когда бот большой: складываешь команды по файлам (один роутер на админку, другой на игру) и подключаешь их к диспетчеру.

Для маленького учебного бота тебе хватает одного dp — вешай всё на него:

dp = Dispatcher()

@dp.message(CommandStart())
async def start(message): ...

Когда бот разрастётся, разнесёшь по роутерам:

from aiogram import Router
router = Router()

@router.message(Command("play"))
async def play(message): ...

dp.include_router(router)  # подключаем к диспетчеру

И Dispatcher, и Router принимают хендлеры одинаково — разница только в масштабе.

Ваш ответ

Войдите, чтобы ответить на вопрос.