问题描述
我做了一个列出角色成员的命令(在我们的服务器上称为帮派)。
@bot.command(pass_context=True)
async def gangmembers(ctx,*args):
server = ctx.message.guild
role_name = (' '.join(args))
role_id = server.roles[0]
for role in server.roles:
if role_name == role.name:
role_id = role
break
else:
await ctx.send("Not an existing gang,sorry about that.")
return
for member in server.members:
if role_id in member.roles:
await ctx.send(f"{member.display_name} - {member.id}")
它正确地完成了工作,但是我想让它在同一条消息中列出角色成员,而不是为每个角色成员列出1条消息。那有可能吗?如果可以,解决方案是什么?谢谢。
解决方法
您可以将它们添加到列表中,请记住消息中的字符限制为2000
。如果超出该范围,您将得到一个错误。
@bot.command(pass_context=True)
async def gangmembers(ctx,*args):
server = ctx.message.guild
role_name = (' '.join(args))
role_id = server.roles[0]
for role in server.roles:
if role_name == role.name:
role_id = role
break
else:
await ctx.send("Not an existing gang,sorry about that.")
return
data = []
for member in server.members:
if role_id in member.roles:
data.append(f"{member.display_name} - {member.id}")
await ctx.send('\n'.join(data))