Перейти к содержанию

Роутеры

Без роутеров существование ботов в VKWave невозможно. Это одна из важнейших сущностей в вашем боте.

Другими словами, ваш бот это просто набор роутеров с фильтрами.

Следовательно, вы можете разбить бота по файлам. Разбитие бота по файлам

Пособие по роутерам

Создание:

from vkwave.bots import DefaultRouter

router = DefaultRouter()  # also you can pass here filters
# it can be like: router = Router(SomeFilter(...))

Как регистрировать хендлеры?

Больше о хендлерах вы можете узнать в handlers.md.

r = router.registrar  # just a shortcut
handler = r.new().with_filters(lambda event: event.object.object.message.text.lower() == "hi there").handle("hey!")  # here we are creating the handler that answers 'hey' to messages with content 'hi there'
r.register(handler)  # and.. we register it.

Также можно использовать декораторы.

@r.with_decorator(lambda event: event.object.object.message.text.lower() == "hi there")
def handler(event: BaseEvent) -> str:
    return "Hey!"

Есть еще один способ делать это, но он не нужен для повсеместного использования.

registrar роутера имеет опцию для установки стандартных фильтров. Она добавляет фильтр ко всем хендлерам в роутере.

router.registrar.add_default_filter(SomeFilter(...))

И наконец, как добавить роутер в диспатчер (dispatcher.md, please).

dp.add_router(router)

Разбивка бота по файлам

Для разбивки бота по файлам вам нужно создать в каждом файле по роутеру и добавить туда хендлеры, далее просто объединить все в главном файле путем добавления всех роутеров в диспатчер.

Пример бота