web-dev-qa-db-fra.com

Comment vérifier si un utilisateur a un rôle spécifique dans la discorde

Cela devrait vérifier si la personne spécifique fait ou n'a pas le rôle de muet

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

Cette erreur est lancée

Commande a soulevé une exception: attributError: l'objet 'Membre' n'a aucun attribut 'has_role'

Je ne sais pas comment le faire donc j'apprécierais vraiment toutes les aides que je peux obtenir

5
Deniz Ascherl

Le député n'a pas de méthode .has_role(), vous pouvez toutefois obtenir une liste de tous leurs rôles à l'aide de .roles.

Pour voir si un utilisateur a un rôle donné, nous pouvons utiliser 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.server.roles)
        if role in user.roles:
            await bot.say("{} is not muted".format(user))
        else:
            await bot.add_roles(user, role)

Docs pour référence: https://discordy.readthedocs.io/fr/latest/api.html#member

3
ktzr