我想获取我服务器的所有成员,但是当我搜索它时,我发现这个代码片段可以做到这一点:
for guild in client.guilds:
for member in guild.members:
print(member)
好吧,这段代码应该显示所有成员,问题是它只显示我的机器人用户。但是当我这样说时:
@tasks.loop(seconds=10)
async def counter():
for guild in client.guilds:
for member in guild.members:
print(guild.members)
它显示此对象 [ ]
内的信息,我不会完全显示它,因为在此对象内它包含有关我的帐户和不和谐服务器的信息,所以我如何更改此代码以便它显示我的号码会员名还是会员名?
答案 0 :(得分:2)
正如我在问题中指出的那样,成员计数如何在对象 [] 内,我访问了这个对象的属性,然后我设法获取了所有成员,这是代码:
for guild in client.guilds:
print(guild.member_count)
答案 1 :(得分:0)
打印 guild.member
返回一个 discord.Member
对象,其中包含大量信息。以下是您希望选择的方式:
for guild in client.guilds:
print(len(guild.members))
for guild in client.guilds:
for member in guild.members:
print(member.name)
另外,我建议减少循环时间以避免速率受限。
答案 2 :(得分:0)
你的方法是正确的:
for guild in client.guilds:
print(guild.member_count)
但正如您在文档中看到的 here
<块引用>由于 Discord 的限制,为了使该属性保持最新和准确,它需要指定 Intents.members。
因此,您必须在代码中启用成员意图并在 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()(昵称、角色)
on_user_update()
这也对应了以下的属性和类 缓存:
Client.get_all_members()
Guild.chunk()
Guild.fetch_members()
Guild.get_member()
公会成员
成员角色
会员尼克
Member.premium_since
用户名
User.avatar(User.avatar_url 和 User.avatar_url_as())
User.discriminator