如果用户具有此角色,则显示消息。怎么做?不和谐

时间:2020-07-05 10:56:30

标签: discord.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 }' )

1 个答案:

答案 0 :(得分:0)

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 }' )