首页 > 解决方案 > Discord.py 获取消息中给定角色的所有成员

问题描述

这似乎微不足道,但我有一个奇怪的问题。

我在 on_message 中检查了这个条件(只是一个片段,我在那里有更多条件,它们工作得很好):

elif message.content.startswith("?ranklist "):
    await rankLister(cls, message)

这是我用来列出用户在消息中提供的角色的所有成员的功能。

async def rankLister(cls, message):
    rankToAnalizeStr = message.content[10:]
    logging.info("Asked for %s role members", rankToAnalizeStr)

    for role in message.guild.roles: 
        if role.name == rankToAnalizeStr:
            rankToAnalize = role
            break
        rankToAnalize = ""

    if rankToAnalize:
        memberNames = "\n".join(i.name for i in rankToAnalize.members)

        embed=discord.Embed(title="", description="", color=0xff0000)
        embed.set_author(name="", url="https://tieronetact.com")
        embed.set_thumbnail(url="https://cdn.discordapp.com/emojis/734014025834430525.png")
        embed.add_field(name="Lista osób z rangą {}".format(rankToAnalizeStr), value=memberNames, inline=True)

        await message.channel.send(embed=embed)

消息的格式如下:

?ranklist roleNameHere

因此,开始时的字符串切割。现在发生的情况是,当 BOT 正在启动时(而不是在调用函数时),我只得到连接到语音的成员,这真的很奇怪,因为我没有以任何方式引用语音通道。我想获得所有成员(包括那些未连接到语音的成员,包括在线和离线)。

图片参考: https ://i.stack.imgur.com/MHVYr.png

标签: pythondiscorddiscord.py

解决方案


推荐阅读