Skip to content

Основной клиент

Одинаково для синхронного и асинхронного клиента.

Bases: TraderClientObject

Класс, представляющий клиент Steam Trader.

Parameters:

Name Type Description Default
api_token str

Уникальный ключ для аутентификации.

required
proxy str

Прокси для запросов. Для работы необходимо использовать контекстный менеджер with.

None
base_url str

Ссылка на API Steam Trader.

None
headers dict

Словарь, содержащий сведения об устройстве, с которого выполняются запросы. Используется при каждом запросе на сайт.

None
**kwargs

Будут переданы httpx клиенту. Например timeout.

{}

Attributes:

Name Type Description
api_token str

Уникальный ключ для аутентификации.

proxy str

Прокси для запросов.

base_url str

Ссылка на API Steam Trader.

headers dict

Словарь, содержащий сведения об устройстве, с которого выполняются запросы. Используется при каждом запросе на сайт.

Usage:

from steam_trader.api import Client

client = Client('Ваш токен')
...

# или

with client:
    ...
from steam_trader.api import ClientAsync

client = ClientAsync('Ваш токен')

async def main():
    async with client:
        ...

balance property

Баланс клиента.

_get_request(method, *, headers=None, params=None, cookies=None, **kwargs)

Создать GET запрос и вернуть данные.

Parameters:

Name Type Description Default
method str

API метод.

required
headers dict[str, str]

Заголовки запроса.

None
params dict[str, Any]

Параметры запроса.

None
cookies dict[str, str]

Куки запроса.

None
**kwargs

Будут переданы httpx клиенту.

{}

Returns:

Name Type Description
Any Any

Ответ сервера.

_post_request(method, *, data=None)

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

Parameters:

Name Type Description Default
method str

API метод.

required
data dict[str, Any]

Параметры для POST запроса.

None

Raises:

Type Description
BadRequestError

Неправильный запрос.

Unauthorized

Неправильный api-токен.

TooManyRequests

Слишком много запросов.

Returns:

Name Type Description
Any Any

Ответ сервера.

buy(itemid, itemtype, price, currency=1)

Создать предложение о покупке предмета по строго указанной цене.

Если в момент покупки цена предложения о продаже изменится, покупка не совершится.

Note

Сайт пока работает только с рублями. Не меняйте значение currency.

Parameters:

Name Type Description Default
itemid int | str

В качества ID может выступать: GID для варианта покупки Commodity. Часть ссылки после nc/ (nc/L8RJI7XR96Mmo3Bu) для варианта покупки NoCommission. ID предложения о продаже для варианта покупки Offer (найти их можно в ItemInfo).

required
itemtype int

Вариант покупки (указаны выше) - 1 / 2 / 3.

required
price float

Цена предложения о продаже без учёта комиссии/скидки. Актуальные цены можно узнать через get_item_info и get_min_prices.

required
currency int

Валюта покупки. Значение 1 - рубль.

1

Returns:

Name Type Description
BuyResult BuyResult

Результат создания запроса о покупке.

Raises:

Type Description
InternalError

При создании заявки произошла неизвестная ошибка.

NoTradeLink

Отсутствует сслыка для обмена.

NoLongerExists

Предложение больше недействительно.

NotEnoughMoney

Недостаточно средств.

create_buy_order(gid, price, *, count=1)

Создать заявку на покупку предмета с определённым GID.

Note

Если при создании предложения о ПРОДАЖЕ указать цену меньше, чем у имеющейся заявки на ПОКУПКУ, предложение о ПРОДАЖЕ будет исполнено моментально по цене заявки на ПОКУПКУ. Например, на сайте есть заявка на покупку за 10 ₽, а продавец собирается выставить предложение за 5 ₽ (дешевле), то сделка совершится по цене 10 ₽.

Parameters:

Name Type Description Default
gid int

ID группы предметов.

required
price float

Цена предмета, за которую будете его покупать без учёта комиссии/скидки.

required
count int

Количество заявок для размещения (не более 500). По умолчанию - 1.

1

Returns:

Name Type Description
BuyOrderResult BuyOrderResult

Результат созданния заявки на покупку.

Raises:

Type Description
InternalError

При создании заявки произошла неизвестная ошибка.

UnknownItem

Неизвестный предмет.

NoTradeLink

Отсутствует сслыка для обмена.

