Esempio n. 1
0
class BotTrade:
    def __init__(self, col):
        self.user = col['username']
        self.psw = col['password']
        self.apikey = col['dev_key']
        self.guard_info = {
            "steamid": str(col['steam_id']),
            "shared_secret": col['configs']['shared_secret'],
            "identity_secret": col['configs']['identity_secret'],
        }
        self.steam_client = SteamClient(self.apikey)
        self.steam_client.login(self.user, self.psw, json.dumps(self.guard_info))

    def send_all_items(self, trade_url, max_for_offer=300):
        my_asset_list = self.get_all_tradable_assetid()
        offer_id_list = []
        while my_asset_list:
            send_asset_list = my_asset_list[:max_for_offer]
            del my_asset_list[:max_for_offer]
            resp_dict = self.steam_client.make_offer_with_url(send_asset_list, [], trade_url, '')
            print(resp_dict)
            offer_id_list.append(resp_dict['tradeofferid'])
            time.sleep(10)
        return offer_id_list

    def send_all_items_to_many(self, trade_url_list):
        result = []
        my_asset_list = self.get_all_tradable_assetid()
        count = len(my_asset_list) // len(trade_url_list)  # 整除
        for index, value in enumerate(trade_url_list):
            if index == len(trade_url_list) - 1:
                data = my_asset_list[count * index:]
            else:
                data = my_asset_list[count * index:count * (index + 1)]
            resp_dict = self.steam_client.make_offer_with_url(data, [], value, '')
            result.append((value, resp_dict['tradeofferid']))
        return result

    def accept(self, trade_offer_id):
        resp = self.steam_client.accept_trade_offer(trade_offer_id)
        print('Accept trade', resp)
        if 'tradeid' in resp:
            return True
        return False

    def get_all_tradable_assetid(self):
        game = GameOptions.DOTA2
        my_items = self.steam_client.get_my_inventory_by_eshao(game)
        my_asset_list = []
        for i in my_items:
            if i['tradable'] == 1:
                my_asset_list.append(Asset(i['assetid'], game))
        return my_asset_list
Esempio n. 2
0
 def test_send_offer_without_sessionid_cookie(self):
     client = SteamClient(self.credentials.api_key)
     client.login(self.credentials.login, self.credentials.password,
                  self.steam_guard_file)
     client._session.cookies.set('sessionid',
                                 None,
                                 domain="steamcommunity.com")
     cookies = client._session.cookies.get_dict('steamcommunity.com')
     self.assertFalse('sessionid' in cookies)
     game = GameOptions.TF2
     asset_id = ''
     my_asset = Asset(asset_id, game)
     trade_offer_url = ''
     make_offer = lambda: client.make_offer_with_url([my_asset], [
     ], trade_offer_url, "TEST")
     self.assertRaises(AttributeError, make_offer)
Esempio n. 3
0
 def test_make_offer_url(self):
     partner_account_id = '32384925'
     partner_token = '7vqRtBpC'
     sample_trade_url = 'https://steamcommunity.com/tradeoffer/new/?partner=' + partner_account_id + '&token=' + partner_token
     client = SteamClient(self.credentials.api_key)
     client.login(self.credentials.login, self.credentials.password,
                  self.steam_guard_file)
     client._session.request('HEAD', 'http://steamcommunity.com')
     partner_steam_id = account_id_to_steam_id(partner_account_id)
     game = GameOptions.CS
     my_items = client.get_my_inventory(game, merge=False)['rgInventory']
     partner_items = client.get_partner_inventory(
         partner_steam_id, game, merge=False)['rgInventory']
     my_first_item = next(iter(my_items.values()))
     partner_first_item = next(iter(partner_items.values()))
     my_asset = Asset(my_first_item['id'], game)
     partner_asset = Asset(partner_first_item['id'], game)
     response = client.make_offer_with_url([my_asset], [partner_asset],
                                           sample_trade_url,
                                           'TESTOWA OFERTA')
     self.assertIsNotNone(response)