Metadata-Version: 2.4
Name: exonware-xwbots
Version: 0.0.1.11
Summary: Multi-platform bot framework for the eXonware ecosystem
Author-email: eXonware Backend Team <connect@exonware.com>
License: Apache-2.0
Project-URL: Homepage, https://github.com/exonware/xwbots
Project-URL: Documentation, https://github.com/exonware/xwbots/docs
Project-URL: Repository, https://github.com/exonware/xwbots
Project-URL: Issues, https://github.com/exonware/xwbots/issues
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: lazy
Requires-Dist: exonware-xwlazy==1.0.1.81; extra == "lazy"
Provides-Extra: api
Requires-Dist: fastapi>=0.104.0; extra == "api"
Requires-Dist: uvicorn[standard]>=0.24.0; extra == "api"
Provides-Extra: full
Requires-Dist: fastapi>=0.104.0; extra == "full"
Requires-Dist: uvicorn[standard]>=0.24.0; extra == "full"
Requires-Dist: cachebox; extra == "full"
Requires-Dist: cachetools; extra == "full"
Requires-Dist: pylru; extra == "full"
Requires-Dist: msgspec; extra == "full"
Requires-Dist: orjson; extra == "full"
Requires-Dist: hyperlight_hyperjson; extra == "full"
Requires-Dist: json5; extra == "full"
Requires-Dist: PyYAML; extra == "full"
Requires-Dist: tomli-w; extra == "full"
Requires-Dist: xmltodict; extra == "full"
Requires-Dist: dicttoxml; extra == "full"
Requires-Dist: msgpack; extra == "full"
Requires-Dist: cbor2; extra == "full"
Requires-Dist: pymongo; extra == "full"
Requires-Dist: httpx; extra == "full"
Requires-Dist: brotli; extra == "full"
Requires-Dist: zstandard; extra == "full"
Requires-Dist: rich; extra == "full"
Requires-Dist: attrs; extra == "full"
Requires-Dist: tomli; extra == "full"
Requires-Dist: pydantic; extra == "full"
Requires-Dist: email-validator; extra == "full"
Requires-Dist: python-multipart; extra == "full"
Requires-Dist: ujson; extra == "full"
Requires-Dist: requests; extra == "full"
Requires-Dist: numpy; extra == "full"
Requires-Dist: scikit-learn; extra == "full"
Requires-Dist: cython; extra == "full"
Requires-Dist: lz4; extra == "full"
Requires-Dist: uarray; extra == "full"
Requires-Dist: pandas; extra == "full"
Requires-Dist: pyarrow; extra == "full"
Requires-Dist: cloudpickle; extra == "full"
Requires-Dist: pytz; extra == "full"
Requires-Dist: numexpr; extra == "full"
Requires-Dist: bottleneck; extra == "full"
Provides-Extra: dev
Requires-Dist: exonware-xwbots[full]==0.0.1.11; extra == "dev"
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: isort>=5.12.0; extra == "dev"
Dynamic: license-file

# xwbots

**Multi-platform bot framework.** Single API for Telegram, Discord, Slack; commands, lifecycle, crash recovery; integration with xwstorage, xwauth, xwentity, xwaction, xwai. Per project docs.

*Full features and examples: [README_LONG.md](README_LONG.md).*

**Company:** eXonware.com · **Author:** eXonware Backend Team · **Email:** connect@exonware.com  

[![Status](https://img.shields.io/badge/status-alpha-orange.svg)](https://exonware.com)
[![Python](https://img.shields.io/badge/python-3.12%2B-blue.svg)](https://www.python.org)
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)

---

## 📦 Install

```bash
pip install exonware-xwbots
# Optional: [lazy] or [full]
pip install exonware-xwbots[lazy]
pip install exonware-xwbots[full]
```

---

## 🚀 Quick start

For **Telegram**, use **xwchat** directly (xwbots does not ship a platform adapter; xwchat owns the transport):

```python
from exonware.xwchat import Telegram as TelegramChatProvider

provider = TelegramChatProvider(api_token="your-telegram-key")
provider.set_message_handler(lambda ctx: "Hello!")  # or wire an XWBotCommand
import asyncio
asyncio.run(provider.start_listening())
```

See [examples/](examples/) for Karizma and Parrot bots that wire xwchat + command handlers.

---

## ✨ What you get

| Area | What's in it |
|------|----------------|
| **Platforms** | Telegram via **xwchat** (use xwchat's provider directly; see examples). |
| **Commands** | Command framework; xwaction integration; role-based access (xwauth). |
| **Lifecycle** | Start, stop, restart; crash recovery. |
| **Ecosystem** | xwstorage, xwauth, xwentity, xwaction, xwai. |

---

## 🛠️ Development (editable xwchat)

XWBots uses **xwchat** for Telegram. To work on both with live changes:

- **Recommended (exonware repo):** From repo root, run the shared venv script so the xwbots `.venv` gets all xw libs (including xwchat) in editable mode:
  ```bash
  python scripts/venvs/setup_venvs.py --packages-only
  ```
  Then activate `xwbots/.venv` and use it; xwchat will be installed as `-e ../xwchat`.

- **If you created xwbots' venv manually:** Ensure xwchat is editable in the current environment:
  ```bash
  # From exonware repo root or from xwbots
  python xwbots/scripts/ensure_editable_xwchat.py
  ```

---

## 📖 Docs and tests

- **Start:** [docs/INDEX.md](docs/INDEX.md) or [docs/](docs/).
- **Tests:** Run from project root per project layout.

---

## 📜 License and links

MIT — see [LICENSE](LICENSE). **Homepage:** https://exonware.com · **Repository:** https://github.com/exonware/xwbots  


## ⏱️ Async Support

<!-- async-support:start -->
- xwbots includes asynchronous execution paths in production code.
- Source validation: 56 async def definitions and 28 await usages under src/.
- Use async APIs for I/O-heavy or concurrent workloads to improve throughput and responsiveness.
<!-- async-support:end -->
Version: 0.0.1.11 | Updated: 18-Apr-2026

*Built with ❤️ by eXonware.com - Revolutionizing Python Development Since 2025*
