Fortnite Discord 机器人 JSON
Posted
技术标签:
【中文标题】Fortnite Discord 机器人 JSON【英文标题】:Fortnite Discord Bot JSON 【发布时间】:2021-03-12 16:30:04 【问题描述】:我正在开发我的 fortnite discord 机器人,我想切换化妆品 API。但是我想切换到 AKA https://fortniteapi.io 的 API 不允许我用我的代码来表达 json。请有人帮忙。
这是我的代码:
async with aiohttp.ClientSession() as session:
async with session.get(f"https://fortniteapi.io/items/list?name=item", headers='Authorization':'auth') as r:
try:
json = await r.json()
for sub_dict in json['items']:
items = sub_dict
print(items)
embed=discord.Embed(title=f"items['id']", description=f"items['description']")
embed.add_field(name="Name", value=f"items['name']", inline=True)
embed.add_field(name="Type", value=f"items['type']", inline=True)
embed.add_field(name="Set", value=f"items['set']", inline=True)
embed.set_footer(text="Jonsey Bot | Created By ignBane#1828")
await ctx.send(embed=embed)
except Exception as e:
embed=discord.Embed(title="Oops, that wasn't supposed to happen.", color=0xff0000)
embed.add_field(name="Error:", value=f"``\ne\n``", inline=True)
embed.set_footer(text="Jonsey Bot | Created By ignBane#1828")
await ctx.send(embed=embed)
这是我的网站 json。
'result': True, 'lang': 'en', 'itemsCount': 1, 'items': [['id': 'CID_610_Athena_Commando_M_ShiitakeShaolin', 'type': 'outfit', 'name': 'Madcap', 'description': 'The master of mushrooms enters the fight.', 'rarity': 'epic', 'internalRarity': 'epic', 'price': 0, 'added': '2020-07-04', 'reactive': False, 'releaseDate': None, 'interest': 7.84, 'images': 'icon': 'https://media.fortniteapi.io/images/4a7f5d675a4949867abca11cbfe29206/transparent.png', 'full_size': 'https://media.fortniteapi.io/images/4a7f5d675a4949867abca11cbfe29206/featured.png', 'featured': None, 'background': 'https://media.fortniteapi.io/images/4a7f5d675a4949867abca11cbfe29206/background.png', 'full_background': 'https://media.fortniteapi.io/images/4a7f5d675a4949867abca11cbfe29206/background_full.en.png', 'video': None, 'gameplayTags': ['Cosmetics.UserFacingFlags.HasVariants', 'Cosmetics.Source.ItemShop', 'Cosmetics.Set.MushroomQueen', 'Cosmetics.Filter.Season.12'], 'set': 'Fungus King']]
这是我遇到的错误
list indices must be integers or slices, not str
它应该做的是发送所有信息,例如名称、类型、设置之类的东西。但是由于错误处理,机器人会发送此“列表索引必须是整数或切片,而不是 str”。请有人帮忙。
【问题讨论】:
【参考方案1】:您的 JSON 索引不正确。 json['items']
包含一个列表,持有一个列表,持有一个字典。
这两个列表中只有一个元素,所以我认为循环遍历它们不是正确的做法。而是执行以下操作:
json = await r.json()
items = json['items'][0][0]
embed=discord.Embed(title=f"items['id']", description=f"items['description']")
# And so on...
您收到的错误消息表明您正在像对待字典一样对待列表。鉴于从列表和字典中访问元素都使用方括号,当您看到该错误消息时,您需要查看您的代码并仔细检查您使用的类型是否正确。
【讨论】:
【参考方案2】:看来 sub_dict 实际上是一个数组而不是一个对象,所以尝试将第 6 行设置为
items = sub_dict[0]
【讨论】:
以上是关于Fortnite Discord 机器人 JSON的主要内容,如果未能解决你的问题,请参考以下文章
使用 JSON/Python 收集信息的 Discord 机器人显示相同的数据
我如何让我的机器人在 .JSON 文件 discord.js 中写入多行 [重复]