discord.py - 如果用户具有此角色,则显示该消息。怎么做?不和谐.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 }' )
解决方案
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 }' )