Python Discord bot在出现异常时发送文本

Python Discord bot在出现异常时发送文本,python,python-3.x,discord,discord.py,discord.py-rewrite,Python,Python 3.x,Discord,Discord.py,Discord.py Rewrite,我的Discord机器人中有一个函数,它就像一个魔法球,你可以问它一个问题,然后随机回答。调用函数但未询问任何问题时会发生异常,我希望在调用该函数的通道上打印某种错误消息,以通知用户发生此错误。以下是我的尝试: @client.command(aliases=['8ball', 'eightball']) async def _8ball(ctx, *,question): responses = ['yes', 'no', 'maybe so'] response = rand

我的Discord机器人中有一个函数,它就像一个魔法球,你可以问它一个问题,然后随机回答。调用函数但未询问任何问题时会发生异常,我希望在调用该函数的通道上打印某种错误消息,以通知用户发生此错误。以下是我的尝试:

@client.command(aliases=['8ball', 'eightball'])
async def _8ball(ctx, *,question):
    responses = ['yes', 'no', 'maybe so']
    response = random.choice(responses)
    try:
        await ctx.send(f'Question: {question}\n\
        Answer: {response}')
    except MissingRequiredArgument:
        await ctx.send("Please ask a question")
        pass
但是除了在终端上,没有打印出来。 有什么建议吗

@client.event
async def on_command_error(ctx, error):
    if isinstance(error, commands.MissingRequiredArgument) and "replace me" in str(error):
        await ctx.send("You're missing a required argument idiot.¯\_(ツ)_/¯")
对于discord.py,您不能真正使用try-and-except。您需要检查on_命令错误事件。将
“Replace me”
替换为丢失RequiredArgument错误后出现的任何内容。例如
MissingRequiredArgument:arg是缺少的必需参数。
然后将
“replace me”
替换为
“arg是缺少的必需参数”


顺便说一句,下次当您收到代码中的错误时,请将它们添加到您的问题中。这有助于我们了解出了什么问题。

谢谢您的帮助!我假设其他错误也是这样?这是否意味着这是一个将处理所有其他
MissingRequiredArgument
向前的事件是的,其他错误也是如此。至于处理多个MissingRequiredArguments,这取决于str中的消息(错误)。只要确保参数名称不同,错误就会不同。