Диспетчер

Dispatcher is root Router and in code Dispatcher can be used directly for routing updates or attach another routers into dispatcher.

Here is only listed base information about Dispatcher. All about writing handlers, filters and etc. you can find in next pages:

  • Router

  • Фільтрація подій

class aiogram.dispatcher.dispatcher.Dispatcher(*, storage: BaseStorage | None = None, fsm_strategy: FSMStrategy = FSMStrategy.USER_IN_CHAT, events_isolation: BaseEventIsolation | None = None, disable_fsm: bool = False, name: str | None = None, **kwargs: Any)[source]

Кореневий маршрутизатор

__init__(*, storage: BaseStorage | None = None, fsm_strategy: FSMStrategy = FSMStrategy.USER_IN_CHAT, events_isolation: BaseEventIsolation | None = None, disable_fsm: bool = False, name: str | None = None, **kwargs: Any) None[source]

Кореневий маршрутизатор

Параметри:
  • storage – Сховище для кінцевого автомату (FSM)

  • fsm_strategy – Стратегія кінцевого автомату

  • events_isolation – Ізоляція подій

  • disable_fsm – Відключення кінцевого автомату, зауважте, що при вимкненому кінцевому автоматі вам не слід використовувати сховище та ізоляцію подій

  • kwargs – Інші аргументи будуть передані обробникам як іменовані аргументи

async feed_raw_update(bot: Bot, update: Dict[str, Any], **kwargs: Any) Any[source]

Основна точка входу для подій з автоматичною серіалізацією Dict->Update

Параметри:
  • bot

  • update

  • kwargs

async feed_update(bot: Bot, update: Update, **kwargs: Any) Any[source]

Основна точка входу для подій. Відповідь цього методу може бути використана для відповіді у Webhook

Параметри:
  • bot

  • update

run_polling(*bots: Bot, polling_timeout: int = 10, handle_as_tasks: bool = True, backoff_config: BackoffConfig = BackoffConfig(min_delay=1.0, max_delay=5.0, factor=1.3, jitter=0.1), allowed_updates: List[str] | _SentinelObject | None = sentinel.UNSET, handle_signals: bool = True, close_bot_session: bool = True, tasks_concurrency_limit: int | None = None, **kwargs: Any) None[source]

Запуск кількох ботів із використанням опитування

Параметри:
  • bots – Bot instances (one or more)

  • polling_timeout – Час очікування під час тривалого опитування

  • handle_as_tasks – Запуск завдання для кожної події без очікування результату

  • backoff_config – конфігурація повторів із затримкою

  • allowed_updates – Список типів оновлень, які має отримувати ваш бот

  • handle_signals – обробка сигналів (SIGINT/SIGTERM)

  • close_bot_session – закривати сесії бота під час завершення роботи

  • tasks_concurrency_limit – Maximum number of concurrent updates to process (None = no limit), used only if handle_as_tasks is True

  • kwargs – контекстні дані

Повертає:

async start_polling(*bots: Bot, polling_timeout: int = 10, handle_as_tasks: bool = True, backoff_config: BackoffConfig = BackoffConfig(min_delay=1.0, max_delay=5.0, factor=1.3, jitter=0.1), allowed_updates: List[str] | _SentinelObject | None = sentinel.UNSET, handle_signals: bool = True, close_bot_session: bool = True, tasks_concurrency_limit: int | None = None, **kwargs: Any) None[source]

Запуск виконавця опитування

Параметри:
  • bots – Bot instances (one or more)

  • polling_timeout – Час очікування під час тривалого опитування

  • handle_as_tasks – Запуск завдання для кожної події без очікування результату

  • backoff_config – конфігурація повторів із затримкою

  • allowed_updates – Список типів оновлень, які має отримувати ваш бот. За замовчуванням увімкнені всі використовувані типи оновлень (визначено з обробників)

  • handle_signals – обробка сигналів (SIGINT/SIGTERM)

  • close_bot_session – закривати сесії бота під час завершення роботи

  • tasks_concurrency_limit – Maximum number of concurrent updates to process (None = no limit), used only if handle_as_tasks is True

  • kwargs – контекстні дані

Повертає:

async stop_polling() None[source]

Використовуйте цей метод, якщо хочете зупинити опитування програмно

Повертає:

Просте використання

Приклад:

dp = Dispatcher()

@dp.message()
async def message_handler(message: types.Message) -> None:
    await SendMessage(chat_id=message.from_user.id, text=message.text)

Додавання маршрутизаторів

Приклад:

dp = Dispatcher()
router1 = Router()
dp.include_router(router1)

Обробка оновлень

Усі оновлення можна передати диспетчеру через метод feed_update():

from aiogram import Bot, Dispatcher

async def update_handler(update: Update, bot: Bot, dispatcher: Dispatcher):
  result = await dp.feed_update(bot, update)

Також ви можете передати сирий об’єкт оновлення (словник) до диспетчера через метод feed_raw_update():

from aiogram import Bot, Dispatcher

async def update_handler(raw_update: dict[str, Any], bot: Bot, dispatcher: Dispatcher):
  result = await dp.feed_raw_update(bot, raw_update)