使用后台任务获取成员名称列表

时间:2020-11-01 01:13:48

标签: discord.py discord.py-rewrite

我有几个循环与机器人一起运行,以通过循环重置某些统计信息,但最近似乎有些变化,使它们不再起作用。我可以通过on_message使用命令来捕获它们,但不能通过后台任务来捕获它们。我已经尝试了多种方法,但不确定在这里做错了什么。

async def getmem():
    await client.wait_until_ready()
    while not client.is_closed():
        guild = client.get_guild(id=1234567890)
        if guild:
            for member in guild.members:
                if not member.bot:
                    print(member.name)
        await asyncio.sleep(60)

client.loop.create_task(getmem())

1 个答案:

答案 0 :(得分:1)

上周,Discord更改了其在网关上的策略,因此现在您需要从bot的控制面板中启用GUILD_MEMBERS特权意图。如果禁用了该开关,则需要向Discord支持小组发送消息,并要求他们将您的漫游器列入白名单以获取该特权意图。 (尽管您的特定代码示例不需要该意图,但GUILD_PRESENCES也是如此。)还要确保已将discord.py升级到1.5或更高版本,因为在使用新网关时需要指定意图。

intents = discord.Intents.default()
intents.members = True
client = MyClient(intents=intents)

以下是有关更改的公告: https://support-dev.discord.com/hc/en-us/articles/360056426994-Gateway-Update-FAQ