UnboundLocalError:分配前引用的局部变量“公会”
Posted
技术标签:
【中文标题】UnboundLocalError:分配前引用的局部变量“公会”【英文标题】:UnboundLocalError: local variable 'guild' referenced before assignment 【发布时间】:2022-01-21 15:47:16 【问题描述】:我想做一些事情,以便在脚本启动时,它可以获取有关公会成员的信息,例如 id、公会 ID。
我有这个代码:
async def on_ready(self):
for guild in guild:
for member in guild.members:
values =
"_id":member.id,
"guild_id":guild.id,
"warns": 0 ,
"reasons": []
server_values =
"_id": guild.id,
"case": 0
if collusers.count_documents("_id": member.id, "guild_id": guild.id) == 0:
collusers.insert_one(values)
if collservers.count_documents ("_id": guild.id) == 0:
collservers.insert_one(server_values)
但我也得到一个错误:
Ignoring exception in on_ready
Traceback (most recent call last):
File "C:\Users\Andriyko\AppData\Local\Programs\Python\Python310\lib\site-packages\nextcord\client.py", line 351, in _run_event
await coro(*args, **kwargs)
File "c:\Users\Andriyko\Desktop\Ghostbot\modules\warn.py", line 18, in on_ready
for guild in guild:
UnboundLocalError: local variable 'guild' referenced before assignment
【问题讨论】:
您可能需要将guild
作为参数传递给您的函数,而for a in a:
至少会令人困惑(即为循环变量和集合使用不同的名称变量)。
尝试for guilds in self.client.guilds
而不是for guilds in guilds
,或者将公会设置为self.client.guilds。
好的,我试试
【参考方案1】:
您没有为变量guild
分配任何内容。你可以得到你的机器人所在的所有guilds
:
for guild in self.client.guilds:
您也可以先获取公会对象(如果您只想为一个公会运行它):
guilds = client.get_guild(id)
for guild in guilds:
...
另外,请记住,您必须启用intents.Members
才能获取guild.members
。
【讨论】:
非常感谢!那行得通!以上是关于UnboundLocalError:分配前引用的局部变量“公会”的主要内容,如果未能解决你的问题,请参考以下文章
UnboundLocalError:分配前引用的局部变量“公会”
分配前引用的 /blog/search/ 局部变量 'cd' 处的 UnboundLocalError
机器人框架:UnboundLocalError:分配前引用的局部变量“cellValue”
Django:UnboundLocalError:分配前引用的局部变量“公司”