从 guild.fetch_members() 获取列表

问题描述 投票:0回答:2

我想要一个线程成员列表

使用时:

channel.send(str(await message.channel.fetch_members()))

我明白了:

[<ThreadMember id=432287480599937024 thread_id=1185095420892958781 joined_at=datetime.datetime(2023, 12, 15, 5, 46, 6, 357000, tzinfo=datetime.timezone.utc)>, <ThreadMember id=1069317582559121419 thread_id=1185095420892958781 joined_at=datetime.datetime(2023, 12, 15, 5, 46, 7, 385000, tzinfo=datetime.timezone.utc)>]

如何将其转换为列表?

PS:我尝试执行 thread.members 但它不会返回任何人,并且根据文档:

A list of thread members in this thread.

This requires Intents.members to be properly filled. Most of the time however, this data is not provided by the gateway and a call to fetch_members() is needed.
discord.py
2个回答
0
投票

我不知道我是否理解你的问题。你似乎迷失在术语中。

我相信您想发送对线程成员的提及,每行一个成员:

# this is the list of thread members
thread_members = await message.channel.fetch_members()

text = "These are the members of the Thread:\n"
for member in thread_members:
    text += f"- {member.mention}\n"

await message.reply(text)

0
投票

fetch_members()
返回ThreadMemeber
对象
列表,每个对象代表线程的一个成员并包括它们的ID,它们所属的ID,以及他们加入线程的日期时间,提示您的输出。

您需要迭代

ThreadMember
对象并从中提取信息。

正如您提到的

thread.members
应该返回线程成员列表,但是,如果没有,您需要启用
Intents.Members
,或者网关不提供数据
thread.members
它将返回一个空列表,需要使用
fetch_members()

# Assuming `thread` is your thread object

members = await thread.fetch_members()
member_ids = [member.id for member in members]


# send the list of member IDs as a message 
await channel.send(str(member_ids))
© www.soinside.com 2019 - 2024. All rights reserved.