任何人都可以使用清除命令

时间:2020-11-08 15:56:42

标签: discord.py

我创建了一个“清除”函数,它具有ctx.channel.purge(),但似乎任何人都可以在没有任何许可的情况下使用它。

有关如何预防的任何想法? 我只希望只有具有权限的成员才能管理频道

3 个答案:

答案 0 :(得分:0)

使用@ commands.has_permissions()装饰器:

@bot.command() # or @commands.command()
@commands.has_permissions(manage_channels=True)
    async def clear(ctx: commands.Context):
        ctx.channel.purge()

答案 1 :(得分:0)

您可以使用@commands.has_role()@commands.has_permissions()来允许特定角色或权限使用该命令。

使用commands.has_role

@commands.has_role('Role name') # or you can use role id
@client.command()
async def test(ctx):

使用commands.has_permissions

@commands.has_permissions(ban_members=True)
@client.command()
async def test(ctx):

或者您可以使用commands.has_any_role()。如果成员具有您作为参数输入的任何这些角色,则允许他们执行此命令。

@commands.has_any_role('Role1', 'Role2')
@client.command()
async def test(ctx):

答案 2 :(得分:0)

您可以执行@commands.has_role()@commands.has_permissions()。就像它说的那样,@commands.has_role()检查用户是否具有角色,@commands.has_permissions()检查用户是否具有权限,例如阅读邮件,发送邮件,管理服务器等。