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 中写入多行 [重复]

Discord 中所有私人消息的 JSON

discord.js:随机化存储为 json 文件的数组内容

discord.js:JSON 星球属性未定义

discord.py - 在 bot 离开服务器后从 json 中删除公会