https://github.com/hampta/donatello-py
Simple python wrapper for the Donatello API.
https://github.com/hampta/donatello-py
api asynchronous asyncio asyncio-api-wrapper donatello python python3 ukraine wrapper-api
Last synced: 3 months ago
JSON representation
Simple python wrapper for the Donatello API.
- Host: GitHub
- URL: https://github.com/hampta/donatello-py
- Owner: hampta
- License: mit
- Created: 2023-10-05T18:30:35.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-08-23T18:15:44.000Z (6 months ago)
- Last Synced: 2025-10-29T20:59:58.773Z (4 months ago)
- Topics: api, asynchronous, asyncio, asyncio-api-wrapper, donatello, python, python3, ukraine, wrapper-api
- Language: Python
- Homepage: https://donatello-py.hampta.pp.ua
- Size: 792 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## ✨ Features
- Full type hints
- Client info
- Get donates
- Get clients
- Long polling
- Async support
## 🔗 Installation
```bash
pip install donatello-py
```
For speedup:
```bash
pip install donatello-py[speed]
```
## 🧑🏭 Basic Usage
Get and activate your API key [here](https://donatello.to/panel/doc-api).
#### ⛓️ Sync
```python
from donatello import Donatello
client = Donatello("YOUR_API_KEY")
# Get client info
print(client.get_me())
# Get donates
print(client.get_donates(page=0, per_page=00))
# Get clients
print(client.get_clients())
```
#### ⛓️ Async
```python
from donatello import AsyncDonatello
client = AsyncDonatello("YOUR_API_KEY")
async def main():
print(await client.get_me())
print(await client.get_donates(page=0, per_page=00))
print(await client.get_clients())
asyncio.run(main())
```
## 🥏 Long polling
For use long polling you need to create widget [here](https://donatello.to/panel/alert-widget) and get widget id from url.
### Example url:
```
https://donatello.to/widget//token/
```
### Code example
#### ⛓️ Sync
```python
from donatello import Donatello
from donatello.models import Donate, User
client = Donatello("YOUR_API_KEY", "WIDGET_ID")
@client.on_ready
def start(user: User):
print(f"Started with user {user.nickname}")
print(f"Donates Amount: {user.donates.total_amount}")
print(f"Donates count: {user.donates.total_count}")
@client.on_donate
def donate(donate: Donate):
print(donate)
client.start()
```
#### ⛓️ Async
```python
from donatello import AsyncDonatello
from donatello.models import Donate, User
client = AsyncDonatello("YOUR_API_KEY", "WIDGET_ID")
@client.on_donate
async def donate(donate):
print(f"Donator: {donate.nickname}")
print(f"Amount: {donate.amount} {donate.currency} / {donate.goal_amount} {donate.goal_currency}")
print(f"Message: {donate.message}")
@client.on_ready
async def ready(user):
print(user)
client.start()
```
## 📚 Docs
You can find docs [here](https://donatello-py.readthedocs.io/en/latest/).
## 📝 Examples
You can find more examples [here](https://github.com/hampta/donatello-py/tree/main/examples).
## 📄 License
[MIT](https://choosealicense.com/licenses/mit/)
## 📋 TODO
- [x] Add more examples
- [x] Add docs
- [ ] Add tests
- [ ] Websocket based long polling
- [ ] ~~Goal, Top, interactive widgets?~~ Never
## 🤝 Contributing
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.