discord - 如何获得在线成员(member)数量?

标签 discord python-3.7 discord.py

我有一个命令可以对成员和机器人进行计数并分别输出它们。然后我想输出在线用户数。这可能吗?

此命令获取成员和机器人计数

if message.content.startswith('<count'):    
        membersInServer = message.guild.members
        channel = message.channel
        # Filter to the list, returns a list of bot-members
        botsInServer = list(filter(filterOnlyBots, membersInServer))
        botsInServerCount = len(botsInServer)
        # (Total Member count - bot count) = Total user count
        usersInServerCount = message.guild.member_count - botsInServerCount
        msg = discord.Embed(title="Amount of Human Members in this Discord:", description=usersInServerCount, color=0x00FD00)
        msg.add_field(name="Amount of Bot Users in this Discord:",value=botsInServerCount, inline=False)
        await channel.send(embed=msg)
def filterOnlyBots(member):
    return member.bot

我尝试过 client.member.status 并且只返回 Online

最佳答案

每个Member has a status property ,您可以使用它来检查 status is offline 是否或不。
然后,您可以按离线状态过滤您的 membersInServer

        onlineMembersInServer = list(filter(filterOnlyOnlineMembers, membersInServer))

        onlineMembersCount = len(onlineMembersInServer)

# Somewhere...
def filterOnlyOnlineMembers(member):
    return member.status != 'offline'

请注意,它会计算在线用户和机器人
如果您想仅过滤在线用户,您可以将过滤器更改为:

# Set the filter to be a non-offline member, and the member not being a bot.
def filterOnlyOnlineMembers(member):
    return member.status != 'offline' and not member.bot

请注意,如果服务器很大,这可能会出现性能问题。

编辑

正如 @Patrick Haugh 提到的,你可以将其制作成 1-liner

sum(member.status!=discord.Status.offline and not member.bot for member in message.guild.members)

关于discord - 如何获得在线成员(member)数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57370231/

相关文章:

python - 如何让我的 Python 3.6.1 Discord 机器人在服务器中创建新的文本 channel ?

python - 如何嵌入成员(member)的图像和昵称? (w/discord.py)

javascript - 在 discord.js 中使用音乐可能无法正常工作

python - 尝试初始化环境时出错(Pipenv))

python - 使用后禁用按钮

python-3.x - 如何编辑 Discord 机器人命令的描述,如默认帮助命令中所示?

python - Discord.py @bot.event

python-3.x - Python3 - 无法在 "import cairosvg"上加载库

python - 当成员不在 JSON 文件中时,Discord.py 机器人无法发送消息

opencv - conda python 3.7 opencv 导入错误 libgnutls.so.30 : undefined symbol: mpn_add_1, 版本 HOGWEED_4