Asynchronous wrapper for UnbelievaBoat's API written in python
Project description
unbelipy
Asynchronous wrapper for UnbelievaBoat's API written in python
Characteristics
- Easy to use
- Full error handling
- Type hinted readable code
Project status
Early beta. It's not yet production ready. Although most of the functionality is operational rate limits are still being worked on.
Installation
pip install unbelipy
Use:
from unbelipy import UnbeliClient
import asyncio
TOKEN = "Token generated through Unbelievaboat's portal"
client = UnbeliClient(token=TOKEN)
async def main():
# get guild information
guild_info = await client.get_guild(guild_id=305129477627969547)
print(guild_info)
# get guild leaderboard
guild_leaderboard = await client.get_leaderboard(guild_id=305129477627969547)
print(guild_leaderboard)
# get user balance
balance = await client.get_balance(guild_id=305129477627969547, member_id=80821761460928512)
print(balance)
# put balance (set to x amount)
balance = await client.set_balance(guild_id=305129477627969547,
member_id=80821761460928512,
cash=1000,
reason="Showing off put method")
# patch balance (increment or decrement by x amount)
balance = await client.edit_balance(guild_id=305129477627969547,
member_id=80821761460928512,
cash=-500,
reason="Showing off patch method")
print(balance)
asyncio.run(main())
"balance" is a returned Dataclass with balance information containing:
- total: total amount of currency (cash + bank)
- bank: amount in bank
- cash: amount in cash
- user_id: id of the user for which the amount is set
- guild_id: id for the guild the user belongs to
- rank: rank of the user in the guild according to query parameters
"guild_info" is a dataclass with guild info containing:
- id
- name
- icon
- owner_id
- member_count
- symbol (currency)
UnbeliClient init parameters:
token
unbelivaboat's client token.prevent_rate_limits
(bool) if enabled (True, the default) the client will do its best to prevent 429 type errors (rate limits). This will work even on concurrent tasts or loops.retry_rate_limits
(bool) if enabled (True, default is False) the client will retry requests after getting a 429 error. It will sleep through the retry_after time stipulated by UnbelivaBoat's API
UnbeliClient public attributes
rate_limits
: this class features attributes about the state of each route. They Update after each request. Bucket Attributes. Each of the following contain an async context manager to prevent 429s in case its enabled and contain information about the specific route rate limit headers.rate_limits.get_balance
rate_limits.edit_balance
rate_limits.set_balance
rate_limits.get_leaderboard
rate_limits.get_guild
rate_limits.get_permissions
rate limit Methods:rate_limits.currently_limited()
- returns a dictionary containing the bucket name, and a boolean indicating if they're currently limitedrate_limits.any_limited()
- returns a bool indicating if any bucket is currently being limitedrate_limits.is_limited(name: str)
- returns a bool indicating if the specified bucket is being limited
Know Issues:
'-Infinity'
is accepted by the API as a parameter for cash or bank (edit_balance and set_balance), but it does not appear to affect the balance. I'm waiting on the devs word on this issue.client.edit_balace
which sends a patch request sometimes comes back with a 404 error even when the url and data parameters are correct, even on repeated requests with the exact same data, this is still being tested on.- Rate limits are not yet functional, it is recommended to run the Client with parameters
prevent_rate_limits
andretry_rate_limits
set toFalse
until they're finished.
Credits
- Currently, global rate limit is handled by Martijn Pieters' aiolimiter.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
unbelipy-1.0.4b0.tar.gz
(10.0 kB
view details)
Built Distribution
File details
Details for the file unbelipy-1.0.4b0.tar.gz
.
File metadata
- Download URL: unbelipy-1.0.4b0.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.6 CPython/3.8.9 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14cd918f7ffef1a53c458662858b1e9beda1f24095654870b5b3d85b2e95d5de |
|
MD5 | 72dc8f72810e9ecdbd87c25bbd86e715 |
|
BLAKE2b-256 | 12c75864eeb9f3f96cacf88e6751277627c144312bff54f37f508f6d6e600a54 |
File details
Details for the file unbelipy-1.0.4b0-py3-none-any.whl
.
File metadata
- Download URL: unbelipy-1.0.4b0-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.6 CPython/3.8.9 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60a9dbc027259cd82a29112d5e59f2ad548a3753f7b71e488e914c4a347c3f03 |
|
MD5 | cf3296901ccf2f8008b540d120a01870 |
|
BLAKE2b-256 | 448ac984f69be8bbdd236326d4ec83a43b113ddc1775691e5c40d711388cd907 |