@client.event
async def on_ready():
await client.wait_until_ready()
await client.change_presence(activity=Activity(name=f".help auf {len(client.guilds)} Servers",
type=ActivityType.playing))
我想显示会员总数的状态。我该怎么做?
答案 0 :(得分:3)
Axiumin 的回答是正确的,但这需要您启用 Intent.members。
一个启用它的例子可以这样完成
intents = discord.Intents()
intents.all()
client = commands.Bot(command_prefix=".", intents=intents)
@client.event
async def on_ready():
await client.wait_until_ready()
await client.change_presence(activity=Activity(name=f".help auf {len(client.users)} Users", type=ActivityType.playing))
您必须启用它 here。选择您想要的应用程序 -> 选择 Bot
-> SERVER MEMBERS INTENT,然后确保它旁边显示蓝色。然后单击保存更改。由于您正在开发机器人,因此您可能还希望启用 Presence Intent 以节省您以后的时间。
但是,如果您的机器人不被允许(如果您的机器人在 100 多个服务器中并且不和谐拒绝了它的请求),您可以通过执行以下操作来解决此问题:
@client.event
async def on_ready():
await client.wait_until_ready()
total_members = 0
for guild in client.guilds:
total_members += guild.member_count
await client.change_presence(activity=Activity(name=f".help auf {total_members} members", type=ActivityType.playing))
答案 1 :(得分:2)
注意:这计算的是机器人所在的所有服务器中的用户总数,而不是当时使用机器人的人数。为了做到这一点,您必须使用计数器并在每次新用户使用机器人时将其递增,除非您正在尝试这样做,否则我不会深入研究。
这应该有效:len(client.users)
。您可以像这样在 change_presence
代码中使用它:
await client.change_presence(activity=Activity(name=f".help auf {len(client.users)} Users", type=ActivityType.playing))