Продажа из программы

На сайте это делает расширение в браузере. Программа делает то же сама, со своим доступом к Steam.

  1. Прочитайте инвентарь с https://steamcommunity.com/inventory/<steam_id>/730/2?l=english&count=2000 и загрузите все страницы.
  2. Выставьте предметы со своими ценами.
  3. Получите продажи. Когда в actions продажи есть send, создайте в Steam оффер на трейд-ссылку покупателя. Он отдаёт этот один предмет и ничего не просит взамен.
  4. Запишите оффер сразу после создания и только потом подтвердите его в Steam Guard.
  5. Отправляйте отчёт каждые три минуты, пока есть продажи, даже пустой. Сделка движется только по этим отчётам.
import os
import time
import requests

API = "https://api.rockvel.store/v1"
KEY = {"Authorization": f"Bearer {os.environ['ROCKVEL_KEY']}"}

def follow_sales():
    sales = requests.get(f"{API}/trades/open", headers=KEY).json()
    for sale in sales:
        if "send" in sale["actions"]:
            # Your own code: make the offer on Steam.
            offer_id = make_offer(sale["trade_url"], sale["asset_id"])
            requests.post(f"{API}/orders/{sale['id']}/offer", headers=KEY, json={"offer_id": offer_id})
            confirm_in_steam_guard(offer_id)
    # Your own code: read IEconService and keep what concerns these sales.
    requests.post(f"{API}/trades/reports", headers=KEY, json=read_steam(sales))

while True:
    follow_sales()
    time.sleep(180)

Что учитывается в отчёте

Офферы берите из IEconService/GetTradeOffers, обмены из IEconService/GetTradeHistory. Оффер засчитывается продаже, только если он отдаёт этот предмет этому покупателю, ничего не просит взамен и создан после продажи. Обмен должен отдать этот предмет этому покупателю после продажи. Если Steam прочитать не удаётся, сообщите об этом в problem: молчание останавливает сделки.

Состояния оффера

9Ждёт Steam Guard: оффер записан.
2Активен: покупатель может принять, сделка переходит в sent.
3Принят: сделка переходит в protected.
7Отклонён: деньги возвращаются покупателю.
6, 10Отменён вами или Steam Guard: деньги возвращаются покупателю.
5Истёк: деньги возвращаются покупателю.
1, 4Недействителен или встречный: деньги возвращаются покупателю.
8Предмета нет: деньги возвращаются покупателю.

Статусы обмена

0, 1В процессе: пока ничего не меняется.
2, 3Завершён: сделка переходит в protected.
4Не удался: деньги возвращаются покупателю.
12Откачен: деньги возвращаются покупателю, продавец блокируется навсегда.

Любое другое число отправляет сделку к человеку, и до его решения деньги не двигаются.