AlexDarkStalker
@AlexDarkStalker
Хочу научится программировать на Python

Как можно отправить трейд не получив ничего в замен?

нужно совершить обмен в стиме в одну сторону, то есть ничего не получив взамен, но дело в том что, разработчик походу не учел такой возможности, так как я и убирал код, который отвечает за поиск второй шмотки в инвентаре того, кто принимает трейд, и ставил None в параметрах при передаче в функцию, но код ни в какую не хочет работать, уже залезал, в файлы библиотеки, менял кое-что, чтобы заработал логин, не уж то опять надо лезть и подпиливать код?

from steampy.client import SteamClient, Asset
from steampy.utils import GameOptions, get_key_value_from_url, account_id_to_steam_id


def find_item_in_inventory(item_hash_name, items):
    for item in items.values():
        market_hash_name = item['market_hash_name']
        if market_hash_name != item_hash_name:
            continue
        return {
            'market_hash_name': market_hash_name,
            'id': item['id']
        }


def make_trade_1_item(give_item, get_item, trade_link):
    game = GameOptions.RUST
    my_items = steam_client.get_my_inventory(game)
    print(my_items)
    my_item_give = find_item_in_inventory(give_item, my_items)
    my_asset = [Asset(my_item_give['id'], game)]

    partner_account_id = get_key_value_from_url(trade_link, 'partner', True)
    partner_steam_id = account_id_to_steam_id(partner_account_id)
    partner_items = steam_client.get_partner_inventory(partner_steam_id, game)

    partner_item_give = find_item_in_inventory(get_item, partner_items)
    partner_asset = [Asset(partner_item_give['id'], game)]

    steam_client.make_offer_with_url(my_asset, partner_asset, trade_link)


steam_client = SteamClient('API')
steam_client.login('login', 'pass', 'steam_guard.json')
trade_link = 'tradeoffer'
make_trade_1_item('Шмотка1', 'Шмотка2', trade_link)


Вот код ошибки:
Traceback (most recent call last):
  File "File", line 36, in <module>
    make_trade_1_item('Blue Bandana', None, trade_link)
  File "File", line 28, in make_trade_1_item
    partner_asset = [Asset(partner_item_give['id'], game)]
TypeError: 'NoneType' object is not subscriptable
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi
лужу, паяю, ЭВМы починяю
Если такой обмен совершить в принципе возможно, вам надо изучить steam API и понять, как именно в нем совершить такое действие.

Возможны два варианта:
1. Вместо обмена в API есть специальная команда «отдать», либо в виде специального параметра к команде обмена.
2. Возможно, существует специальная шмотка типа «ничего», которую можно получить при отдаче своей обычной шмотки.

Когда вы поймете, как именно совершается такая операция на уровне API, можно двигаться дальше.

Если есть специальная шмотка «ничто», то и надо её указывать вместо None, проблема решится.

Если же есть специальная команда «отдать», то её и надо использовать (возможно, реализовать в вашем коде).

Вопрос, по-сути, не относится к особенностям языка Python, тут дело именно в steam.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы