首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得多个在线会员?

如何获得多个在线会员?
EN

Stack Overflow用户
提问于 2019-08-06 06:38:52
回答 1查看 10.3K关注 0票数 2

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

此命令获取成员和bot计数。

代码语言:javascript
复制
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了,那只会回到网上

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-06 07:22:20

每个成员具有状态属性。,您可以使用它来检查是否有状态脱机

然后,可以通过脱机状态筛选membersInServer

代码语言:javascript
复制
        onlineMembersInServer = list(filter(filterOnlyOnlineMembers, membersInServer))

        onlineMembersCount = len(onlineMembersInServer)

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

请注意,它计算在线用户和机器人。

如果希望只对联机用户进行筛选,则可以将筛选器更改为:

代码语言:javascript
复制
# 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所提到的,你可以把它做成1条线。

代码语言:javascript
复制
sum(member.status!=discord.Status.offline and not member.bot for member in message.guild.members)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57370231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档