NoLongerExists

Предложение больше недействительно.

NotEnoughMoney

Недостаточно средств.

delete_item(itemid)

Снять предмет с продажи/заявку на покупку.

Parameters:

Name Type Description Default
itemid int

ID продажи/заявки на покупку.

required

Returns:

Name Type Description
DeleteItemResult DeleteItemResult

Результат запроса снятия предмета с продажи/заявки на покупку.

Raises:

Type Description
InternalError

При выполнении запроса произошла неизвестная ошибка.

UnknownItem

Неизвестный предмет.

edit_price(itemid, price)

Редактировать цену предмета/заявки на покупку.

При редактировании может произойти моментальная продажа/покупка по аналогии тому, как это сделано в методах sell и create_buy_order.

Parameters:

Name Type Description Default
itemid int

ID предложения о продаже/заявки на покупку.

required
price float

Новая цена, за которую хотите продать/купить предмет без учёта комиссии/скидки.

required

Returns:

Name Type Description
EditPriceResult EditPriceResult

Результат запроса на изменение цены.

Raises:

Type Description
InternalError

При выполнении запроса произошла неизвестная ошибка.

UnknownItem

Предмет не был найден.

IncorrectPrice

Неправильная цена заявки.

NotEnoughMoney

Недостаточно средств.

exchange()

Выполнить обмен с ботом.

Note

Вы сами должны принять трейд в приложении Steam, у вас будет 3 часа на это. В противном случае трейд будет отменён.

Returns:

Name Type Description
ExchangeResult ExchangeResult

Результат обмена с ботом.

Raises:

Type Description
InternalError

При выполнении запроса произошла неизвестная ошибка.

NoTradeLink

Отсутствует сслыка для обмена.

TradeCreationFail

Не удалось создать предложение обмена или бот не может отправить предложение обмена, так как обмены в Steam временно не работают, или ваш инвентарь переполнен, или у вас есть VAC бан.

NoTradeItems

Нет предметов для обмена.

ExpiredTradeLink

Ссылка для обмена больше недействительна.

TradeBlockError

Steam Guard не подключён или стоит блокировка обменов.

MissingRequiredItems

В инвентаре Steam отсутствуют необходимые для передачи предметы.

HiddenInventory

Ваш инвентарь скрыт.

AuthenticatorError

Мобильный аутентификатор не подключён, или с момента его подключения ещё не прошло 7 дней.

exchange_p2p()

Выполнить p2p обмен.

Note

Вы сами должны передать предмет клиенту из полученной информации, у вас будет 40 минут на это. В противном случае, трейд будет отменён.

Returns:

Name Type Description
ExchangeP2PResult ExchangeP2PResult

Результат p2p обмена.

Raises:

Type Description
InternalError

При выполнении запроса произошла неизвестная ошибка.

NoTradeLink

Отсутствует сслыка для обмена.

TradeCreationFail

Не удалось создать предложение обмена или бот не может отправить предложение обмена, так как обмены в Steam временно не работают, или ваш инвентарь переполнен, или у вас есть VAC бан, или покупатель не указал свою ссылку для обмена.

NoTradeItems

Нет предметов для обмена.

NoSteamAPIKey

Отсутсвтвует ключ Steam API.

AuthenticatorError

Мобильный аутентификатор не подключён, или с момента его подключения ещё не прошло 7 дней.

get_buy_orders(*, gameid=None, gid=None)

Получить последовательность заявок на покупку. По умолчанию возвращаются заявки для всех предметов из всех разделов.

При указании соответствующих параметров можно получить заявки из определённого раздела и/или предмета.

Parameters:

Name Type Description Default
gameid int

AppID приложения в Steam.

None
gid int

ID группы предметов.

None

Returns:

Name Type Description
BuyOrders BuyOrders

Список заявок на покупку.

Raises:

Type Description
UnsupportedAppID

Указан недействительный gameid.

NoBuyOrders

Нет запросов на покупку.

get_discounts()

Получить комиссии/скидки и оборот на сайте.

Данные хранятся в словаре data, где ключ - это AppID игры в Steam (См. steam_trader.constants).

Returns:

Name Type Description
Discounts Discounts

Комиссии/скидки и оборот на сайте.

get_down_orders(gameid, *, order_type='sell')

Снять все заявки на продажу/покупку предметов.

