我有一个命令,对成员和机器人进行计数,并分别输出它们。然后我想输出在线用户的数量。这个是可能的吗?
此命令获取成员和bot计数。
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了,那只会回到网上
发布于 2019-08-06 07:22:20
然后,可以通过脱机状态筛选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所提到的,你可以把它做成1条线。
sum(member.status!=discord.Status.offline and not member.bot for member in message.guild.members)https://stackoverflow.com/questions/57370231
复制相似问题