Skip to main content

PlayerokAPI

Лёгкая асинхронная библиотека для работы с API маркетплейса Playerok.

CI Docs PyPI Python License: MIT Telegram

Неофициальная библиотека. Проект не связан с Playerok и не поддерживается площадкой.

Что это

Клиент к Playerok по образцу FunPayAPI: пакет-папка, который можно поставить из PyPI или положить рядом с ботом. Внутри — асинхронный клиент, типизированные модели и слушатель событий. Из зависимостей только httpx и websockets.

Установка

pip install PlayerokAPI

Быстрый старт

import asyncio
from PlayerokAPI import Account


async def main() -> None:
    async with Account(token="ваш_token_из_cookie") as acc:
        me = await acc.get_me()
        print(me.username, me.balance.available)

        chats = await acc.chats.search(filter={"unread": True}, first=10)
        for chat in chats:
            print(chat.id, chat.last_message.text if chat.last_message else "")


asyncio.run(main())

Часть API публичная и работает без токена:

async with Account() as acc:
    for item in await acc.items.top(page_size=5):
        print(item.price, item.name)

События

import asyncio
from PlayerokAPI import Account, EventType, MessageEvent


async def main() -> None:
    async with Account(token="...") as acc:
        me = await acc.get_me()
        listener = acc.listener(events=[EventType.NEW_MESSAGE])

        @listener.on(EventType.NEW_MESSAGE)
        async def on_message(event: MessageEvent) -> None:
            message = event.message
            if message.is_system or message.author_id == me.id:
                return
            await acc.send_message(message.chat_id, "Привет!")

        await listener.run()


asyncio.run(main())

Типы событий: NEW_MESSAGE, MESSAGE_EDITED, MESSAGE_DELETED, NEW_CHAT, CHAT_UPDATED, CHAT_READ, NEW_DEAL, DEAL_UPDATED, ITEM_CREATED, ITEM_UPDATED, ITEM_REMOVED, NEW_TRANSACTION, BALANCE_UPDATED.

Падение обработчика логируется и не роняет ни цикл, ни соседние обработчики. Если WebSocket в вашем окружении недоступен, есть поллинг с тем же интерфейсом:

async for event in acc.polling(interval=5.0).events():
    print(event.type)

Разделы API

Неймспейс Что внутри
acc.auth вход по коду на почту, второй фактор, выход
acc.viewer профиль, баланс, аватар, настройки, двухфакторная аутентификация
acc.games игры, категории
acc.items поиск, топ, официальный магазин, создание, публикация, тарифы, продвижение
acc.chats чаты, сообщения, картинки, отметка о прочтении
acc.deals сделки, покупка, смена статуса, жалоба на проблему
acc.testimonials отзывы
acc.transactions история транзакций, вывод средств
acc.payments пополнение баланса, провайдеры, способы оплаты, карты
acc.notifications каналы уведомлений, привязка Telegram-бота
acc.files загрузка файлов в хранилище
acc.pl_tokens баланс, история, кэшбэк, промокоды
acc.fragment покупка Telegram Stars
acc.steam пополнение кошелька Steam
acc.lottery розыгрыши и билеты
acc.misc гео, баннеры, feature-флаги, код защиты средств

Пополнение баланса

providers = await acc.payments.providers()
for provider in providers:
    print(provider.id, provider.name, provider.fee, provider.incoming)

url = await acc.payments.create_payment_url(
    1000,
    "SBP",
    payment_method="RUB",
    email="mail@example.com",
)
print(url)  # платёжная страница провайдера

Результат придёт событием NEW_TRANSACTION.

Где взять токен

DevTools → Application → Cookies → https://playerok.com → значение cookie token.

Либо через код на почту:

async with Account() as acc:
    await acc.auth.send_otp("mail@example.com")
    result = await acc.auth.confirm_otp("mail@example.com", "123456")
    print(acc.token)  # при включённой 2FA сначала acc.auth.confirm_second_factor(...)

Обработка ошибок

Всё наследуется от PlayerokError:

from PlayerokAPI import HTTPError, PlayerokError, RateLimitError, UnauthorizedError

try:
    await acc.items.get(slug="nope")
except UnauthorizedError:
    ...  # токен протух
except RateLimitError as exc:
    ...  # exc.retry_after
except HTTPError as exc:
    print(exc.status_code, exc.message)
except PlayerokError:
    ...

Сетевые сбои, 429 и 5xx на идемпотентных методах повторяются автоматически. POST после 5xx не повторяется — чтобы не создать вторую покупку.

Документация

Полное руководство и справочник API — playerok-api.readthedocs.io.

Примеры

Структура пакета

PlayerokAPI/
├── account.py        фасад Account — точка входа
├── types.py          модели данных
├── enums.py          перечисления из схемы
├── exceptions.py     иерархия ошибок
├── common/           конфигурация, эндпоинты, утилиты
├── transport/        HTTP, REST, GraphQL, WebSocket
├── methods/          модули API: auth, viewer, items, chats, deals, …
└── updater/          события, слушатель, поллинг

Где спросить

Телеграм-чат библиотеки — @playerokapi. Баги и предложения лучше в issues.

Лицензия

MIT

Metadata

Release files for PlayerokAPI 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PlayerokAPI 0.2.0
File Size Uploaded
playerokapi-0.2.0.tar.gz 51.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for PlayerokAPI 0.2.0
File Interpreter ABI Platform
playerokapi-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 128.0 kB

Release files / playerokapi-0.2.0.tar.gz

Download URL playerokapi-0.2.0.tar.gz
Size 51.9 kB
Tags Source
SHA-256 checksum
How to use checksums
fce12eade6b51e312faf4bcb97de2082673db0a995eb562f69f4c1ee29fe9824
BLAKE2b-256 checksum
How to use checksums
f4357341b44404754880eb4554f290c09be3722c6c2c0ae86c88f784c714a992
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / playerokapi-0.2.0-py3-none-any.whl

Download URL playerokapi-0.2.0-py3-none-any.whl
Size 76.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4fd93dd18eab6965001dae1d2d580c2c3830703ad5a8e42a4f91cf096db810f8
BLAKE2b-256 checksum
How to use checksums
8f32444af6fae3db971b37c805477cf8de1aa5f5ea2e15d3b3004556b2aa5879
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page