Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何处理自定义非类型错误?_Python_Discord.py_Nonetype - Fatal编程技术网

Python 如何处理自定义非类型错误?

Python 如何处理自定义非类型错误?,python,discord.py,nonetype,Python,Discord.py,Nonetype,我已经在我的bot中实现了我自己的功能/检查。无论如何,控制台中没有正常的AttributeError输出,但例如:'NoneType'对象没有属性'requested_by',因此没有AttributeError,因为它是我自己的函数 是否有办法也通过bot输出此错误,并可能使用try/except语句处理它?(我确实试过了,但没有成功) 这里有一个例子: @commands.command(别名=[“断开连接”]) @commands.guild_only() @命令。检查(是音频请求者)#

我已经在我的bot中实现了我自己的功能/检查。无论如何,控制台中没有正常的
AttributeError
输出,但例如:
'NoneType'对象没有属性'requested_by'
,因此没有
AttributeError
,因为它是我自己的函数

是否有办法也通过bot输出此错误,并可能使用
try/except
语句处理它?(我确实试过了,但没有成功)

这里有一个例子:

@commands.command(别名=[“断开连接”])
@commands.guild_only()
@命令。检查(是音频请求者)#检查它是关于什么的
异步def离开(自身、ctx):
“”“如果当前在一个语音频道中,则退出该频道。”“”
client=ctx.guild.voice\u客户端
state=self.get\u state(ctx.guild)
如果客户端和client.channel:
等待客户端断开连接()
del self.states[ctx.guild.id]
其他:
raise commands.CommandError(“不在语音频道中”)
等待ctx发送(
embed=discord.embed(title=“:wave::skin-tone-3:我离开了语音频道。”,
color=self.bot.get\u embed\u color(ctx.guild)))
不管出于什么原因,部分原因我仍然得到:

“非类型”对象没有“请求者”属性
导致错误的函数:

async def是音频请求程序(ctx):
“”“检查命令发送者是否为歌曲请求者。”“”
music=ctx.bot.get\u cog(“音乐”)
州=音乐。获得州(ctx.guild)
权限=ctx.channel.permissions\u(ctx.author)
如果permissions.administrator或state.is_请求者(ctx.author):
返回真值
其他:
raise commands.CommandError(
“要做到这一点,您需要成为歌曲请求者。”)
未打印此项的任何内容!)

我无法处理此错误,然后可能必须从通道中删除bot或重新启动它。如果我执行一个命令
离开
而不使用
命令。检查
当然有效有没有办法解决这个问题?


我已经通过
leave.error
尝试了自己的自定义错误,但这似乎不起作用。正如预期的那样,即使在XXX为None时传递类似于
的消息也不起作用。在这种情况下,我也不能使用
Cog.Cog.command\u error
文档,至少看起来是这样的。

你能发布完整的回溯吗?实际上不可能重现错误,可能添加回溯会对我们有所帮助。通常,此错误意味着某些变量具有特殊值
None
,而不是预期的值;检查所有变量是否都有期望值?@ukaszKwieciński不幸的是,这是我作为输出得到的唯一结果。例如:如果我一次得到错误,第二次执行命令,我仍然在控制台中得到正常打印的错误。看起来在某个时刻,行会主席迷失了方向。我考虑过循环和保存旧状态,但我不确定。除此之外,我甚至不知道为什么会发生这种情况。@sabik我知道事实上这意味着有些东西是
None
,我还检查了可能的错误源。您所说的
预期的
是什么意思?但是,您仍然可以添加完整的回溯吗?您在代码中的任何地方都没有真正使用
请求的方法,添加完整的回溯可能有助于我们分析问题所在。