Skip to main content

Aiomatter Bot

Aiomatter is a Python library for creating a bot that interacts with Mattermost via its API and WebSocket. This README provides instructions on setting up the bot and an example of a greeting plugin.

Table of Contents

Installation

To install Aiomatter, use pip:

pip install aiomatter

Configuration

To configure the bot, you need to create a settings object with the following parameters:

  • bot_token: Your Mattermost bot token.
  • base_url: The base URL of your Mattermost server.
  • api_path: The API path (default is /api/v4).

Example:

from aiomatter.settings import Settings

settings = Settings(
    bot_token='your_bot_token',
    base_url='https://chat.yourserver.com',
    api_path='/api/v4'
)

Running the Bot

To run the bot, create an instance of the Bot class and call the run method:

from aiomatter.bot import Bot
from aiomatter.settings import Settings
from plugins import MyPlugin  # Your plugin

def get_bot() -> Bot:
    settings = Settings(
        bot_token='your_bot_token',
        base_url='https://chat.yourserver.com',
        api_path='/api/v4'
    )
    
    plugins = [MyPlugin()]

    return Bot(settings=settings, plugins=plugins)

if __name__ == '__main__':
    bot = get_bot()
    bot.run()

Example Greeting Plugin

The following example demonstrates a simple greeting plugin that responds to the POSTED event.

from aiomatter.plugin import Plugin
from aiomatter.wrappers import listen
from aiomatter.events import EventType
from aiomatter.schemas.events import PostEvent

class MyPlugin(Plugin):

    @listen(EventType.POSTED)
    async def hello(self, event: PostEvent):
        channel_id = event.data.post.channel_id  # Access channel_id from the typed event
        if channel_id:
            await self.driver.send_message(
                channel_id=channel_id,
                message='Hello!'
            )
            self.logger.info(f"Message sent to channel {channel_id}.")

Note on Typing

In the plugin methods, the decorator processes the event and returns a typed event instead of a generic event. This enhances type safety and improves code readability.

License

This project is licensed under the MIT License.

Author

Vladimir Savelev - GitHub Profile Polina Grunina - GitHub Profile

Release files for aiomatter 0.2.0

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

Source distribution (sdist)

Source distribution for aiomatter 0.2.0
File Size Uploaded
aiomatter-0.2.0.tar.gz 13.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aiomatter 0.2.0
File Interpreter ABI Platform
aiomatter-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 30.7 kB

Release files / aiomatter-0.2.0.tar.gz

Download URL aiomatter-0.2.0.tar.gz
Size 13.9 kB
Tags Source
SHA-256 checksum
How to use checksums
7f83f80db773442d2dfb14a6fc4c2ab4bdbae157214b0935c40526e6e1be4b11
BLAKE2b-256 checksum
How to use checksums
9b710eaf499d055ea3bc6b0c24f4f35716dd387d56f3d3b4e919c03247f4568e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.11.1

Release files / aiomatter-0.2.0-py3-none-any.whl

Download URL aiomatter-0.2.0-py3-none-any.whl
Size 16.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7b205b020382dbf77e58a6f8907ff35b575ca3fda537ba786e0226db62bc009b
BLAKE2b-256 checksum
How to use checksums
353aa4d863e27774d3e80d097930a8ddb5a93461f80699d5318e274499a79470
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.11.1

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.1

2 release files

0.1.0

2 release files

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