Основной клиент
Одинаково для синхронного и асинхронного клиента.
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: Теперь, если во время операции закончиться баланс, вместо ошибки, в датаклассе будет указано кол-во оставшихся предметов по данной цене.
remove_trade_link()
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 дней. |
set_trade_link(trade_link)
Установить ссылку для обмена.
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. |