Parameters:

Name Type Description Default
gameid int

AppID приложения в Steam.

required
order_type str

Тип заявок для удаления: "sell" - предложения о ПРОДАЖЕ. Значение по умолчанию. "buy" - предложения о ПОКУПКЕ.

'sell'

Returns:

Name Type Description
GetDownOrdersResult GetDownOrdersResult

Результат снятия всех заявок на продажу/покупку предметов.

Raises:

Type Description
InternalError

При выполнении запроса произошла неизвестная ошибка.

NoTradeItems

Нет заявок на продажу/покупку.

UnsupportedAppID

Указан недействительный gameid.

ValueError

Указано недопустимое значение order_type.

get_inventory(gameid, *, status=None)

Получить инвентарь клиента, включая заявки на покупку и купленные предметы.

По умолчанию возвращает список предметов из инвентаря Steam, которые НЕ выставлены на продажу.

Parameters:

Name Type Description Default
gameid int

AppID приложения в Steam.

required
status Sequence[int]

Указывается, чтобы получить список предметов с определенным статусом.

Возможные статусы: 0 - В продаже 1 - Принять 2 - Передать 3 - Ожидается 4 - Заявка на покупку

None

Returns:

Name Type Description
Inventory Inventory

Инвентарь клиента, включая заявки на покупку и купленные предметы.

Raises:

Type Description
UnsupportedAppID

Указан недействительный gameid.

ValueError

Указан недопустимый статус.

get_inventory_state(gameid)

Получить текущий статус обновления инвентаря.

Parameters:

Name Type Description Default
gameid int

AppID приложения в Steam.

required

Returns:

Name Type Description
InventoryState InventoryState

Текущий статус обновления инвентаря.

Raises:

Type Description
UnsupportedAppID

Указан недействительный gameid.

get_item_info(gid)

Получить информацию о группе предметов.

Parameters:

Name Type Description Default
gid int

ID группы предметов.

required

Returns:

Name Type Description
ItemInfo ItemInfo

Информация о группе предметов.

Raises:

Type Description
InternalError

При выполнении запроса произошла неизвестная ошибка.

UnknownItem

Неизвестный предмет.

get_items_for_exchange()

Получить список предметов для обмена с ботом.

Returns:

Name Type Description
ItemsForExchange ItemsForExchange

Cписок предметов для обмена с ботом.

Raises:

Type Description
InternalError

При выполнении запроса произошла неизвестная ошибка.

NoTradeItems

Нет предметов для обмена.

get_items_for_exchange_p2p()

Получить список предметов для p2p обмена.

Returns:

Name Type Description
ItemsForExchange ItemsForExchange

Cписок предметов для p2p обмена.

Raises:

Type Description
InternalError

При выполнении запроса произошла неизвестная ошибка.

NoTradeItems

Нет предметов для обмена.

get_min_prices(gid, currency=1)

Получить минимальные/максимальные цены предмета.

Note

Сайт пока работает только с рублями. Не меняйте значение currency.

Parameters:

Name Type Description Default
gid int

ID группы предметов.

required
currency int

Валюта, значение 1 - рубль.

1

Returns:

Type Description
MinPrices

steam_trader.MinPrices: Минимальные/максимальные цены предмета.

Raises:

Type Description
InternalError

При выполнении запроса произошла неизвестная ошибка.

UnknownItem

Неизвестный предмет.

get_operations_history(*, operation_type=None, page=0)

Получить историю операций (По умолчанию все типы). В каждой странице до 100 пунктов.

Parameters:

Name Type Description Default
operation_type int

Тип операции. Может быть пустым. 1 - Покупка предмета 2 - Продажа предмета 3 - Возврат за покупку 4 - Пополнение баланса 5 - Вывести средства 9 - Ожидание покупки 10 - Штрафной балл

None
page int

Страница операций. Отсчёт начинается с 0.

0

Returns:

Name Type Description
OperationsHistory OperationsHistory

История операций.

Changes

0.3.0: Добавлен аргумент page.

get_order_book(gid, *, mode='all', limit=None)

Получить заявки о покупке/продаже предмета.

Parameters:

Name Type Description Default
gid int

ID группы предметов.

required
mode str

