所以,我一直在尝试做一个机器人,循环通过我的服务器中的所有成员。我使用get_all_members()生成器来完成此操作。在
for member in client.get_all_members():
userName = str(member.name)
userGame = str(member.game)
userID = str(member.id)
print(userName, userGame, userID)
await client.send_message(message.channel, "User " + userName + "
(<@" + userID + ">) is playing " + userGame)
我在运行时随机得到这个错误:
^{pr2}$如何避免这个错误?在
在循环之前,请尝试用
get_all_members
生成一个列表。在实际情况是
Server
对象将它们的Member
存储在字典中。当您await
一个协程时,您允许其他协程在您等待时运行,其中一个协程会使Server
对象保持最新。每当Server
的成员身份发生变化时,字典也会随之更改。因为您不应该在某个事物发生变化时迭代它,Python会检测到它并终止程序。在通过先将值读入列表中,我们不会注意到字典何时发生了更改。在
最新版本更改了此行为,这将在here中讨论
相关问题 更多 >
编程相关推荐