Handlers

Plugins can register various types of handlers using decorators from the maubot.handlers module.

Currently, there are three types of handlers:

  • command for conveniently defining command handlers.
  • event for handling raw Matrix events.
  • web for adding custom HTTP endpoints.

Splitting handlers into multiple files

By default, maubot will only scan the plugin's main class for decorated methods. If you want to split handlers into multiple files, you'll have to use the register_handler_class method.

second_handler.py:

from maubot import MessageEvent
from maubot.handlers import command


class SecondHandlerClass:
  @command.new()
  async def example(self, evt: MessageEvent) -> None:
    pass

__init__.py:

from maubot import Plugin
from .second_handler import SecondHandlerClass


class SplitBot(Plugin):
  async def start(self) -> None:
    handler = SecondHandlerClass()
    self.register_handler_class(handler)