TypeError:+不支持的操作数类型:使用discord.py

时间:2018-10-20 23:30:20

标签: python discord discord.py

我知道其中有很多开放的地方,但是我找不到能解决我问题的任何东西,我正在用Python for Discord制作Fortnite Statistics Bot。

我的主要功能正在运行(!stats),但是我目前正在尝试为参数“ lastgame”添加功能,您可以将其添加到命令末尾以查看玩家最近玩过的游戏的所有统计信息。 / p>

之所以可以使用主要功能,是因为从API中,这些功能显示为所有单独的内容,并在值周围加上了引号:

7: {key: "Matches Played", value: "83"}
key: "Matches Played"
value: "83"
8: {key: "Wins", value: "0"}
key: "Wins"
value: "0"
9: {key: "Win%", value: "0%"}
key: "Win%"
value: "0%"
10: {key: "Kills", value: "36"}
key: "Kills"
value: "36"
11: {key: "K/d", value: "0.43"}
key: "K/d"
value: "0.43"

如您所见,它们都是独立的,并且在响应周围都带有引号,但是lastMatches大部分都位于1下拉列表中,而没有引号,如果我尝试使用引号(例如accountId)提取任何东西,它将起作用并做出响应,但是我选择了不带引号的杀死字符,这给了我标题错误。

accountId: "f487380b-750c-4762-a6a6-6fe129895ae2"
dateCollected: "2018-10-20T17:26:40.74"
id: 887912262
kills: 0
matches: 4
minutesPlayed: 4
platform: 3
playlist: "p10"
score: 246
top1: 0
top3: 0
top5: 0
top6: 0
top10: 0
top12: 0
top25: 0

这是我的代码:

if platform not in ('pc','xbl','psn'):
  await client.send_message(message.channel, 'Usage: ' + COMMAND_PREFIX + 'stats <pc,xbl,psn> <name> lastgame')
  return
else:
  lastgame = fortnite_tracker_api_last(platform,words[2])

  if lastgame:
    laststats = lastgame[0]['accountId']

然后我将其添加到不和谐嵌入中

embed.add_field(name="Last Stats", value=laststats + '\n', inline=False)

,如果我尝试使用accountId起作用,则将其作为值输出。但是,如果我将“ accountId”更改为“ kills”,则会收到错误消息。我需要将所有这些显示都带有多个值和嵌入字段,或者仅显示1个。

谢谢, 肖恩

1 个答案:

答案 0 :(得分:1)

就像错误说的那样,laststatsint的段,并且您不能同时添加intstr,例如:

>>> 3 + 'foo'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

不过,您可以将int转换为str,例如,通过格式化:

embed.add_field(name="Last Stats", value='{}\n'.format(laststats), inline=False)

或使用str(..)构造函数:

embed.add_field(name="Last Stats", value=str(laststats) + '\n', inline=False)

但是,如果您想执行更复杂的格式化,则上面的内容可能更优雅。