Discord.py Bot 中重复出现“AttributeError:NoneType 对象没有属性”

问题描述 投票:0回答:1

我正在使用discord.py开发Discord机器人,但我遇到了一个似乎无法解决的重复错误。该错误发生在多个实例中,并且与不具有某些属性的“NoneType”对象有关。

错误详细信息: 我在代码的不同部分不断得到

AttributeError: 'NoneType' object has no attribute 'send'
'get_role'
'members'
。这是错误输出的示例:

_ClientEventTask exception was never retrieved
future: <ClientEventTask state=finished event=on_ready coro=<bound method ...> exception=AttributeError("'NoneType' object has no attribute 'send'")>
...

背景: 这些错误似乎与我的机器人类中的

self.guild
self.stdout
属性有关,访问时它们似乎是
None
。当我尝试在这些对象上调用
AttributeError
get_role
等方法时,这会导致
send

尝试解决:

  • 我完全按照视频教程来设置机器人,但错误仍然存在。
  • 我检查了我的代码在定义或分配 self.guild 和 self.stdout 时是否存在任何明显的错误。

尽管做出了这些努力,我还是无法弄清楚为什么这些属性为 None 以及如何正确初始化它们。

问题:

  1. 为什么 self.guild 和 self.stdout 被评估为 None,以及如何在discord.py 中正确初始化它们?
  2. 在 Discord 机器人中处理此类 AttributeError 问题的最佳实践是什么?

任何理解和解决这些错误的帮助将不胜感激。

python discord.py bots
1个回答
0
投票

self.guild 为 None

您将

self.guild
定义为
None
,这就是您收到
NoneType
错误的原因。我认为 self.guild 应该是一个公会对象,但事实并非如此。 None 没有像
get_role()
这样的属性,因为它是空的,而不是不和谐公会。


self.stdout 不存在

我读了你的代码,但在任何地方都找不到它。因为它不在您的代码中,所以您不能将其用作变量,您需要定义它。

© www.soinside.com 2019 - 2024. All rights reserved.