繁体   English   中英

如何从 discord.py 的错误中获取参数?

[英]How can I get an argument from error for discord.py?

我想得到如下图所示的参数:

在此处输入图片说明

我的代码:

class Admin(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @commands.command()
    async def purge(self, ctx, amount: int):
        await ctx.channel.purge(limit=amount+1)

    @purge.error
    async def purge_error(self, ctx, error):
        if isinstance(error, commands.MissingRequiredArgument):
            await ctx.send('Please enter a number.')
        elif isinstance(error, commands.BadArgument):
            await ctx.send('This is not a number.')

我该怎么做?

commands.BadArgument未通过其他异常(如commands.MissingRequiredArgument作为param属性的inspect.Parameter

如果您尝试获取MissingRequiredArgument的参数名称,则可以仅使用该属性和Parameter.name

否则,通常会向BadArgument传递消息。 最常见的情况是一个包含Parameter.name的字符串,格式为'Converting to "{}" failed for parameter "{}".'.format(name, param.name)其中name是转换器名称和paramParameter ,并且解析这可能是您图像中的机器人如何获取它。 在这种情况下,您可以通过将BadArgument转换为字符串或作为异常的args属性返回的元组中的第一个也是唯一的参数来获取此消息。 有关更多详细信息,请参阅Python 处理异常的文档

但请注意,可以出于整数转换以外的原因以及不同或没有消息的原因引发BadArgument ,例如布尔转换器、Discord 转换器、自定义转换器等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM