Dispatcher#

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 found in next pages:

class aiogram.dispatcher.dispatcher.Dispatcher(storage: Optional[aiogram.fsm.storage.base.BaseStorage] = None, fsm_strategy: aiogram.fsm.strategy.FSMStrategy = FSMStrategy.USER_IN_CHAT, events_isolation: Optional[aiogram.fsm.storage.base.BaseEventIsolation] = None, disable_fsm: bool = False, **kwargs: Any)[source]#

Root router

__init__(storage: Optional[aiogram.fsm.storage.base.BaseStorage] = None, fsm_strategy: aiogram.fsm.strategy.FSMStrategy = FSMStrategy.USER_IN_CHAT, events_isolation: Optional[aiogram.fsm.storage.base.BaseEventIsolation] = None, disable_fsm: bool = False, **kwargs: Any) None[source]#

Root router

Parameters
  • storage – Storage for FSM

  • fsm_strategy – FSM strategy

  • events_isolation – Events isolation

  • disable_fsm – Disable FSM, note that if you disable FSM then you should not use storage and events isolation

  • kwargs – Other arguments, will be passed as keyword arguments to handlers

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

Main entry point for incoming updates with automatic Dict->Update serializer

Parameters
  • bot

  • update

  • kwargs

async feed_update(bot: aiogram.client.bot.Bot, update: aiogram.types.update.Update, **kwargs: Any) Any[source]#

Main entry point for incoming updates Response of this method can be used as Webhook response

Parameters
  • bot

  • update

run_polling(*bots: aiogram.client.bot.Bot, polling_timeout: int = 30, handle_as_tasks: bool = True, backoff_config: aiogram.utils.backoff.BackoffConfig = BackoffConfig(min_delay=1.0, max_delay=5.0, factor=1.3, jitter=0.1), allowed_updates: Optional[List[str]] = None, **kwargs: Any) None[source]#

Run many bots with polling

Parameters
  • bots – Bot instances

  • polling_timeout – Poling timeout

  • backoff_config

  • handle_as_tasks – Run task for each event and no wait result

  • allowed_updates – List of the update types you want your bot to receive

  • kwargs – contextual data

Returns

async start_polling(*bots: aiogram.client.bot.Bot, polling_timeout: int = 10, handle_as_tasks: bool = True, backoff_config: aiogram.utils.backoff.BackoffConfig = BackoffConfig(min_delay=1.0, max_delay=5.0, factor=1.3, jitter=0.1), allowed_updates: Optional[List[str]] = None, **kwargs: Any) None[source]#

Polling runner

Parameters
  • bots

  • polling_timeout

  • handle_as_tasks

  • kwargs

  • backoff_config

  • allowed_updates

Returns

Simple usage#

Example:

dp = Dispatcher()

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

Including routers

Example:

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

Handling updates#

All updates can be propagated to the dispatcher by Dispatcher.feed_update(bot=..., update=...) method:

bot = Bot(...)
dp = Dispathcher()

...

result = await dp.feed_update(bot=bot, update=incoming_update)