
Security News
Browserslist-rs Gets Major Refactor, Cutting Binary Size by Over 1MB
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
This package provides a fully async, type-complete wraper for the Upgrade.Chat API.
Upgrade.Chat is a platform that facilitates monetization for community services, particularly Discord. This wrapper aims to simplify integration with other 3rd party apps.
To install the package, run the following command:
pip install upchatpy
Before you can start using the API, you need to obtain your client ID and client secret from Upgrade.Chat. Once you have them, you can begin by creating a Client
instance:
from upchatpy import Client
client_id = 'your_client_id'
client_secret = 'your_client_secret'
client = Client(client_id, client_secret)
The wrapper handles authentication automatically when making API calls. However, you can manually authenticate and retrieve the access token as follows:
auth = await client.get_auth()
print(auth.access_token) # Access token is now available
or
print(client.auth.access_token) # Access token also available via client instance
To fetch orders, use the following method:
orders_response = await client.get_orders()
for order in orders_response.data:
print(order.uuid, order.total)
To fetch all orders with pagination support:
async for orders_response in client.aget_orders():
for order in orders_response.data:
print(order.uuid, order.total)
To fetch a specific order by UUID:
order_uuid = 'your_order_uuid'
order_response = await client.get_order(order_uuid)
print(order_response.data.total)
Fetch a list of products using:
products_response = await client.get_products()
for product in products_response.data:
print(product.uuid, product.name)
To fetch all products with pagination support:
async for products_response in client.aget_products():
for product in products_response.data:
print(product.uuid, product.name)
To fetch a product order by UUID:
product_uuid = 'your_product_uuid'
product_response = await client.get_product(product_uuid)
print(product_response.data.name)
To get a list of users, you can do:
users_response = await client.get_users()
for user in users_response.data:
print(user.discord_id, user.username)
Fetch a list of webhooks using:
webhooks_response = await client.get_webhooks()
for webhook in webhooks_response.data:
print(webhook.id, webhook.uri)
To fetch all webhooks with pagination support:
async for webhooks_response in client.aget_webhooks():
for webhook in webhooks_response.data:
print(webhook.id, webhook.url)
To fetch a specific webhook by ID:
webhook_id = 'your_webhook_id'
webhook_response = await client.get_webhook(webhook_id)
print(webhook_response.data.id, webhook_response.data.url)
Fetch a list of webhooks events using:
webhook_events_response = await client.get_webhook_events()
for webhook_event in webhook_events_response.data:
print(webhook_event.id, webhook_event.webhook_id)
To fetch a list of webhook events with pagination support:
async for webhook_events_response in client.aget_webhook_events():
for webhook_event in webhook_events_response.data:
print(webhook_event.id, webhook_event.webhook_id)
To fetch a specific webhook event by ID:
event_id = 'your_event_id'
webhook_event_response = await client.get_webhook_event(event_id)
print(webhook_event_response.data.id)
To validate a webhook event by ID:
event_id = 'your_event_id'
webhook_valid_response = await client.validate_webhook_event(event_id)
print(webhook_valid_response.data.is_valid)
The user_is_subscribed
method enables you to check if a user is currently subscribed to a specific product. This can be useful for verifying user access to features or content based on their subscription status.
# Replace the following with the actual product UUID and user Discord ID
product_uuid = "c1eaaee5-9620-4343-b9da-test123"
user_discord_id = "12312312312312312"
is_subscribed = await client.user_is_subscribed(product_id, user_discord_id)
print(is_subscribed)
>> True or False
The Upgrade.Chat Python Wrapper provides custom exceptions to help you handle potential errors that may occur during API interaction.
AuthenticationError
: Raised when there is a problem with client authentication, such as incorrect client ID or client secret.HTTPError
: Raised for general HTTP-related errors when making API requests.ResourceNotFoundError
: Raised when a requested resource is not found on the Upgrade.Chat API.from upchatpy import Client
from upchatpy.exceptions import AuthenticationError, HTTPError, ResourceNotFoundError
client_id = 'your_client_id'
client_secret = 'your_client_secret'
client = Client(client_id, client_secret)
async def main():
try:
orders_response = await client.get_orders()
for order in orders_response.data:
print(order.uuid, order.total)
except AuthenticationError as e:
print(f"Authentication failed with status code {e.status_code}: {e.message}")
except ResourceNotFoundError as e:
print(f"Resource not found with status code {e.status_code}: {e.message}")
except HTTPError as e:
print(f"HTTP error with status code {e.status_code}: {e.message}")
except Exception as e:
print(f"An unexpected error occurred: {e}")
This package is under active development, and contributions are welcome! If you encounter any issues or have feature requests, please submit them to the project's issue tracker.
This wrapper is distributed under the MIT license. See the LICENSE
file for more information.
FAQs
A type hinted async Python wrapper for the Upgrade.Chat API
We found that upchatpy demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.
Security News
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.