Discord.py Переписать пользовательские ошибки - PullRequest
0 голосов
/ 08 ноября 2018

Я очень новичок в кодировании, и мне было интересно, как бы я реализовал пользовательские ошибки, такие как "отсутствует роль разработчика" здесь:

    @bot.command()
@commands.has_any_role("Temp.", "Owner")
async def sh(ctx):
    await ctx.message.add_reaction(':true:508022488093949973')
    await ctx.send("<a:siren:507952050181636098> `Shutting down` <a:siren:507952050181636098>")
    await bot.logout()

У меня есть такой простой обработчик

@bot.event
async def on_command_error(ctx, error):
    await ctx.message.add_reaction(':false:508021839981707304')
    await ctx.send("<a:siren:507952050181636098> `Invalid command` <a:siren:507952050181636098>")

но всегда выводит недопустимую команду

1 Ответ

0 голосов
/ 08 ноября 2018

Вы можете проверить класс error, чтобы определить, какую ошибку вы обрабатываете. Если вы сопоставите это с обработчиком ошибок , специфичным для команды , вы можете написать ответ, который сообщит пользователю о том, что им не хватает:

@sh.error
async def sh_error(ctx, error):
    if isinstance(error, commands.CheckFailure):
        await ctx.send("You do not have the correct roles Temp. or Owner")

@bot.event
async def on_command_error(ctx, error):
    if not isinstance(error, commands.CheckFailure): 
        await ctx.message.add_reaction(':false:508021839981707304')
        await ctx.send("<a:siren:507952050181636098> `Invalid command` <a:siren:507952050181636098>")
...