Skip to main content

evoid-maubot

EVOID adapter for maubot — generic framework for building Matrix bots with EVOID IOP.

What It Does

Provides a base EvoidMaubot class that handles:

  • Matrix event → EVOID Intent conversion
  • Command routing and permission checking
  • SQLite/Smart Storage initialization
  • EVOID service lifecycle (start/stop)

Jitsi-specific commands are NOT included — they live in matrix-jitsi-bot/services/matrixbot/.

Installation

pip install evoid-maubot
# With storage
pip install evoid-maubot[storage]

Quick Start

# mybot.py
from evoid_maubot import EvoidMaubot
from evoid_maubot.commands import CommandDef, COMMAND_REGISTRY, parse_required_one

# Define your commands
COMMAND_REGISTRY.update({
    "greet": CommandDef(
        description="Greet someone",
        usage="<name>",
        category="Social",
        arg_parser=parse_required_one,
    ),
})

class MyBot(EvoidMaubot):
    def _command_prefix(self) -> str:
        return "mybot"  # !mybot greet Alice

    def _intent_prefix(self) -> str:
        return "mybot"  # Intent: mybot:greet

    def _make_handler(self, cmd_name: str):
        async def handler(intent):
            name = intent.metadata.get("args", {}).get("value", "world")
            return {"status": "executed", "greeting": f"Hello, {name}!"}
        return handler

    def _make_intent(self, subcommand, cmd_def, args, event):
        intent = super()._make_intent(subcommand, cmd_def, args, event)
        intent.metadata["custom_field"] = "value"
        return intent

# Register as maubot plugin
def setup():
    return MyBot

Configuration

service_name: mybot
command_prefix: mybot

storage:
  db_path: mybot.db
  enable_smart_routing: true
  smart_mapping:
    mydata: storage.sqlite
  smart_schemas:
    mydata: ["id", "field1", "field2"]

admin_whitelist:
  - "@admin:example.com"

Architecture

Matrix Event (!mybot greet Alice)
         ↓
EvoidMaubot.on_message() — Adapter
         ↓
Intent(name="mybot:greet", level=STANDARD, metadata={...})
         ↓
EVOID Pipeline: validate → authorize → handler
         ↓
Handler returns: {"greeting": "Hello, Alice!"}
         ↓
Matrix Reply

Extending

Override these methods in your subclass:

Method Purpose
_command_prefix() Matrix command prefix (default: "bot")
_intent_prefix() EVOID intent namespace (default: "bot")
_register_intents() Register custom intents
_make_handler(cmd) Create EVOID handler for command
_make_intent(...) Build Intent from command
_on_command(event, args) Custom command dispatch
_on_result(cmd, args, event, result) Post-result hook (persistence)
_is_moderator(user_id) Moderator check
_help_text() Custom help output

Storage

Optional persistence via evoid-sqlite and evoid-smart-storage:

pip install evoid-maubot[storage]

Configure storage.smart_mapping and storage.smart_schemas in config.

Development

uv venv && uv pip install -e ".[dev]"
ruff check evoid_maubot/
ruff format evoid_maubot/
pytest tests/ -v

License

Apache-2.0

Release files for evoid-maubot 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for evoid-maubot 1.0.0
File Interpreter ABI Platform
evoid_maubot-1.0.0-py3-none-any.whl Python 3 none any Details

Release files / evoid_maubot-1.0.0-py3-none-any.whl

Download URL evoid_maubot-1.0.0-py3-none-any.whl
Size 6.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
37d5f19e78ca0fcac1843a7e83595d81d8dca187aa304164ba7f16b1abc94afc
BLAKE2b-256 checksum
How to use checksums
a99b7624c35a234ed2bf32df8e6e913825d7eb1c88c4699ddeb954f2620929dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 release file

0.2.1

1 release file

0.2.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page