TypeError: неподдерживаемые типы операндов для ошибок +: 'int' и 'str' при извлечении данных из API с помощью discord.py - PullRequest
0 голосов
/ 21 октября 2018

Я знаю, что довольно много из них открыто, но я не могу найти ничего, что решило бы мою проблему, я делаю статистический бот Fortnite с Python для Discord.

У меня работает основной функционал (! 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"

Как вы можете видеть, они все отделены друг от друга и имеют кавычки вокруг ответа, однако недавние соответствия в одном выпадающем спискебольшинство без кавычек, если я пытаюсь что-то извлечь с помощью кавычек (например, 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)

, и если я попробую это сntId работает и выводит это как значение.однако, если я изменю «accountId» на что-то вроде «kill», я получаю ошибку.Мне нужно, чтобы все это показывалось либо с несколькими значениями и полями для встраивания, либо просто 1.

Спасибо, Шон

1 Ответ

0 голосов
/ 21 октября 2018

Как и в сообщении об ошибке, 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=<b>'{}\n'.format(</b>laststats<b>)</b>, inline=False)

или с помощью конструктора str(..):

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

, но приведенное выше, вероятно, более элегантно, если вы хотите выполнить более сложное форматирование.

...