因此,我想在discord.py的全局错误处理程序on_command_error(ctx, error)
中处理我的每个命令,而我想做的就是告诉用户缺少哪些参数,但仅是discord.py(我认为)为我提供了一个缺少的参数,我不想告诉用户,例如在清除命令中,缺少的参数是数量,然后在2条消息中也缺少另一个参数,我只想告诉他们全部缺少的参数。
这是我的代码:
async def on_command_error(ctx, error):
if isinstance(error, cmd.MissingRequiredArgument):
arg = error.param.name
await ctx.send(arg)
不幸的是,及其上方仅显示1个缺少的参数,并且 error 变量未提供更多信息。 所以我的问题是有什么办法可以得到所有缺少的论点?如果不在discord.py库中,那么可能还有另一个?
答案 0 :(得分:0)
在我自己研究了一些之后,discord.py 仅在第一个缺少它的参数时引发错误。例如,如果您有 3 个参数并且您提供了第一个,则会引发错误,指出缺少参数(参数名称)。它不是对所有的人都这样做,而是对需要但在执行命令时找不到的第一个参数。您的代码很好,因为它告诉他们缺少的参数。然后,如果他们包含它,它会显示下一个。不幸的是,据我所知,这是不可能的。
答案 1 :(得分:0)
您必须为此创建自己的错误,
class PurgeError(commands.CommandError):
def __init__(self, text):
self.text = text
def __str__(): #used to get string of error
return self.text
async def purge(ctx, args = None): #your command
if args is None: #missing argument
raise PurgeError("args is a required argument that is missing")
async def on_command_error(ctx, error): #error handler
if isinstance(error, PurgeError):
await ctx.send(error) #format error