Python 列表转换或范围? (或者可能是 Discord py 特定问题)

Python list conversion or range? (or maybe Discord py specific issue)

我之前问过关于如何匹配列表中的元素的问题(这对帮助我解决这个问题可能很重要):

我想使用 J 这是我对上一个问题的期望结果来填充 embed.field.names 或嵌入的描述。但问题是它只是添加一个带有第一个结果的字段并发送嵌入,然后发送带有下一个结果的另一个嵌入,依此类推。参数中的 page = 1 尚未使用,但我想将其用于页码,以便我可以在单个嵌入中一次查看 25。

我希望这是有道理的,感谢帮助我的人:)

    async def test(self, ctx, page = 1):
        scan = f"privatelink"
        async with aiohttp.ClientSession() as cs:
            async with cs.get(scan) as r:
                try: bag = ast.literal_eval(await r.text())
                except: bag = json.loads(await r.text())
        scan2 = 'privatelink'
        async with aiohttp.ClientSession() as cs:
            async with cs.get(scan2) as r:
                c = json.loads(await r.text())
        if bag == []:
            await ctx.send("None")
            return
        bag = bag[0]['items']
        emj = c['smiley']
        nam = c['words']
        for x in emj:
            if x in bag:
                for x in [emj.index(x)]:
                    J = c['words'][x]
                    e = discord.Embed(title=f"Test", color=discord.Colour(value=1111111), 
                    description=f'')
                    e.add_field(name=J, value=f"")
                    await ctx.send(embed=e)

我只想在同一条嵌入消息中包含最多 25 个结果。我不希望机器人为每个结果发送一条新消息。

你的逻辑大错特错了。您为循环中的每个 x 创建了一个新的 Embed 并将其发送到循环内。如果您在循环之前创建嵌入并在循环完成时发送它,您将拥有一个包含多个字段的嵌入

e = discord.Embed(title=f"Test", color=discord.Colour(value=1111111), 
    description=f'')

for x in [emj.index(x)]:
    J = c['words'][x]
    e.add_field(name=J, value=f"")

await ctx.send(embed=e)

您可能还想注意对嵌套循环使用相同的变量名 如果你在 for x 循环中有一个 for x 你会改变 x 并且它很混乱。相反,你可以有一个 'for emoji in emojis' 然后嵌套的是 for x in [emj.index(x)] 希望我正确理解了你的问题