首页 > 解决方案 > 尝试搜索不同类型的定义 api discord py

问题描述

当我尝试使用 API 搜索术语时,我遇到了一个错误,所以我想要完成的是,如果该术语是名词,它将打印名词部分的定义,如果它是动词,那么它会打印动词部分。

 @commands.command(
        name="dict",
        description="Allows the user to get a definition from Urban Dictionary",
        aliases=['dictionary']
    )
    async def dict(self, ctx, *, entry):
        url = "https://twinword-word-graph-dictionary.p.rapidapi.com/definition/"

        querystring = {"entry": entry}
        headers = {
            'x-rapidapi-key': self.bot.quote_api_key,
            'x-rapidapi-host': "twinword-word-graph-dictionary.p.rapidapi.com"
        }

        async with ClientSession() as session:
            async with session.get(url, headers=headers, params=querystring) as response:
                r = await response.json()
                print(r)
            if r['meaning']['noun'] in entry:
                embed = discord.Embed(title="Term:", description=f"{entry}")
                embed.add_field(name="Definition:", value=f'{r["meaning"]["noun"]}')

                embed.set_author(name=ctx.author.display_name, icon_url=ctx.message.author.avatar_url)

                await ctx.send(embed=embed)
            elif r['meaning']['verb'] in entry:
                embed = discord.Embed(title="Term:", description=f"{entry}")
                embed.add_field(name="Definition:", value=f"{r['meaning']['verb']}")

                embed.set_author(name=ctx.author.display_name, icon_url=ctx.message.author.avatar_url)

                await ctx.send(embed=embed)
            elif r['meaning']['adverb'] in entry:
                embed = discord.Embed(title="Term:", description=f"{entry}")
                embed.add_field(name="Definition:", value=f"{r['meaning']['adverb']}")

                embed.set_author(name=ctx.author.display_name, icon_url=ctx.message.author.avatar_url)

                await ctx.send(embed=embed)
            elif r['meaning']['adjective'] in entry:
                embed = discord.Embed(title="Term:", description=f"{entry}")
                embed.add_field(name="Definition:", value=f"{r['meaning']['adjective']}")

                embed.set_author(name=ctx.author.display_name, icon_url=ctx.message.author.avatar_url)

                await ctx.send(embed=embed)
In embed.fields.0.value: This field is required

当它尝试抛出 ['meaning']['noun'] 的第一个嵌入时会出现错误,然后在发生这种情况时不再发送任何嵌入。这个问题,不做 if 和 elif 我只能搜索它是名词还是动词.

标签: python-3.xapidiscorddiscord.py-rewrite

解决方案


推荐阅读