【问题标题】:Discord Py Bot users StatusDiscord Py Bot 用户状态
【发布时间】:2021-04-24 02:00:13
【问题描述】:
@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))
我想显示会员总数的状态。我该怎么做?
【问题讨论】:
标签:
python
arrays
discord
discord.py
discord.py-rewrite
【解决方案1】:
注意:这会计算机器人所在的所有服务器中的用户总数,而不是当时使用机器人的人数。为了做到这一点,你必须使用一个计数器并在每次新用户使用机器人时递增它,除非你正在尝试这样做,否则我不会进入。
这应该可以工作:len(client.users)。您可以在 change_presence 代码中使用它,如下所示:
await client.change_presence(activity=Activity(name=f".help auf {len(client.users)} Users", type=ActivityType.playing))
【解决方案2】:
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))