Add readme and change to relative path import

main
Adib Pratama 5 days ago
parent 29a0bdae77
commit feaf25ba3b
No known key found for this signature in database
GPG Key ID: 7C855EE276A46D2C
  1. 61
      README.md
  2. 0
      src/__init__.py
  3. 2
      src/nanobot.py
  4. 6
      src/server.py
  5. 2
      src/xmpp.py

@ -0,0 +1,61 @@
# F3 Picoclaw XMPP
An XMPP chatbot bridge that connects an XMPP account to a Nanobot AI backend via WebSocket.
## Features
- Listens for messages in XMPP chat rooms and direct messages
- Responds when mentioned (`@botname`) in group chats
- Replies to all direct messages automatically
- Streams AI responses from Nanobot WebSocket API
- Configurable logging levels
## Requirements
- Python >= 3.10
- [uv](https://docs.astral.sh/uv/) package manager
## Setup
```bash
# Install dependencies
uv sync
# Configure environment
cp .env.example .env
# Edit .env with your XMPP credentials and Nanobot endpoint
```
## Environment Variables
| Variable | Description |
|---|---|
| `XMPP_USERNAME` | Full JID for the XMPP bot account |
| `XMPP_PASSWORD` | XMPP account password |
| `XMPP_ROOMS` | Comma-separated list of MUC rooms to join |
| `NANOBOT_WS_ENDPOINT` | WebSocket URL of the Nanobot AI server |
| `NANOBOT_WS_TOKEN` | Authentication token for the Nanobot |
| `DEBUG` | Logging level: `debug`, `info`, `warn`, `error`, `critical` |
## Usage
```bash
# Run the XMPP-to-Nanobot bridge
uv run python -m src.server
```
## Project Structure
```
src/
├── server.py # Main entry point - bridges XMPP and Nanobot
├── xmpp.py # XMPP bot client (slixmpp)
├── nanobot.py # Nanobot WebSocket client
└── log.py # Logging configuration
```
## Tech Stack
- Python 3.14 / asyncio
- [slixmpp](https://github.com/poezio/slixmpp) for XMPP
- [websockets](https://github.com/aaugustin/websockets) for WebSocket communication

@ -4,7 +4,7 @@ import os
import websockets import websockets
from log import main_logger from .log import main_logger
NANOBOT_WS_ENDPOINT = os.getenv("NANOBOT_WS_ENDPOINT") NANOBOT_WS_ENDPOINT = os.getenv("NANOBOT_WS_ENDPOINT")
NANOBOT_WS_TOKEN = os.getenv("NANOBOT_WS_TOKEN") NANOBOT_WS_TOKEN = os.getenv("NANOBOT_WS_TOKEN")

@ -1,9 +1,9 @@
import asyncio import asyncio
import os import os
from nanobot import Nanobot from .nanobot import Nanobot
from xmpp import XmppBot from .xmpp import XmppBot
from log import main_logger from .log import main_logger
async def main(): async def main():

@ -1,7 +1,7 @@
import os import os
import slixmpp import slixmpp
from log import main_logger from .log import main_logger
class XmppBot(slixmpp.ClientXMPP): class XmppBot(slixmpp.ClientXMPP):

Loading…
Cancel
Save