【问题标题】:Discord.py Delete Message on permission ErrorDiscord.py 删除权限错误消息
【发布时间】:2021-07-30 16:47:11
【问题描述】:

我即将为我的 Discord Bot 编写两个单独的帮助命令。 Ohne 当用户具有踢权限时应该显示,如果用户没有,则应该显示另一个。我的代码如下所示:

@commands.command(aliases=['Help'])
@has_permissions(kick_members = True)
async def help(self, ctx):
    await ctx.message.delete()
    print("you have permissions")

@help.error
async def Help(self, error, ctx):

    await ctx.message.delete()
    print("you have no permissions")

但是当没有权限的人尝试运行该命令时,控制台会引发此错误:

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'MissingPermissions' object has no attribute 'message'

我现在的问题是:如何删除邮件?

【问题讨论】:

    标签: python discord.py


    【解决方案1】:

    这是 discord.py 文档中的一个示例:link

    错误处理程序的第一个参数是Context,而第二个参数是从CommandError 派生的异常。在文档的Exceptions 页面中可以找到错误列表。

    @bot.command()
    async def info(ctx, *, member: discord.Member):
        """Tells you some info about the member."""
        fmt = '{0} joined on {0.joined_at} and has {1} roles.'
        await ctx.send(fmt.format(member, len(member.roles)))
    
    @info.error
    async def info_error(ctx, error):
        if isinstance(error, commands.BadArgument):
            await ctx.send('I could not find that member...')
    

    如您所见,ctx 是第一个参数

    所以只需将 async def Help(self, error, ctx): 更改为 async def Help(self, ctx, error):


    但您也应该将错误函数重命名为 help_error 而不是 Help;)

    【讨论】:

      猜你喜欢
      • 2018-06-29
      • 2021-09-08
      • 2022-08-18
      • 2018-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 2021-09-26
      相关资源
      最近更新 更多