Каких аргументов не хватает в адресной строке?
Пишу бота для Steam (на python), используя библиотеку:
https://github.com/bukson/steampy
https://github.com/bukson/steampy/blob/master/steampy/market.py
Библиотека тоже написана на python.
Хочу создавать ордера на продажу, зная название предмета, игру (в частности cs:go), цену (в копейках).
Использую метод create_sell_order
Реализация метода:
@login_required
def create_sell_order(self, assetid: str, game: GameOptions, money_to_receive: str) -> dict:
data = {
"assetid": assetid,
"sessionid": self._session_id,
"contextid": game.context_id,
"appid": game.app_id,
"amount": 1,
"price": money_to_receive
}
headers = {'Referer': "%s/profiles/%s/inventory" % (SteamUrl.COMMUNITY_URL, self._steam_guard['steamid'])}
response = self._session.post(SteamUrl.COMMUNITY_URL + "/market/sellitem/", data, headers=headers).json()
if response.get("needs_mobile_confirmation"):
return self._confirm_sell_listing(assetid)
return response
Однако, при вызове метода, вылетает исключение:
steam_client.market.create_sell_order("AUG | Contractor (Minimal Wear)", GameOptions.CS, "1000")
Исключение:
File "C:\Users\ilyam\AppData\Local\Programs\Python\Python39\lib\site-packages\steampy\market.py", line 108, in create_sell_order
headers = {'Referer': "%s/profiles/%s/inventory" % (SteamUrl.COMMUNITY_URL, self._steam_guard['steamid'])}
KeyError: 'steamid'
И ведь действительно, в словаре self._steam_guard нет ключа steamid:
self._steam_guard = {'shared_secret': 'NHtV0TBuE8ukEbwdkryYZmj....=', 'serial_number': '1311238982507006....', 'revocation_code': 'R0....', 'uri': 'otpauth://totp/Steam:oryusar?secret=GR5VLUJQNYJ4XJARXQOZFPEYMZUM....&issuer=Steam', 'server_time': 154498...., 'account_name': 'ory....', 'token_gid': '2f5da3b55fa3....', 'identity_secret': 'BInlDvsP4bPqMkhJhSKDULh....=', 'secret_1': 'by6BLQeRseAWSdBMUdwTtqN....=', 'status': 1, 'device_id': 'android:1cf10.....', 'fully_enrolled': True, 'Session': {'SessionID': '3fdaed38f0c20cd88616844f', 'SteamLogin': '76561198877493969%7C%7C3342EC89DA11DE24A24AD0093199D79FE957F462', 'SteamLoginSecure': '76561198877493969%7C%7CDCFB2319C52473470D7FF8F3EA149CB3CDFCE16E', 'WebCookie': 'ED4AA0626924D73C8A2D1F0EAC48447A863DA787', 'OAuthToken': '3d4c6c0be5516f985846657a5b3e6527', 'SteamID': 76561198877493969}}
Увидел steamid в словаре с ключом Session:
self._steam_guard['Session']['SteamID']
Исключение не вылетает, но теперь просто появляется ошибка 400, где говорится, что передано недостаточно аргументов:
{'success': False, 'message': 'Missing parameters in SellItem request'}
Как должна выглядеть ссылка для создания ордера на продажу и каких аргументов не хватает? Загуглил, но похожего вопроса не нашёл. Буду благодарен любой подсказке
SteamUrl.COMMUNITY_URL + "/market/sellitem/" ===== https://steamcommunity.com/market/sellitem/
data ===== {'assetid': 'AUG | Contractor (Minimal Wear)', 'sessionid': '1c454e515db61180a6532ce3', 'contextid': '2', 'appid': '730', 'amount': 1, 'price': '1000'}
headers ===== {'Referer': 'https://steamcommunity.com/profiles/76561198877493969/inventory'}