首页 > 解决方案 > 如何检查用户是否在不和谐中具有特定角色

问题描述

这应该检查特定人员是否具有静音角色

    @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)

抛出此错误

命令引发异常:AttributeError:“成员”对象没有属性“has_role”

我不知道该怎么做,所以我非常感谢我能得到的每一个帮助

标签: pythonpython-3.xdiscord.py

解决方案


成员没有.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)

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

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


推荐阅读