Example #1
0
class Client:
    def __init__(self):
        self.client = SteamClient(api_key)

    def login(self):
        self.client.login(username, password, dumps(secrets))

        if self.client.was_login_executed:
            log.info(f'Logged into Steam as {f.GREEN + username}')
        else:
            log.error('Login was not executed')

    def logut(self):
        log.info('Logging out...')
        self.client.logout()

    def get_offers(self):
        return self.client.get_trade_offers(merge=True)['response']['trade_offers_received']

    def get_offer(self, offer_id):
        return self.client.get_trade_offer(offer_id, merge=True)['response']['offer']

    def get_receipt(self, trade_id):
        return self.client.get_trade_receipt(trade_id)

    def accept(self, offer_id: str):
        log.trade('Trying to accept offer', offer_id)
        self.client.accept_trade_offer(offer_id)

    def decline(self, offer_id: str):
        log.trade('Trying to decline offer', offer_id)
        self.client.decline_trade_offer(offer_id)
Example #2
0
class Client:
    def __init__(self, bot: dict):
        self.log = Log(bot["name"])
        self.username = bot["username"]
        self.password = bot["password"]
        self.secrets = bot["secrets"]
        self.client = SteamClient(bot["api_key"])

    def login(self) -> None:
        try:
            self.client.login(self.username, self.password,
                              dumps(self.secrets))

            if self.client.was_login_executed:
                self.log.info(
                    f"Logged into Steam as {f.GREEN + self.username}")
            else:
                self.log.error("Login was not executed")

        except InvalidCredentials as e:
            self.log.error(e)

    def logout(self) -> None:
        self.log.info("Logging out...")
        self.client.logout()

    def get_offers(self) -> dict:
        try:
            return self.client.get_trade_offers(
                merge=True)["response"]["trade_offers_received"]
        except KeyError:
            return {}

    def get_offer(self, offer_id: str) -> dict:
        try:
            return self.client.get_trade_offer(offer_id,
                                               merge=True)["response"]["offer"]
        except KeyError:
            return {}

    def get_receipt(self, trade_id: str) -> dict:
        return self.client.get_trade_receipt(trade_id)

    def accept(self, offer_id: str) -> None:
        self.log.trade("Trying to accept offer", offer_id)
        self.client.accept_trade_offer(offer_id)

    def decline(self, offer_id: str) -> None:
        self.log.trade("Trying to decline offer", offer_id)
        self.client.decline_trade_offer(offer_id)
Example #3
0
 def test_get_trade_offer(self):
     client = SteamClient(self.credentials.api_key)
     trade_offer_id = '1442685162'
     offer = client.get_trade_offer(trade_offer_id)
     self.assertIsNotNone(offer)
Example #4
0
class TradeBoost:
    GAME = GameOptions.STEAM

    def __init__(self, cfg_account: str, recipient_id: str) -> None:

        self.cfg_account = json.load(open(cfg_account))
        self.login = self.cfg_account["login"]
        self.api_token = self.cfg_account['API']
        self.password = self.cfg_account['password']
        self.recipient_id = recipient_id
        self.partner_id = int(self.recipient_id) - 76561197960265728
        self.adapter = CustomAdapter(logger, {'account': self.login})

        try:
            self.account = SteamClient(self.api_token)
            self.account.login(self.login, self.password, cfg_account)
            self.adapter.info(translate.word('good_auth'))
            self.decline_all_trades()

        except steampy.exceptions.InvalidCredentials as e:
            self.adapter.warning(translate.word('bad_auth').format(e))

    def decline_all_trades(self):

        params = {
            'key': self.api_token,
            'get_sent_offers': 1,
            'get_received_offers': 0,
            'get_descriptions': 0,
            'language': 'english',
            'active_only': 1,
            'historical_only': 0,
            'time_historical_cutoff': ''
        }
        response = (self.account.api_call('GET', 'IEconService',
                                          'GetTradeOffers', 'v1',
                                          params).json()['response'])
        count_decline = 0
        if 'trade_offers_sent' in response:
            for offer in response['trade_offers_sent'][:5]:
                if offer['accountid_other'] == self.partner_id:
                    self.account.cancel_trade_offer(offer['tradeofferid'])
                    count_decline += 1
        self.adapter.info(
            translate.word('trade_decline').format(count_decline))

    def get_item(self) -> str:

        try:
            items = self.account.get_my_inventory(game=self.GAME, count=15)
            item_id = choice(list(items.keys()))
            about_item = items[item_id]
            if item_id and state.not_in(
                    item_id) and about_item['tradable'] == 1:
                self.adapter.info(
                    translate.word('item_received').format(
                        item_id, about_item["name"]))
                state.add(item_id)
                return item_id
            else:
                return ''
        except Exception as e:
            self.adapter.warning(translate.word('bad_send').format(e))
            return ''

    def send_trades(self) -> str:
        item_id = ''
        while item_id in ['', None]:
            item_id = self.get_item()

        asset_one = Asset(item_id, self.GAME)

        trade = self.account.make_offer([asset_one], [], self.recipient_id)
        if validate_api_response(trade):
            self.adapter.info(
                translate.word('sent_trade').format(trade["tradeofferid"]))
            return trade['tradeofferid']
        else:
            self.adapter.warning(
                translate.word('bad_send').format(list(trade.values())[0]))
            self.decline_all_trades()

    def accept_trade(self, trade_id: str) -> None:
        trade_info = self.account.get_trade_offer(trade_id)
        if 'offer' in trade_info['response']:
            if int(trade_info['response']['offer']
                   ['accountid_other']) == self.partner_id:
                resp = self.account.accept_trade_offer(trade_id)
                if validate_api_response(resp):
                    self.adapter.info(
                        translate.word('accepted_trade').format(trade_id))
                    item = trade_info['response']['offer']['items_to_receive'][
                        0]['assetid']
                    state.remove(item)
                else:
                    self.adapter.warning(
                        translate.word('bad_accept').format(
                            trade_id,
                            list(resp.values())[0]))
        else:
            self.adapter.warning(translate.word('bad_send').format(trade_info))