我一直在尝试使用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的成员
有人可以帮我找出我定义中的问题吗?
答案 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 版。或更高。确保将其安装到正确的环境