我有几个循环与机器人一起运行,以通过循环重置某些统计信息,但最近似乎有些变化,使它们不再起作用。我可以通过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())
答案 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