web-dev-qa-db-ja.com

ユーザーが不和で特定の役割を持っているかどうかを確認する方法

特定の人がミュートの役割を持っているかどうかを確認する必要があります

    @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: 'Member' object has no attribute 'has_role'

どうすればいいのかわからないので、できる限りのサポートをお願いします

3
Deniz Ascherl

メンバーには.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.server.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

3
ktzr