@alwaysneedhelp

Как устранить ошибку TypeError: 'NoneType' object is not subscriptable steampy?

Не может отправить нормальный запрос в стим, то есть когда я вывожу себе на экран ссылку, которая была создана библиотекой и ввожу её в гугле, то всё нормально, а тут ... (и при чём всё это происходит далеко не систематически, т.е. иногда он может заработать и работать нормально до конца, а иногда просто тупить)
(сурс (из которого исходит ошибка, т.е. лишь один файл(и то часть из-за ограна, но думаю этого хватит для понимания ситуации)) , оставлю только его потому что все введённые мною данные корректны)
#
    @login_required
    def get_my_inventory(self, game: GameOptions, merge: bool = True, count: int = 5000) -> dict:
        steam_id = self.steam_guard['steam_id']
        print(steam_id)
        return self.get_partner_inventory(steam_id, game, merge, count)

    @login_required
    def get_partner_inventory(self, partner_steam_id: str, game: GameOptions, merge: bool = True, count: int = 5000) -> dict:
        url = '/'.join([SteamUrl.COMMUNITY_URL, 'inventory', partner_steam_id, game.app_id, game.context_id])
        print(url)
        params = {'l': 'english',
                  'count': count}
        response_dict = self._session.get(url).json()
        print(response_dict)
        if response_dict['success'] != 1:
            raise ApiException('Success value should be 1.')
        if merge:
            return merge_items_with_descriptions_from_inventory(response_dict, game)
        return response_dict


(логи ошибки)

Traceback (most recent call last):
  File "C:\Users\bsliv\OneDrive\Рабочий стол\My\Programming\Bot TG\saver_for_bot.py", line 134, in <module>
    bot.polling()
  File "C:\Users\bsliv\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\__init__.py", line 1043, in polling
    self.__threaded_polling(non_stop=non_stop, interval=interval, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "C:\Users\bsliv\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\__init__.py", line 1118, in __threaded_polling
    raise e
  File "C:\Users\bsliv\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\__init__.py", line 1074, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\bsliv\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\util.py", line 147, in raise_exceptions
    raise self.exception_info
  File "C:\Users\bsliv\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\util.py", line 90, in run
    task(*args, **kwargs)
  File "C:\Users\bsliv\OneDrive\Рабочий стол\My\Programming\Bot TG\saver_for_bot.py", line 89, in item
    overall_func(price_to_sell*100, selected_acc, list_of_proxies[counter])
  File "C:\Users\bsliv\OneDrive\Рабочий стол\My\Programming\Bot TG\saver_for_body_for_bot.py", line 109, in overall_func
    items = steam_client.get_my_inventory(GameOptions.DOTA2).values()
  File "C:\Users\bsliv\AppData\Local\Programs\Python\Python310\lib\site-packages\steampy\client.py", line 26, in func_wrapper
    return func(self, *args, **kwargs)
  File "C:\Users\bsliv\AppData\Local\Programs\Python\Python310\lib\site-packages\steampy\client.py", line 95, in get_my_inventory
    return self.get_partner_inventory(steam_id, game, merge, count)
  File "C:\Users\bsliv\AppData\Local\Programs\Python\Python310\lib\site-packages\steampy\client.py", line 26, in func_wrapper
    return func(self, *args, **kwargs)
  File "C:\Users\bsliv\AppData\Local\Programs\Python\Python310\lib\site-packages\steampy\client.py", line 105, in get_partner_inventory
    if response_dict['success'] != 1:
TypeError: 'NoneType' object is not subscriptable
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
@alwaysneedhelp Автор вопроса
Я нашёл ответ, дело в том что я сохранял сессию request в файле типа pkl, и прога заходила на старую сессию и запрашивала страницу, на что Steam отвечал отказом из-за 'перегрузки' одной сессии. Стоило всего лишь периодически обновлять сессию, пересоздавая pkl файл.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Сделайте проверку типа response_dict до строки if response_dict['success'] != 1:
Что-нибудь вроде
if isinstance(response_dict, dict) and  response_dict['success'] != 1:
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы