我创建了一个“清除”函数,它具有ctx.channel.purge(),但似乎任何人都可以在没有任何许可的情况下使用它。
有关如何预防的任何想法? 我只希望只有具有权限的成员才能管理频道
答案 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()
检查用户是否具有权限,例如阅读邮件,发送邮件,管理服务器等。