尝试使机器人在其活动中显示成员计数



我希望这能改变机器人状态的成员计数,但似乎无法弄清楚。

members = 31
@client.event
async def on_member_join(member):
members + 1 
# updates members
@client.event
async def on_ready():
await client.change_presence(activity=discord.ActivityType.watching, name="Server Name " + str(members) + " Members!"))

下面是将位于多个服务器中的机器人的示例:

# Excludes bots
member_count = sum([len([m for m in g.members if not m.bot]) for g in client.guilds])
# Includes bots
member_count = sum([g.member_count for g in client.guilds])

但是,如果您只打算在一台服务器中使用机器人,那么这就足够了:

# Excludes bots
member_count = len([m for m in Guild.members if not m.bot])
# Includes bots
Guild.member_count
# Side-note:
# Guild is simply the guild object that your bot is in.
# Depending on what you've called paramters -
# If you're using command decorators, you'd want ctx.guild,
# or if you're in an on_message() event, you'll want message.guild,
# or if you're somewhere else, you can use get_guild(112233445566778899)

话虽如此,第一个示例仅适用于仅在一台服务器中的机器人,但它们只是有点矫枉过正。


引用:

  • Guild.members
  • Guild.member_count
  • Guild.chunked- 如果您出于任何原因在获取成员计数时遇到问题,您可能需要对此进行调查并client.request_offline_members()
  • Client.get_guild()

最新更新