Discord Py Bot 用户状态

时间:2021-01-19 18:10:13

标签: python arrays discord discord.py discord.py-rewrite

@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))

我想显示会员总数的状态。我该怎么做?

2 个答案:

答案 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))