我知道有很多打开的,但我找不到任何解决我的问题,我正在用Python为Discord制作一个Fortnite统计机器人。
我的主要功能在工作(!stats(,但我目前正在尝试为参数"lastgame"添加功能,您可以在命令末尾添加以查看玩家上次玩的游戏的所有统计信息。
主要功能起作用的原因是,从 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"
如您所见,它们都是独立的,并且在响应周围有引号,但是最近的匹配项都在 1 个下拉列表中,大多数没有引号,如果我尝试拉出任何带引号的内容(如 accountId(,它可以工作并响应使用它,但它我选择类似没有引号的 kills 的东西,它会让我在标题中出现错误。
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 这样做,它可以工作并将其输出为值。 但是,如果我将"帐户 ID"更改为"杀死"之类的内容,则会出现错误。我需要让所有这些显示多个值和嵌入字段或仅显示 1。
谢谢 肖恩
就像错误所说的,laststats
是一个int
eger,你不能一起添加int
和str
,例如:
>>> 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)
但是,如果您想执行更复杂的格式设置,以上内容可能更优雅。