无法获取 client.command 参数以通过 discord.py 中的键值解析 API 响应

Can not get client.command parameter to parse API response by key value in discord.py

我正在现有机器人上构建一个命令,它将搜索 API 并将棒球运动员的名字作为参数来查询 json 响应。我已经让所有东西在测试中正常工作,只是为了我的生活我无法弄清楚如何将结果限制为仅包含在 discord 中调用命令时传递的查询参数的结果。

例如:用户将键入 !card Adam Dunn,只有键“name”的值“Adam Dunn”会 return。目前,无论为参数键入什么内容,都会发送整个第一页结果,并且使用我的嵌入逻辑 运行ning,每个结果都会单独嵌入,这并不理想。

为了便于阅读,我只包含了相关的代码行,没有包含大量嵌入的结果。

它一定是非常简单的东西,但我想我只是盯着它看了太久才看到它。任何帮助将不胜感激,谢谢!

下面是命令为 运行:

时的控制台输出

这是我目前正在使用的代码:

async def card(ctx, *, player_name: str):
    async with ctx.channel.typing():
        async with aiohttp.ClientSession() as cs:
            async with cs.get("https://website.items.json") as r:
                data = await r.json()
                listings = data["items"]
                for k in listings:
                    if player_name == k["name"]
                        print()```

希望我没听错。如果用户没有给player_name那么你就一直搜索什么都没有,如果没有给player_name你就想结束。如果是这样的话。

player_name: str=None 的默认值设置为 None 然后在代码的开头检查它是否存在。

async def card(ctx, *, player_name: str=None):
    if not player_name:
        return await ctx.send('You must enter a player name')

    # if there is a name do this
    async with ctx.channel.typing():
        async with aiohttp.ClientSession() as cs:
            async with cs.get("https://theshownation.com/mlb20/apis/items.json") as r:
                data = await r.json()
                listings = data["items"]
                for k in listings:
                    if player_name == k["name"]
                        print()```

更新:

我是个白痴。按预期工作,但因为我正在搜索的 player_name 不在结果的第一页上,所以它没有显示。当使用 API 结果第一页上的 player_name 时,它工作得很好。

这是分页问题,​​不是键值问题。