【问题标题】:Discord.py-Rewrite Sending an Error message when there is an unknown command or other errorDiscord.py-Rewrite 在出现未知命令或其他错误时发送错误消息
【发布时间】:2020-10-27 11:14:53
【问题描述】:

我希望能够发送类似await ctx.send("Error: Unknown command. Do -help for acceptable commands." 或类似的消息(仅供参考,我不是在问如何删除Help is already a defined function 或类似的东西。);但我不知道如何为不是命令的东西发出错误消息,比如如果命令有错误,比如他们没有输入任何参数,那么我可以为那个 @ 出错987654324@ 然后我定义它。但我不确定如何开始。如果可能的话,是否有办法在代码底部检查错误是什么?比如如果他们需要管理员但他们缺少它然后if isinstance(error, commands.MissingPermissions): 或者如果他们需要允许服务器成员向他们发送消息,也许需要检查不同的事情?

TLDR;我希望能够在我的代码的底部有一个东西来检查是否有错误,如果有,如果它是由不存在的命令引起的(然后它用ctx.send 表示)但是如果它是由丢失引起的管理员或缺少角色,或者他们可能需要允许服务器成员在隐私设置中对他们进行 dm,然后它也说明了一些事情。我不想为每个命令都定义一个错误。

额外

我还有一个需要数字才能工作的命令,我想要一个代码块来检查它是否为整数,如果不是,则给出一个错误,指出它需要是一个数字。然后检查它是否为正数,如果不是,则给出错误。

【问题讨论】:

  • 在基本错误处理上参考此example

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


【解决方案1】:

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")

【讨论】:

    猜你喜欢
    • 2020-11-27
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 2012-04-13
    • 2021-03-08
    • 2017-08-18
    • 2021-07-18
    • 1970-01-01
    相关资源
    最近更新 更多