Making matrix bots simple
Project description
Nio-Bot
Making Matrix bots simple
Installing
You can install the latest stable release from PyPi:
pip install nio-bot
# Or for cutting-edge releases:
# pip install --pre nio-bot
You may also want some extras:
- End-to-End encryption support:
nio-bot[e2ee]
- The CLI (recommended):
nio-bot[cli]
- Both:
nio-bot[cli,e2ee]
- Development dependencies:
nio-bot[dev]
Please note that e2ee
uses olm
, which depends on libolm
. You can likely install this though your system package manager.
Features
Nio-Bot is built on the solid client library, matrix-nio. This means that you get the full experience of a Matrix client, with the added benefit of being able to easily create bots.
Nio-Bot comes with a whole host of features to help make your development experience as easy as possible. Some features include, but are not limited to:
- A powerful commands framework (Modules, aliases, checks, easy extensibility)
- Custom argument parser support
- A flexible event system
- Simple end-to-end encryption
- Automatic markdown rendering when sending/editing messages
- Super simple to use Attachments system
- Very customisable monolithic client instance
- A simple, easy-to-use CLI tool for some on-the-go tasks
- Full attachment support (File, Image, Audio, Video), with encryption support
- In-depth, simple, clean documentation
Help
You can join our Matrix Room for help, or to just chat. You can also get the latest updates in development there, including having your say in how new things are implemented!
A quick example
# This example was written using version 1.1.0.
import niobot
client = niobot.NioBot(
# Note that all of these options other than the following are optional:
# * homeserver
# * user_id
# * command_prefix
homeserver="https://matrix.example.org", # it is important that you use the matrix server, not the delegation URL
user_id="@example1:example.org",
device_id="my-device-name",
command_prefix="!",
case_insensitive=True,
owner_id="@example2:example.org",
ignore_self=True # default is True, set to false to not ignore the bot's own messages
)
@client.on_event("ready")
async def on_ready(sync_result: niobot.SyncResponse):
print("Logged in!")
# A simple command
@client.command()
async def ping(ctx: niobot.Context):
latency = ctx.latency
await ctx.respond(f"Pong! {latency:.2f}ms")
# A command with arguments
@client.command()
async def echo(ctx: niobot.Context, *, message: str):
await ctx.respond("You said: " + message)
client.run(access_token="...")
Using the CLI to get an access token
If you install the cli extras, you can use niocli
to get an access token
from a username and password (read this for why you'd want to use an access token):
niocli get-access-token -U '@example1:example.org' -D 'my-device-name'
After putting in your password, an access token will be printed to the console once the login is successful.
Further reading
Look at the docs for more information on how to use Nio-Bot, or the examples on github.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file nio_bot-1.2.0a1.tar.gz
.
File metadata
- Download URL: nio_bot-1.2.0a1.tar.gz
- Upload date:
- Size: 1.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4d9f1cdecf6f033990c21eb7f0661b1c2ea87a628dca059e635cc43e14ca0eb |
|
MD5 | f4ba179dfc420fa04149749a92959370 |
|
BLAKE2b-256 | 069f66b6774c1407048c33c1d0c7c4085399c9479135e971efc929050cb89a49 |
File details
Details for the file nio_bot-1.2.0a1-py3-none-any.whl
.
File metadata
- Download URL: nio_bot-1.2.0a1-py3-none-any.whl
- Upload date:
- Size: 1.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca4071fa0398c48a89eba285d2c555de9c7657386cf571794a7ec523a2191103 |
|
MD5 | b04919df33a9cee4c9d8d9c47835f8cf |
|
BLAKE2b-256 | 83460834a6848bed669ca347b10d61e941e055c75c0d3de7476dfc5f9b55aadd |