我如何为不和谐的机器人 python 3.6 定义 MissingPermissions

Posted

技术标签:

【中文标题】我如何为不和谐的机器人 python 3.6 定义 MissingPermissions【英文标题】:How do i Define MissingPermissions for a discord bot python 3.6 【发布时间】:2019-03-21 06:13:05 【问题描述】:
@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)

它运行,但是当我使用警告命令时,它打印出 MissingPermissions 未定义 如何定义?

eError: name 'MissingPermissions' is not defined

【问题讨论】:

【参考方案1】:

异步分支没有定义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 对象中缺少的权限,但它应该足够接近以模拟相同的控制流

【讨论】:

以上是关于我如何为不和谐的机器人 python 3.6 定义 MissingPermissions的主要内容,如果未能解决你的问题,请参考以下文章

Discord Bot python 3.6 报告命令

如何为不和谐机器人调用异步函数

如何为不和谐的机器人制作一个可变的嵌入列表?

你如何为你的不和谐机器人创建一个永久的 oauth 邀请?

如何为不和谐服务器制作“!踢”命令消息?

如何为不和谐的 js 解决快照(50/50 的机会踢成员)