This release is a pre-release and may not be stable for production use.
SimpleX Chat Python library
Python 3.11+ client for SimpleX Chat bots. Equivalent to the Node.js library.
Install
pip install simplex-chat
The native libsimplex is downloaded lazily on first use. To pre-fetch:
python -m simplex_chat install # sqlite (default)
python -m simplex_chat install --backend postgres # linux-x86_64 only
Quick start
import re
from simplex_chat import Bot, BotProfile, Message, SqliteDb, TextMessage
bot = Bot(
profile=BotProfile(display_name="Squaring bot"),
db=SqliteDb(file_prefix="./squaring_bot"),
welcome="Send me a number, I'll square it.",
)
@bot.on_message(content_type="text", text=re.compile(r"^-?\d+(\.\d+)?$"))
async def square(msg: TextMessage) -> None:
n = float(msg.text or "0")
await msg.reply(f"{n} * {n} = {n * n}")
@bot.on_message(content_type="text")
async def fallback(msg: Message) -> None:
await msg.reply("Send me a number, like 7 or 3.14.")
if __name__ == "__main__":
bot.run()
bot.run() blocks. The connection address is logged on startup — paste it into a SimpleX client to talk to the bot. Ctrl+C to stop.
Three decorators: @bot.on_message(...), @bot.on_command(name), @bot.on_event(tag). Message handlers are first-match-wins in registration order, so register specific filters first and catch-alls last.
See examples/squaring_bot.py for the full example.
Development
uv venv && source .venv/bin/activate
uv pip install -e '.[dev]'
ruff check && pyright && pytest tests/
Wire types under src/simplex_chat/types/_*.py are generated. Regenerate with cabal test simplex-chat-test --test-options='--match Python'.
Release
Manual for now. Bump _version.py:__version__, build a wheel, upload to PyPI:
uv build --wheel
uv publish --token "$PYPI_TOKEN"
License
Release files for simplex-chat 7.1.0b2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| simplex_chat-7.1.0b2-py3-none-any.whl | Python 3 | none | any | Details |
Release files / simplex_chat-7.1.0b2-py3-none-any.whl
| Download URL | simplex_chat-7.1.0b2-py3-none-any.whl |
|---|---|
| Size | 74.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5d1cfe8c7343301dcf3e256fdc7300eb198afc0c21ca712295a5899e06057636
|
|
BLAKE2b-256 checksum How to use checksums |
aebe3fc8f94b7abe119564dc42c620201b1fa3f9d2fdec09e84b1a4fe266c0f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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":null}
|