Режим отображения 'all' - отображать покупки и продажи. Значение по умолчанию. 'sell' - отображать только заявки на ПРОДАЖУ. 'buy' - отображать только заявки на ПОКУПКУ.

'all'
limit int

Максимальное количество строк в списке. По умолчанию - неограниченно

None

Returns:

Name Type Description
OrderBook OrderBook

Заявки о покупке/продаже предмета.

Raises:

Type Description
InternalError

При выполнении запроса произошла неизвестная ошибка.

get_web_socket_token()

Получить токен для авторизации в WebSocket. Незадокументированно.

multi_buy(gid, max_price, count)

Создать запрос о покупке нескольких предметов с определённым GID.

Будут куплены самые лучшие (дешёвые) предложения о продаже.

Если максимальная цена ПОКУПКИ будет указана больше, чем у имеющихся предложений о ПРОДАЖЕ, ПОКУПКА совершится по цене предложений. Например, на сайте есть 2 предложения о продаже по цене 10 и 11 ₽, если при покупке указать максмальную цену 25 ₽, то сделки совершатся по цене 10 и 11 ₽, а общая сумма потраченных средств - 21 ₽.

Если по указанной максимальной цене не окажется достаточно предложений о продаже, success будет равен False и будет указано кол-во оставшихся предметов по данной цене.

Parameters:

Name Type Description Default
gid int

ID группы предметов.

required
max_price float

Максимальная цена одного предмета без учета комиссии/скидки.

required
count int

Количество предметов для покупки.

required

Returns:

Name Type Description
MultiBuyResult MultiBuyResult

Результат создания запроса на мульти-покупку.

Raises:

Type Description
InternalError

При создании заявки произошла неизвестная ошибка.

NoTradeLink

Отсутствует сслыка для обмена.

NotEnoughMoney

Недостаточно средств.

Changes

0.2.3: Теперь, если во время операции закончиться баланс, вместо ошибки, в датаклассе будет указано кол-во оставшихся предметов по данной цене.

Удалить ссылку для обмена.

Raises:

Type Description
SaveFail

Не удалось удалить ссылку обмена.

sell(itemid, assetid, price)

Создать предложение о продаже определённого предмета.

Note

Если при создании предложения о ПРОДАЖЕ указать цену меньше, чем у имеющейся заявки на ПОКУПКУ, предложение о ПРОДАЖЕ будет исполнено моментально по цене заявки на ПОКУПКУ. Например, на сайте есть заявка на покупку за 10 ₽, а продавец собирается выставить предложение за 5 ₽ (дешевле), то сделка совершится по цене 10 ₽.

Parameters:

Name Type Description Default
itemid int

Уникальный ID предмета.

required
assetid int

AssetID предмета в Steam (найти их можно через get_inventory).

required
price float

Цена, за которую хотите продать предмет без учёта комиссии/скидки.

required

Returns:

Name Type Description
SellResult SellResult

Результат создания предложения о продаже.

Raises:

Type Description
InternalError

При создании заявки произошла неизвестная ошибка.

UnknownItem

Неизвестный предмет.

NoTradeLink

Отсутствует сслыка для обмена.

IncorrectPrice

Неправильная цена заявки.

ItemAlreadySold

Предмет уже продан или отстутствует.

AuthenticatorError

Мобильный аутентификатор не подключён или с момента его подключения ещё не прошло 7 дней.

Установить ссылку для обмена.

Parameters:

Name Type Description Default
trade_link str

Ссылка для обмена, Например, https://steamcommunity.com/tradeoffer/new/?partner=453486961&token=ZhXMbDS9

required

Raises:

Type Description
SaveFail

Не удалось сохранить ссылку обмена.

WrongTradeLink

Указана ссылка для обмена от другого Steam аккаунта ИЛИ ссылка для обмена уже указана.

trigger_alt_web_socket()

Создать запрос альтернативным WebSocket. Для поддержания активного соединения нужно делать этот запрос каждые 2 минуты.

Возвращает None если новых сообщений нет. При этом соединение будет поддрежано.

Returns:

Type Description
Optional[AltWebSocket]

AltWebSocket, optional: Запрос альтернативным WebSocket.

update_inventory(gameid)

Обновить инвентарь игры на сайте.

Parameters:

Name Type Description Default
gameid int

AppID приложения в Steam.

required

Raises:

Type Description
UnsupportedAppID

Указан недействительный gameid.