如何从我的 discord py 服务器获取所有成员
How to get all members from my discord py server
我想获得我服务器的所有成员,但是当我用谷歌搜索时,我发现这个代码片段可以做到这一点:
for guild in client.guilds:
for member in guild.members:
print(member)
嗯,这段代码应该显示所有成员,问题是它只显示我的 bot 用户。但是当我这样说的时候:
@tasks.loop(seconds=10)
async def counter():
for guild in client.guilds:
for member in guild.members:
print(guild.members)
它显示这个对象内部的信息 [ ]
我不会准确显示它,因为在这个对象内部它有关于我的帐户和不和谐服务器的信息,所以我如何更改此代码以便它显示我成员人数还是成员姓名?
打印guild.member
returns一个discord.Member
对象,里面有很多信息。以下是您想要选择的方式:
获取成员数量:
for guild in client.guilds:
print(len(guild.members))
正在获取成员名称:
for guild in client.guilds:
for member in guild.members:
print(member.name)
另外我建议减少循环时间以避免速率限制。
正如我在问题中指出的那样,成员计数是如何在对象 [ ] 内的,我访问了该对象的 属性,然后我设法获得了所有成员,这是代码:
for guild in client.guilds:
print(guild.member_count)
你的方法是正确的是:
for guild in client.guilds:
print(guild.member_count)
但是正如您在文档中看到的那样here
Due to a Discord limitation, in order for this attribute to remain up-to-date and accurate, it requires Intents.members to be specified.
因此,您必须在代码中启用成员意图并在 developer portal
中启用特权意图
intents = discord.Intents.default()
intents.members = True
#or
intents = discord.Intents.all()
client = commands.Bot(command_prefix='!', intents=intents)
会员意向用于以下用途:link
这对应于以下事件:
on_member_join()
on_member_remove()
on_member_update() (nickname, roles)
on_user_update()
This also corresponds to the following attributes and classes in terms
of cache:
Client.get_all_members()
Guild.chunk()
Guild.fetch_members()
Guild.get_member()
Guild.members
Member.roles
Member.nick
Member.premium_since
User.name
User.avatar (User.avatar_url and User.avatar_url_as())
User.discriminator
我想获得我服务器的所有成员,但是当我用谷歌搜索时,我发现这个代码片段可以做到这一点:
for guild in client.guilds:
for member in guild.members:
print(member)
嗯,这段代码应该显示所有成员,问题是它只显示我的 bot 用户。但是当我这样说的时候:
@tasks.loop(seconds=10)
async def counter():
for guild in client.guilds:
for member in guild.members:
print(guild.members)
它显示这个对象内部的信息 [ ]
我不会准确显示它,因为在这个对象内部它有关于我的帐户和不和谐服务器的信息,所以我如何更改此代码以便它显示我成员人数还是成员姓名?
打印guild.member
returns一个discord.Member
对象,里面有很多信息。以下是您想要选择的方式:
获取成员数量:
for guild in client.guilds:
print(len(guild.members))
正在获取成员名称:
for guild in client.guilds:
for member in guild.members:
print(member.name)
另外我建议减少循环时间以避免速率限制。
正如我在问题中指出的那样,成员计数是如何在对象 [ ] 内的,我访问了该对象的 属性,然后我设法获得了所有成员,这是代码:
for guild in client.guilds:
print(guild.member_count)
你的方法是正确的是:
for guild in client.guilds:
print(guild.member_count)
但是正如您在文档中看到的那样here
Due to a Discord limitation, in order for this attribute to remain up-to-date and accurate, it requires Intents.members to be specified.
因此,您必须在代码中启用成员意图并在 developer portal
中启用特权意图intents = discord.Intents.default()
intents.members = True
#or
intents = discord.Intents.all()
client = commands.Bot(command_prefix='!', intents=intents)
会员意向用于以下用途:link
这对应于以下事件:
on_member_join()
on_member_remove()
on_member_update() (nickname, roles)
on_user_update()
This also corresponds to the following attributes and classes in terms of cache:
Client.get_all_members()
Guild.chunk()
Guild.fetch_members()
Guild.get_member()
Guild.members
Member.roles
Member.nick
Member.premium_since
User.name
User.avatar (User.avatar_url and User.avatar_url_as())
User.discriminator