← Все вопросы
Чем Dispatcher отличается от Router в aiogram 3?
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 принимают хендлеры одинаково — разница только в масштабе.
Ваш ответ
Войдите, чтобы ответить на вопрос.