# mab **mab** *(MAtrix Bot)* is a **very** simple Python package that can be used to develop **very** simple Matrix bots. I have decided to make something like this because I wasn't satisfied by simplicity and usage of other libraries. So this library does not aim to be "the best matrix bot library", it only aims to be good enough for me. ## Features The package supports the following features: - **Filter-based callback system** - **Images sending** - **Videos sending with automatic thumbnail generation (requires `ffmpeg`)** ## Installation Use `pip` to install this package: ```bash python -m pip install git+https://git.tyukalov.su/nikita/mab@v0.4.0 ``` You should specify package version you want to use, because `main` without tags contains unstable code. ## Basic usage This is the most simple bot you can create. It would respond to any message that contains `hello` and `hi` words. ```python import asyncio from pathlib import Path from mab import MatrixBot, MatrixBotConfig from mab import TextContainsFilter, SenderIsBotFilter from mab.types import RoomEventData async def on_message(data: RoomEventData) -> None: text = f"Your message contains {len(data.event.body)} symbols" await data.bot.send_text(data.room, text) async def main() -> None: # create and start the bot cfg = MatrixBotConfig( matrix_homeserver_url="matrix.domain.su", matrix_username_localpart="nagibator666", storage_directory=Path("storage_nagibator666") ) bot = MatrixBot(matrix_bot_config) bot.add_callback( ~SenderIsBotFilter() & TextContainsFilter(["hello", "hi"]), on_message ) await bot.start() # wait for Ctrl+C try: while True: await asyncio.sleep(1) except: pass # stop the bot await bot.stop() if __name__ == "__main__": asyncio.run(main()) ```