正在获取具有后台任务的成员名称列表



我用我的机器人运行了几个循环,用循环重置某些统计数据,但最近似乎发生了一些变化,它们不再工作。我可以通过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())

上周Discord更改了网关策略,因此现在您需要从机器人的控制面板启用GUILD_MEMBERS特权意图。如果该开关被禁用,您需要向Discord支持发送消息,并要求他们将您的机器人列入白名单,以获得特权。(GUILD_PRENCES也是如此,尽管您的特定代码示例不需要这种意图。(此外,请确保您已将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

最新更新