mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-10-21 03:34:19 +00:00
* ci: package releases with drafts in simplex-chat-libs * test release * core: 7.1.0.12 * packages: release nodejs and python libraries * fixes --------- Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
62 lines
1.8 KiB
Markdown
62 lines
1.8 KiB
Markdown
# SimpleX Chat Python library
|
|
|
|
Python 3.11+ client for [SimpleX Chat](https://simplex.chat) bots. Equivalent to the [Node.js library](https://www.npmjs.com/package/simplex-chat).
|
|
|
|
## Install
|
|
|
|
```bash
|
|
pip install simplex-chat
|
|
```
|
|
|
|
The native `libsimplex` is downloaded lazily on first use. To pre-fetch:
|
|
|
|
```bash
|
|
python -m simplex_chat install # sqlite (default)
|
|
python -m simplex_chat install --backend postgres # linux-x86_64 only
|
|
```
|
|
|
|
## Quick start
|
|
|
|
```python
|
|
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`](./examples/squaring_bot.py) for the full example.
|
|
|
|
## Development
|
|
|
|
```bash
|
|
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'`.
|
|
|
|
## License
|
|
|
|
[AGPL-3.0](./LICENSE)
|