Skip to content

hampta/donatello-py

Repository files navigation

Donatello-py logo
PyPi Version PyPi Python versions
Read the Docs PyPi Downloads PyPi License

🐍 Python wrapper for the Donatello API.

✨ Features

  • Full type hints
  • Client info
  • Get donates
  • Get clients
  • Long polling
  • Async support

🔗 Installation

pip install donatello-py

For speedup:

pip install donatello-py[speed]

🧑‍🏭 Basic Usage

Get and activate your API key here.

⛓️ Sync

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

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 and get widget id from url.

Example url:

https://donatello.to/widget/<WIDGET_ID>/token/<YOUR_API_KEY>

Code example

⛓️ Sync

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

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.

📝 Examples

You can find more examples here.

📄 License

MIT

📋 TODO

  • Add more examples

  • 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.