Библиотека для работы с API DesslyHub
Project description
DesslyHub API
Асинхронная Python-библиотека для работы с DesslyHub API. Поддерживает пополнение Steam-аккаунтов, покупку и отправку игр в подарок, ваучеры, пополнение мобильных игр и управление транзакциями.
Установка
# Using uv
uv add desslyhub
# Or using pip
pip install desslyhub
Требования: Python 3.11+
Быстрый старт
import asyncio
from desslyhub import Client
async def main() -> None:
async with Client(api_key="ваш_api_ключ") as client:
balance = await client.get_balance()
print(f"Баланс: {balance.balance} USD")
asyncio.run(main())
Возможности
Баланс и транзакции
# Получить баланс
balance = await client.get_balance()
# Получить список транзакций (постранично, 100 на страницу)
transactions = await client.get_transactions(page=1)
for tx in transactions.transactions:
print(f"{tx.id} — {tx.status} — {tx.final_amount} USD")
# Получить транзакцию по ID
transaction = await client.get_transaction("uuid-транзакции")
# Проверить статус транзакции
status = await client.get_transaction_status("uuid-транзакции")
print(status.status) # success / pending / failed / cancelled
Пополнение Steam
# Проверить возможность пополнения аккаунта
check = await client.check_steam_login(amount=5.0, username="steam_login")
if check.can_refill:
# Пополнить баланс Steam (от 0.1 до 1000 USD)
result = await client.steam_top_up(amount=5.0, username="steam_login")
print(f"Транзакция: {result.transaction_id}, статус: {result.status}")
Покупка и отправка игр в подарок
# Список доступных игр
games = await client.get_steam_gift_games()
for game in games.games:
print(f"{game.name} (app_id: {game.app_id})")
# Детали игры: издания, регионы, цены
details = await client.get_steam_gift_game_details(app_id=730)
for edition in details.game:
print(f"{edition.edition} (package_id: {edition.package_id})")
for region in edition.regions_info:
print(f" {region.region}: {region.price} USD (скидка {region.discount}%)")
# Отправить игру в подарок
result = await client.send_steam_gift_game(
invite_url="https://s.team/p/...",
package_id="12345",
region="RU",
)
Курсы валют Steam
from desslyhub.enums import Currency
# Курс для одной валюты
rate = await client.get_steam_exchange_rate(Currency.RUB)
print(f"1 USD = {rate.exchange_rate} RUB")
# Все курсы
rates = await client.get_steam_exchange_rates()
for currency, value in rates.exchange_rates.items():
print(f"{currency.name}: {value}")
Ваучеры
# Список продуктов
products = await client.get_voucher_products()
for product in products.products:
print(f"{product.name} ({product.country})")
for v in product.variations:
print(f" {v.name} — {v.price} {v.voucher_currency} (в наличии: {v.stock})")
# Детали продукта
product = await client.get_voucher_product(product_id=1)
# Покупка ваучера
result = await client.buy_voucher(root_id=1, variant_id=10)
for voucher in result.vouchers:
print(f"PIN: {voucher.pin}, S/N: {voucher.serial_number}")
Мобильные игры
from desslyhub.enums import Variant
# Список игр
games = await client.get_mobile_games(variant=Variant.PROVIDER_1)
# Детали игры (серверы, поля, позиции)
details = await client.get_mobile_game_details(game_id="123")
for pos in details.positions:
print(f"{pos.name} — {pos.price} USD")
# Пополнение
result = await client.send_mobile_game_refill(
fields={"user_id": "12345", "server": "EU"},
position=1,
variant=Variant.PROVIDER_1,
)
Обработка ошибок
Библиотека предоставляет типизированные исключения для каждого кода ошибки API:
from desslyhub.exceptions import (
DesslyHubAPIError,
InsufficientFundsError,
IncorrectSteamUsernameError,
GameAlreadyOwnedError,
)
try:
await client.steam_top_up(amount=5.0, username="login")
except InsufficientFundsError:
print("Недостаточно средств на балансе")
except IncorrectSteamUsernameError:
print("Неверный логин Steam")
except DesslyHubAPIError as e:
print(f"Ошибка API: код {e.code}, {e.message}")
Полный список исключений
| Код | Класс | Описание |
|---|---|---|
| -1 | InternalServerError |
Внутренняя ошибка сервера |
| -2 | InsufficientFundsError |
Недостаточно средств |
| -3 | IncorrectAmountError |
Некорректная сумма |
| -4 | IncorrectRequestBodyError |
Некорректное тело запроса |
| -5 | AccessDeniedError |
Доступ запрещён |
| -51 | InvalidFriendLinkError |
Неверная ссылка на друга |
| -52 | IncorrectAppIDError |
Неверный App ID |
| -53 | GameInfoNotFoundError |
Информация об игре не найдена |
| -54 | MainGameNotOwnedError |
Базовая игра не куплена |
| -55 | GameAlreadyOwnedError |
Игра уже в библиотеке |
| -56 | UnableToAddFriendError |
Не удалось добавить в друзья |
| -57 | IncorrectCustomerRegionError |
Неверный регион покупателя |
| -58 | RecipientRegionUnavailableError |
Регион получателя недоступен |
| -59 | BotFriendActionPendingError |
Ожидается действие с ботом |
| -100 | IncorrectSteamUsernameError |
Неверный логин Steam |
| -120 | IncorrectCurrencyValueError |
Неверное значение валюты |
| -121 | CurrencyNotSupportedError |
Валюта не поддерживается |
| -151 | InvalidTransactionIDError |
Неверный ID транзакции |
| -152 | TransactionNotFoundError |
Транзакция не найдена |
| -153 | PageNumberNotSpecifiedError |
Не указан номер страницы |
| -200 | MobileGameNotFoundError |
Мобильная игра не найдена |
| -201 | MobileGamePositionNotFoundError |
Позиция не найдена |
| -202 | SourceVariantNotFoundError |
Провайдер не найден |
| -300 | VoucherNotFoundError |
Ваучер не найден |
| -301 | VoucherNotAvailableError |
Ваучер недоступен |
Поддерживаемые валюты
Currency — это IntEnum с 37 валютами:
USD, GBP, EUR, CHF, RUB, PLN, BRL, JPY, NOK, IDR, MYR, PHP, SGD, THB, VND, KRW, UAH, MXN, CAD, AUD, NZD, CNY, INR, CLP, PEN, COP, ZAR, HKD, TWD, SAR, AED, ILS, KZT, KWD, QAR, CRC, UYU
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file desslyhub-0.1.0.tar.gz.
File metadata
- Download URL: desslyhub-0.1.0.tar.gz
- Upload date:
- Size: 86.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d792f7950195fbc014eb64e2dad786019b33c7dc901fda2ae49c3aa3e60da373
|
|
| MD5 |
94bfc498cc879aaf3a5e324748e6c337
|
|
| BLAKE2b-256 |
e5978e7aa6111f3c79363a18aa8652d9b91786a32cc7d61e29e0f2e53f3b9bdb
|
File details
Details for the file desslyhub-0.1.0-py3-none-any.whl.
File metadata
- Download URL: desslyhub-0.1.0-py3-none-any.whl
- Upload date:
- Size: 26.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d501291e68c7e7ae175d7f7e8c46723f738f357e26fa29cacacb2ab71185d21
|
|
| MD5 |
4ecdd254f43b2c328c80ac7242b5e31b
|
|
| BLAKE2b-256 |
3af10cd1196ed1db73f88f6b2dbf8525ae0658766d84a63dd74156b3a5161df0
|