Skip to main content

Simple-Matrix-Bot-Lib

(Version 1.6.x)

Simple-Matrix-Bot-Lib is a Python bot library for the Matrix ecosystem built on matrix-nio.

View on Github or View on PyPi or View docs on readthedocs.io

Learn how you can contribute here.

Installation

To use it, simplematrixbotlib can be either installed from PyPi or downloaded from github.

Installation from PyPi:

python -m pip install simplematrixbotlib

Download from github:

git clone --branch master https://github.com/KrazyKirby99999/simple-matrix-bot-lib.git

Example Usage

import simplematrixbotlib as botlib
import os

creds = botlib.Creds("https://home.server", "user", "pass")
bot = botlib.Bot(creds)

prefix = '!'

async def echo(room, message):
    """
    Example function that "echoes" arguements.
    Usage:
    example_user- !echo say something
    echo_bot- say something
    """
    match = botlib.MessageMatch(room, message, bot)
    if match.not_from_this_bot() and match.prefix(prefix) and match.command("echo"):
        await bot.api.send_text_message(room.room_id, match.args)

bot.add_message_listener(echo)

bot.run()

More examples can be found here.

Features

Complete:

  • Login to homeserver - bot automatically login upon the execution of bot.run()

    import simplematrixbotlib as botlib
    
    creds = botlib.Creds("home.server", "user", "pass")
    bot = botlib.Bot(creds)
    bot.run() #Logs in during the execution of this line
    
  • Join room on invite - bot automatically join rooms that the bot is invited to upon execution of bot.run(), or upon invite if the bot is running

  • Send message - bot can send messages in response to other messages, and can also run other code in response to messages as well as filter the messages that the bot responds to

    import simplematrixbotlib as botlib
    
    creds = botlib.Creds("https://home.server", "user", "pass")
    bot = botlib.Bot(creds)
    
    async def say_something_to_a_message_not_from_bot(room, message): #Must be an "async" function with (room, message) arguments
        if not message.sender == bot.async_client.user_id: #Optional, prevents the bot from reacting to its own messages
            await bot.api.send_text_message(room.room_id, "something") #Send a message containing "something" to room
    bot.add_message_listener(say_something_to_a_message_not_from_bot) #Listen for messages, can have as many message listeners as needed, each added using bot.add_message_listener
    
    bot.run()
    
  • Send images - bot can send image messages

    import simplematrixbotlib as botlib
    
    creds = botlib.Creds("https://home.server", "user", "pass")
    bot = botlib.Bot(creds)
    
    async def send_image_to_a_message_not_from_bot(room, message):
        if not message.sender == bot.async_client.user_id:
            await bot.api.send_image_message(room.room_id, "./example.png") #Send the image file located at ./example.png to room
    bot.add_message_listener(send_image_to_a_message_not_from_bot)
    
    bot.run()
    
  • Execute action based on criteria - "match filters" can be used to specify which messages for the bot to respond to

    import simplematrixbotlib as botlib
    import os
    
    creds = botlib.Creds("https://home.server", "user", "pass")
    bot = botlib.Bot(creds)
    
    prefix = '!' #Create prefix for commands
    
    async def echo(room, message):
        """
        Example function that "echoes" arguements.
        Usage:
        example_user- !echo say something
        echo_bot- say something
        """
        match = botlib.MessageMatch(room, message, bot) #Create an object of the botlib.MessageMatch class
        if match.not_from_this_bot() and match.prefix(prefix) and match.command("echo"): #Add match filters
            await bot.api.send_text_message(room.room_id, match.args)#Execute action
    bot.add_message_listener(echo)
    
    bot.run()
    
  • Preserve sessions - Sessions are now preserved between logins. The access token and device id are now saved in sessions.txt, unless specified otherwise.

    import simplematrixbotlib as botlib
    import os
    
    creds = botlib.Creds("https://home.server", "user", "pass", None) #Disable preserved sessions
    bot = botlib.Bot(creds)
    
    prefix = '!'
    
    async def echo(room, message):
        """
        Example function that "echoes" arguements.
        Usage:
        example_user- !echo say something
        echo_bot- say something
        """
        match = botlib.MessageMatch(room, message, bot)
        if match.not_from_this_bot() and match.prefix(prefix) and match.command("echo"):
            await bot.api.send_text_message(room.room_id, match.args)
    bot.add_message_listener(echo)
    
    bot.run()
    
  • Add choice of actions to execute at bot login - Execute action after logging in

    import simplematrixbotlib as botlib
    import os
    
    creds = botlib.Creds("https://home.server", "random_bot", "pass")
    bot = botlib.Bot(creds)
    
    prefix = '!'
    
    async def hello(room_id): #Must be an "async" function with a (room_id) argument
        """
        Example function that says "hello" when the bot is started.
        Usage:
        (start random_bot)
        random_bot - hello
        """
        message = "hello"
        await bot.api.send_text_message(room_id, message) #Example of sending a message
    
    bot.add_startup_action(hello) #Add "hello" action to action to execute at login
    
    bot.run()
    

In Progress:

  • Add more examples

  • Improve Documentation

Planned:

  • Add more match filters

  • Support for Encrypted Rooms

  • More

Dependencies

Python:

  • matrix-nio >= 0.18.2

External:

  • Python >= 3.7

Metadata

Release files for simplematrixbotlib 1.6.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 simplematrixbotlib 1.6.0
File Size Uploaded
simplematrixbotlib-1.6.0.tar.gz 8.8 kB Details

Built distribution (wheel)

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

Total release size: 17.6 kB

Release files / simplematrixbotlib-1.6.0.tar.gz

Download URL simplematrixbotlib-1.6.0.tar.gz
Size 8.8 kB
Tags Source
SHA-256 checksum
How to use checksums
0d4ba8408ff231366019f69b88c9f0305cc2bddf0b46a7fa802fff92ef3a2d1b
BLAKE2b-256 checksum
How to use checksums
84cca6f26f8679ab6e5d13462f064eb5c43fa6a0480f00e5b272ec795e7855ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6

Release files / simplematrixbotlib-1.6.0-py3-none-any.whl

Download URL simplematrixbotlib-1.6.0-py3-none-any.whl
Size 8.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2f203c1504474ffd45c21899660735902300957eaf52bae3482048ed1bf6b672
BLAKE2b-256 checksum
How to use checksums
4986d07096d1d40782bccedc3500be14205156a36183da32da80623665f1af10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6

Release history Release notifications | RSS feed

2.13.1

2 release files

2.13.0

2 release files

2.12.2

2 release files

2.12.1

2 release files

2.12.0

2 release files

2.11.0

2 release files

2.10.3

2 release files

2.10.2

2 release files

2.10.1

2 release files

2.9.1

2 release files

2.9.0

2 release files

2.8.0

2 release files

2.7.4

2 release files

2.7.3

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.4

2 release files

2.6.3

2 release files

2.6.2

2 release files

2.6.1

2 release files

2.6.0

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

This release

1.6.0 This release

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.0.2

2 release files

0.0.1

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