discord.py guilds.members 无法正常工作

时间:2021-05-25 20:11:47

标签: python discord.py

它可以工作,但由于某种原因不是在所有服务器上,而是在某些服务器上。我知道它无法获取服务器成员,因为它正在尝试为自己创建 DM。

@bot.event
async def on_ready():
    for guild in bot.guilds:
        print(guild.members)
        for member in guild.members:
            guild.fetch_members()
            print(member)
            try:
                await member.create_dm()
                await member.send(text)
            except:
                print('direct messages are closed')
                await asyncio.sleep(25)
                continue

我试过谷歌搜索,我只是发现我需要意图,我试过没有任何改变。如果有的话,它们在这里:

intents = discord.Intents.default()
intents = discord.Intents(messages=True, guilds=True, members=True, typing = True)
bot = commands.Bot(command_prefix='!', intents=intents)

1 个答案:

答案 0 :(得分:2)

我刚刚花了一些时间浏览了 discord.py 文档,我想我可能已经发现了这个问题。当您在该 guild.fetch_members() 内运行 for 时,您似乎试图启用对 guild.members 中成员的访问权限。尽管这有时可能会奏效,但文档推荐了一种可能更可靠且可能更新的不同用法。

来自fetch_members() docs(有点解释):

示例用法:

async for member in guild.fetch_members(limit=150):
    print(member.name)
    

# if a discord.ClientException is raised, the members intent is not enabled.

让我知道这是否有帮助/有效?