首页 > 解决方案 > Discord.py - 检查用户是否有特定规则(如果函数)

问题描述

我浏览了其他帖子,但似乎找不到解决问题的方法。我为我的 kick 命令做了一个小的 if 函数检查,看看你试图踢的玩家是否不是工作人员的一部分。

员工角色是“团队”。

@client.command()
@has_permissions(kick_members=True)
async def k(ctx, member: discord.Member, *, reason=None):
    if discord.utils.get(ctx.server.roles, name="Team") in member.roles:
        await ctx.send('You cannot kick a staff member')
    else:
        await member.kick(reason=reason)
        await ctx.send(f'Kicked {member}. Reason: {reason}')

标签: pythondiscord.py

解决方案


您可以使用列表推导来完全测试名称:

if "Team" in [r.name for r in member.roles]:
    # code

或者您可以通过 ID 进行操作,建议您这样做,因为这意味着您可以更改服务器中角色的名称,而无需更新您的代码。

if 112233445566778899 in [r.id for r in member.roles]:
    # code

要获取角色 ID:

  • 确保您已启用开发者模式(设置 > 外观 > 向下滚动 > 启用开发者模式)
  • 将自己引导到服务器的角色列表
  • 右键点击员工的角色 >Copy ID

您的代码不起作用的原因是您编写ctx.server的不是ctx.guild.
请参阅此处了解更多信息。


参考:


推荐阅读