Роутер
aliceio.dispatcher.router.Router
Обработчики могут быть добавлены в наблюдатель двумя способами:
- Через метод:
router.<event_type>.register(handler, <filters, ...>) - Через декоратор:
@router.<event_type>(<filters, ...>)
__init__(*, name: Optional[str] = None) -> None
Параметры:
-
name(Optional[str],None) –Имя роутера, может быть полезно для отладки.
include_router(router: Router) -> Router
include_routers(*routers: Router) -> None
Наблюдатели
Важно
Все хэндлеры всегда должны быть асинхронными. Имя функции-обработчика не имеет значения.
Имя аргумента события (первого аргумента) также не важно, но рекомендуется не перекрывать имя контекстными данными, поскольку функция не может принимать два аргумента с одинаковым именем.
Вот список всех доступных наблюдателей и примеры регистрации хэндлеров.
В этих примерах используется только регистрация через декоратор, но вы всегда можете использовать метод <router>.<event_type>.register(...)
Сообщение (SimpleUtterance)
Нажатие на кнопку
Аудиоплеер
Покупка
Показ шоу
Вложенные роутеры
Событие будет распространять по роутерам и хэндлерам согласно порядку их добавления.
Важно
Роутеры могут быть включены в другие роутеры с некоторыми ограничениями:
- Роутер не может подключить сам себя.
- Роутеры не могут составлять цикл (р1 содержит р2, р2 содержит р3, р3 содерит р1).
Update
Важно
Только диспетчер может обрабатывать события с типом Update.
Примечание
В диспетчере уже есть обработчик этого типа событий, поэтому вы можете использовать его для обработки всех обновлений, которые не обработались другими хэндлерами.