AttributeError:'NoneType'对象没有属性'roles'

时间:2020-10-25 18:41:08

标签: discord bots python-3.6 typeerror discord.py

我一直在尝试使用python解决不和谐的机器人。该机器人根据成员所在的房间将成员添加到另一个房间。当我尝试运行代码时,我不断收到此错误

AttributeError: 'NoneType' object has no attribute 'roles'

这是我得到错误的定义

def get_sibling_role(member):
roles = member.roles; ret = None #<==there is an issue on this
for role in roles:
    if role.name == "Brothers Waiting Room":
        ret = ("Brother", role); break
    elif role.name == "Sisters Waiting Room":
        ret = ("Sister", role); break
return ret

#我已经定义了返回成员ID的成员

有人可以帮我找出我定义中的问题吗?

2 个答案:

答案 0 :(得分:1)

显而易见的原因是member的值为None。为了避免这种情况,您可以添加“ not None”的检查。我还假设这种失调是由于发布了有问题的代码而不是代码中的代码。

def get_sibling_role(member):
  if member is None:
    return None

  roles = member.roles; ret = None #<==there is an issue on this
  for role in roles:
     if role.name == "Brothers Waiting Room":
        ret = ("Brother", role); break
     elif role.name == "Sisters Waiting Room":
        ret = ("Sister", role); break
  return ret

答案 1 :(得分:0)

NoneType 问题是一个错误,许多程序员由于几个主要原因而面临 discord.py

1- 我自己在上一个问题中的错误超出了给定的代码。我写的代码是正确的,但是,我在同一代码中定义了两个客户端实例,这使整个程序变得混乱,成员和角色都没有返回,因此请修改您的 discord.Client 或 commands.Bot 构造函数。

client = discord.Client(intents=intents)

如果您想进行测试和调试,我建议您使用 on_ready(): 函数下的以下代码打印服务器中的第一个成员。

print (guild.members[1])

2- 第二个常见错误是人们倾向于不使用意图,他们必须使用意图来获取成员 https://discordpy.readthedocs.io/en/latest/intents.html 此外,您应该按照 Discord 门户 https://discord.com/developers/applications

中上一个文档中的说明启用它们(特权网关)

3- 将您的 discord.py 更新到 1.5.0 版。或更高。确保将其安装到正确的环境