在一条消息中列出角色成员-discord.py rewrite

问题描述

我做了一个列出角色成员的命令(在我们的服务器上称为帮派)。

@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))