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:分配前引用的局部变量“公司”

UnboundLocalError:分配前引用的局部变量“class_name”

Q:'UnboundLocalError':分配前引用了局部变量'exitErr'