我想要一个线程成员列表
使用时:
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.
我不知道我是否理解你的问题。你似乎迷失在术语中。
我相信您想发送对线程成员的提及,每行一个成员:
# 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)
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))