Примеры использования#

Здесь собраны примеры кода для демонстрации работы библиотеки.

Быстрое начало#

Пример простого бота, который будет отвечать на несложные команды

from datetime import datetime

from playerokapi.account import Account
from playerokapi.types import *
from playerokapi.enums import *
from playerokapi.listener.listener import EventListener

# ----- ИНИЦИАЛИЗАЦИЯ АККАУНТА -----
acc = Account(
    cookies="__ddg3=4L7yBmrBwMwKm15X;token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36"
).get()

# ----- ЗАПУСК СЛУШАТЕЛЯ СОБЫТИЙ -----
listener = EventListener(acc)

for event in listener.listen():
    if event.type is EventTypes.NEW_MESSAGE: # ловим тип ивента "Новое сообщение"
        if event.message.user.id != acc.id: # проверяем, если это сообщение было отправлено не от своего же лица
            if event.message.text == "!команды": # проверяем, если текст сообщение - нужная наша команда
                acc.send_message(
                    chat_id=event.chat.id,
                    text="🤖 Доступные команды:\n- !привет - отправляет приветствие\n- !дата - показывает текущую дату и время"
                ) # отправляем сообщение
            if event.message.text == "!привет":
                acc.send_message(
                    chat_id=event.chat.id,
                    text="👋 Привет, я бот для Playerok!\n- Узнать команды - !команды"
                )
            if event.message.text == "!дата":
                acc.send_message(
                    chat_id=event.chat.id,
                    text=f"📅 Текущая дата: {datetime.now().strftime("%d/%m/%Y, %H:%M:%S")}"
                )

Создание и публикация предмета#

Пример кода, который создаст и опубликует предмет в приложении «Telegram», категории «Подарки (NFT)»

from playerokapi.account import Account
from playerokapi.types import *
from playerokapi.enums import *


# ----- ИНИЦИАЛИЗАЦИЯ АККАУНТА -----
acc = Account(
    cookies="__ddg3=4L7yBmrBwMwKm15X;token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36"
).get()

# ----- ПОЛУЧЕНИЕ ДАННЫХ О ТОВАРЕ -----
game = acc.get_game(slug="telegram") # получаем нужную игру

_category = next((cat for cat in game.categories if cat.name == "Подарки (NFT)"), None)
category = acc.get_game_category(_category.id) # получаем полные даные о категории

obt_list = acc.get_game_category_obtaining_types(category.id)
obt_type = next((obt for obt in obt_list.obtaining_types if obt.name == "Подарок"), None)

option = next((opt for opt in category.options if opt.value == "heart"), None)
# тут могут быть прочие опции...

df_list = acc.get_game_category_data_fields(category.id, obt_type.id)
data_field = next((df for df in df_list.data_fields if df.label == "Комментарий"), None) # берём поле с обязательным данным (в этом случае только одно, чаще всего несколько необходимых)
data_field.value = "Напишу вам в ТГ после оформления заказа" # задаём значение этому полю, так как оно обязательное
# тут могут быть прочие обязательные поля с данными...

banner = "banner.png"

# ----- СОЗДАНИЕ ПРЕДМЕТА -----
item = acc.create_item(
    game_category_id=category.id,                                    # указываем id категории игры
    obtaining_type_id=obt_type.id,                                   # указываем id типа получения предмета
    name='Подарок "❤️ Сердце" (13 ⭐) / Авто-Выдача 🤖',            # указываем название предмета
    price=90,                                                        # указываем цену предмета
    description="Выдача осуществляется без захода на ваш аккаунт.",  # указываем описание предмета
    options=[option],                                                # указываем опции предмета
    data_fields=[data_field],                                        # указываем поля с данными предмета
    attachments=[banner]                                             # указываем файлы-приложения предмета (баннер и прочие изображения)
)

# ----- ПУБЛИКАЦИЯ ПРЕДМЕТА -----
statuses = acc.get_item_priority_statuses(item.id, item.price)
free_status = next((status for status in statuses if status.price == 0), None)
new_item = acc.publish_item(item.id, free_status.id)