Discord.py-Rewrite当存在未知命令或其他错误时发送错误消息

时间:2020-07-07 08:31:14

标签: python python-3.x discord discord.py discord.py-rewrite

我希望能够发送类似await ctx.send("Error: Unknown command. Do -help for acceptable commands."之类的消息(仅供参考,我不是在问如何删除Help is already a defined function之类的消息。);但是我不知道如何为非命令性错误信息,例如,如果某个命令有错误,例如他们没有放置任何参数,那么我可以为此{ {1}}然后定义它。但是我不确定如何开始。并且,如果可能,是否有一种方法可以检查代码底部的错误是什么?例如,如果他们需要管理员,但他们@command.error却丢失了它,或者是否需要允许服务器成员向他们发送消息,那么也许还有其他事情需要检查吗?

TLDR;我希望能够在我的代码底部放一个东西,检查是否有错误,如果有,是否由命令所引起(然后用if isinstance(error, commands.MissingPermissions):表示),但由错误引起如果缺少管理员或缺少角色,或者可能需要他们允许服务器成员在隐私设置中对dm进行管理,那么它还会说些什么。我不想为每个命令都定义一个错误。

额外

我还有一条命令要求数字有效,并且我想要一块代码来检查其是否为整数,如果不是,则给出错误信息,提示它必须为数字。然后检查其是否为正数,如果不是,则给出错误。

1 个答案:

答案 0 :(得分:0)

Discord.py有一个on_command_error事件,该事件将错误作为参数。您可以通过以下方式使用它:

@bot.event
async def on_command_error(ctx, error):
    await ctx.send(f"An error occured: {str(error)}")

以下是每个discord exeptions的列表。
如果您希望为每个错误提供自定义消息,则可以采用以下方式:

@bot.event
async def on_message_error(ctx, error):
    if isinstance(error, discord.ext.commands.errors.CommandNotFound):
        await ctx.send("Unknown command")