【问题标题】:NameError: name 'guild' is not definedNameError:名称“公会”未定义
【发布时间】:2022-01-21 16:47:27
【问题描述】:

我想做一些事情,比如当会员加入和机器人加入公会时,我会获得有关公会成员的信息,例如:id、公会 ID。警告和理由。

    @commands.Cog.listener()
    async def on_member_join(self,member):
        values = {
            "_id":member.id,
            "guild_id": guild.id,
            "warns": 0 ,
            "reasons": []
        }
        if collusers.count_documents({"_id": member.id, "guild_id": self.bot.guild.id}) == 0:
            collusers.insert_one(values) 

    @commands.Cog.listener()
    async def on_guild_join(guild):
        server_values = {
            "_id": guild.id,
            "case": 0,
        }
        if collservers.count_documents ({"_id": guild.id}) == 0:
            collservers.insert_one(server_values)

我有这样的错误

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 39, in on_member_join
    "guild_id": guild.id,
NameError: name 'guild' is not defined

【问题讨论】:

  • 显然guild 没有在代码的那个地方定义。
  • 在“成员加入时”用 self.bot.guild.id 替换 guild.id

标签: python database discord discord.py nextcord


【解决方案1】:

您没有在第一个侦听器 on_member_join 中定义 guild。您可以通过传递的成员参数轻松获得公会。

我注意到的另一件事是你传入了self.bot.guild.id,这将不起作用,因为机器人可以在多个公会中(并且没有self.botguild 属性。只需使用@987654326再次@这里。

@commands.Cog.listener()
async def on_member_join(self,member):
    guild = member.guild
    values = {
        "_id":member.id,
        "guild_id": guild.id,
        "warns": 0 ,
        "reasons": []
    }
    if collusers.count_documents({"_id": member.id, "guild_id": guild.id}) == 0:
        collusers.insert_one(values) 

【讨论】:

  • 一切都好,但是加入公会呢?
  • @Maron 我不相信你有on_guild_join 的错误。该侦听器与您遇到的错误无关
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-24
  • 1970-01-01
  • 2020-11-28
  • 2021-04-15
  • 2019-01-26
  • 2021-10-05
相关资源
最近更新 更多