如何检查用户是否在不和谐中具有特定角色

Den*_*erl 7 python python-3.x discord.py

这应该检查特定的人是否有或没有静音角色

    @bot.command(pass_context=True)
    @commands.has_role("Admin")
    async def unmute(ctx, user: discord.Member):
        role = discord.utils.find(lambda r: r.name == 'Member', 
    ctx.message.server.roles)
        if user.has_role(role):
            await bot.say("{} is not muted".format(user))
        else:
            await bot.add_roles(user, role)
Run Code Online (Sandbox Code Playgroud)

抛出这个错误

命令引发异常:AttributeError: 'Member' object has no attribute 'has_role'

我不知道该怎么做所以我真的很感激我能得到的每一个帮助

ktz*_*tzr 14

成员没有.has_role()方法,但是您可以使用.roles.

要查看用户是否具有给定的角色,我们可以使用role in user.roles.

    @bot.command(pass_context=True)
    @commands.has_role("Admin")
    async def unmute(ctx, user: discord.Member):
        role = discord.utils.find(lambda r: r.name == 'Member', ctx.message.guild.roles)
        if role in user.roles:
            await bot.say("{} is not muted".format(user))
        else:
            await bot.add_roles(user, role)
Run Code Online (Sandbox Code Playgroud)

参考文档:https : //discordpy.readthedocs.io/en/latest/api.html#member

注意: ctx.message.guild.roles使用为ctx.message.server.roles. 由于 API 更改而更新。

  • `ctx.guild.roles` 会更短并且也可以工作 (4认同)