Асинхронная ветвь не определяет MissingPermissions
.Вместо этого has_permissions
повысит CheckFailure
.
Если вы хотите написать свой собственный has_permissions
, который вызывает уникальную ошибку, вы можете создать подкласс CheckFailure
самостоятельно:
from discord.ext.commands import CheckFailure, check
class MissingPermissions(CheckFailure): pass
def has_permissions(**perms):
def predicate(ctx):
msg = ctx.message
ch = msg.channel
permissions = ch.permissions_for(msg.author)
if all(getattr(permissions, perm, None) == value for perm, value in perms.items()):
return True
raise MissingPermissions()
return check(predicate)
Это нене совсем так, как переписать has_permissions
, который включает в себя отсутствующие разрешения для объекта MissingPermissions
, но он должен быть достаточно близко, чтобы имитировать тот же поток управления