TypeError:'dict'对象不可用于discord.py中的API

时间:2018-10-21 18:37:38

标签: python discord discord.py

我是编码的新手,我正在制作一个访问API的不和谐机器人,但是我正在使用的特定功能根本无法正常工作,在api中,所有内容都显示了这样的内容,

    [{imageUrl: "https://cdn.thetrackernetwork.com/cdn/fortnite/F06C5733_large.png", manifestId: 5733,…},…]
0: {imageUrl: "https://cdn.thetrackernetwork.com/cdn/fortnite/F06C5733_large.png", manifestId: 5733,…}
1: {imageUrl: "https://cdn.thetrackernetwork.com/cdn/fortnite/7F34984_large.png", manifestId: 984,…}
2: {imageUrl: "https://cdn.thetrackernetwork.com/cdn/fortnite/E6B6417_large.png", manifestId: 417,…}
3: {,…}
4: {imageUrl: "https://cdn.thetrackernetwork.com/cdn/fortnite/845E743_large.png", manifestId: 743,…}
5: {imageUrl: "https://cdn.thetrackernetwork.com/cdn/fortnite/3E9F5241_large.png", manifestId: 5241,…}
6: {imageUrl: "https://cdn.thetrackernetwork.com/cdn/fortnite/9C766302_large.png", manifestId: 6302,…}
7: {imageUrl: "https://cdn.thetrackernetwork.com/cdn/fortnite/65696303_large.png", manifestId: 6303,…}
8: {imageUrl: "https://cdn.thetrackernetwork.com/cdn/fortnite/25A56304_large.png", manifestId: 6304,…}
9: {imageUrl: "https://cdn.thetrackernetwork.com/cdn/fortnite/BBB66307_large.png", manifestId: 6307,…}

您可以看到它的列表,而不是字典,所以我不能使用与其他命令相同的代码,因为那是字典

  if req.status_code == 200:
    try:
      print(req.json())
      lifetime_stats = req.json()['lifeTimeStats']
      return lifetime_stats[0:]
    except KeyError:
      return False
  else:
    return False

我试图为此使用的代码是

  if req.status_code == 200:
    try:
      print(req.json())
      storefront_catalog = req.json()[0]
      return storefront_catalog()
    except KeyError:
      return False
  else:
    return False

当我尝试将req.json的结尾设为字符串时,我不断收到错误TypeError: list indices must be integers or slices, not str,因此我将其设为一个数字并从return storefront_catalog中删除了该数字,现在它正在搜索api并在控制台中显示所有内容,然后给出错误TypeError: 'dict' object is not callable

我可能在这里说了一些错误,因为我说我对编码和python很陌生。

感谢提供帮助的人

1 个答案:

答案 0 :(得分:1)

这只是一个猜测,但看来您的最新错误是执行return storefront_catalog()的结果。由于此时storefront_catalog并不是可调用的对象而是字典,因此您不能像方法那样调用它。我不确定您要使用此return语句做什么,但是如果您想“使其正常工作”,则可以尝试使用return storefront_catalog。顺便说一句,我建议在调试代码时使用type方法作为预备步骤。这将告诉您您正在使用哪种类型,并应帮助您弄清楚哪里出了问题。您可以像这样用print来调用它:

print(type(storefront_catalog))