Как определить MissingPermissions для диска python 3.6 - PullRequest
0 голосов
/ 16 октября 2018
@warn.error
async def kick_error(error, ctx):
  if isinstance(error, MissingPermissions):
      text = "Sorry {}, you do not have permissions to do that!".format(ctx.message.author)
      await bot.send_message(ctx.message.channel, text)

Он работает, но когда я использую команду warn, он печатает, что MissingPermissions не определена. Как мне определить это?

eError: name 'MissingPermissions' is not defined

1 Ответ

0 голосов
/ 16 октября 2018

Асинхронная ветвь не определяет 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, но он должен быть достаточно близко, чтобы имитировать тот же поток управления

...