首页 > 解决方案 > 如果用户具有此角色,则显示该消息。怎么做?不和谐.py

问题描述

如果用户具有此角色,则显示该消息。但没有任何效果,这是我的代码的一部分:

role_girl = 72850048118554 #ID ROLE
role_boy = 72849957361759 #ID ROLE
role_nonepol = 72850091485547 #ID ROLE

@client.command( aliases = [ 'test' ] )
async def __test( ctx, member: discord.Member ):

    if role_girl in member.roles:
        preff = ' youre a girl '

    if role_boy in member.roles:
        preff = ' youre a boy '

    if role_nonepol in member.roles:
        preff = ' is not specified '

    await ctx.send( f'{ member.mention } { preff }' )

标签: discord.py

解决方案


member.roles返回一个类列表,因此您需要指定是否需要角色名称或 ID。
你可以通过两种方式做到这一点:

  • 通过将每个角色与您的 ID 进行比较:
role_girl = 72850048118554
role_boy = 72849957361759
role_nonepol = 72850091485547

@client.command( aliases = [ 'test' ] )
async def __test( ctx, member: discord.Member ):
    for role in member.roles:
        if role.id == role_girl:
            preff = ' youre a girl '
        elif role.id == role_boy:
            preff = ' youre a boy '
        elif role.id == role_nonepol:
            preff = ' is not specified '

    await ctx.send( f'{ member.mention } { preff }' )
  • 通过使用该方法检查用户是否具有角色get(您必须将 name="..." 替换为确切的角色名称):
from discord.utils import get

@client.command( aliases = [ 'test' ] )
async def __test( ctx, member: discord.Member ):
    if get(member.roles, name='girl'):
        preff = ' youre a girl '
    elif get(member.roles, name='boy'):
        preff = ' youre a boy '
    elif get(member.roles, name='nonpol'):
        preff = ' is not specified '

    await ctx.send( f'{ member.mention } { preff }' )

推荐阅读