Python Discord.py(重写):错误处理;“不正当代币”;在功能上
我觉得我缺少一个简单的方法来解决这个问题,但是我似乎找不到一个方法来处理Python Discord.py(重写):错误处理;“不正当代币”;在功能上,python,error-handling,discord,discord.py,discord.py-rewrite,Python,Error Handling,Discord,Discord.py,Discord.py Rewrite,我觉得我缺少一个简单的方法来解决这个问题,但是我似乎找不到一个方法来处理discord.errors.LoginFailure:传递了不正确的令牌。error。我要做的是运行一个函数,该函数基本上运行一个bot,如果遇到任何错误(使用try:和除外:),并且如果它捕获到“不正确的令牌”错误,则更改代码中的设置并重试 我认为正在发生的是try/except没有捕获错误,它停止了程序(在过程中打印整个错误)。我尝试过一些快速的解决方案,比如将函数转换成while语句,直到它到达程序的末尾,它会不断地
discord.errors.LoginFailure:传递了不正确的令牌。
error。我要做的是运行一个函数,该函数基本上运行一个bot,如果遇到任何错误(使用try:
和除外:
),并且如果它捕获到“不正确的令牌”错误,则更改代码中的设置并重试
我认为正在发生的是try/except没有捕获错误,它停止了程序(在过程中打印整个错误)。我尝试过一些快速的解决方案,比如将函数转换成while语句,直到它到达程序的末尾,它会不断地重复自己,但是如果没有捕捉到错误,我就无法继续任何代码
我的代码很混乱,并且与前面在这个大型python文件中定义的许多变量有关,因此我不会展示我的整个函数
以下是简化版本:
def代码(主文本):
mainLines=mainText.split(“\n”)
#做一些编辑主文本的工作
final=“\n”。连接(主线)
尝试:
exec(最终版本,globals())
例外情况除外,如e:
打印(str(e))
#稍微编辑一下“final”
exec(最终版本,globals())
完整错误消息:
#Put this at the bottom of your .py file
try:
bot.run(BOT_TOKEN)
except discord.errors.LoginFailure as e:
print("Login unsuccessful.")
从未检索到任务异常
未来:
回溯(最近一次呼叫最后一次):
文件“E:\DiscordBot\lib\site packages\discord\http.py”,第258行,静态登录
data=wait self.request(路由('GET','/users/@me'))
请求中第222行的文件“E:\DiscordBot\lib\site packages\discord\http.py”
引发HTTPException(r,数据)
discord.errors.HTTPException:401未经授权(错误代码:0):401:未经授权
上述异常是以下异常的直接原因:
回溯(最近一次呼叫最后一次):
文件“E:\DiscordBot\lib\site packages\discord\client.py”,第542行,在开始处
等待self.login(*args,bot=bot)
文件“E:\DiscordBot\lib\site packages\discord\client.py”,第400行,登录
等待self.http.static\u登录(令牌,bot=bot)
文件“E:\DiscordBot\lib\site packages\discord\http.py”,第262行,静态登录
从exc引发登录失败(“已传递不正确的令牌”)
discord.errors.LoginFailure:传递了不正确的令牌。
在写这篇文章时,我发现“从未检索到任务异常”这是一个重要的错误还是一个常见的“不正确的标记”错误
感谢您,对于我糟糕的编码实践和缺乏使用堆栈溢出的经验,我深表歉意。试试这个。我自己没试过。这是我从您的问题和错误消息中所能理解的最好答案:
#Put this at the bottom of your .py file
try:
bot.run(BOT_TOKEN)
except discord.errors.LoginFailure as e:
print("Login unsuccessful.")
你的令牌是字符串吗?
您是从discord开发者门户网站获得的吗?i、 e你确定这是正确的代币吗
确保BOT_令牌是一个字符串,并且您的令牌有效如果看到存在HTTPException和登录失败的事实,您应该将这两个令牌都放在后面,除非如下所示:
尝试:
bot.run(bot\u令牌)
除discord.errors.HTTPException和discord.errors.LoginFailure外,其他为e:
打印(“登录失败”)
这也将捕获HTTPException。因为就像我说的,如果你读到错误,你会看到HTTPException和LoginFailure。如果您想捕获错误并生成自定义错误消息,则需要捕获这两个错误。为什么要使用exec?为什么不编写另一个函数并发送该函数以供运行?我必须使用exec,因为“final”是一个从多个输入源提取的字符串,我宁愿在仍然使用exec的情况下找到解决问题的方法。我想你不明白我问的问题。我要寻找的是一种捕获任何登录失败错误的方法,而不是修复它们。不起作用,错误会通过try/except,即使排除了所有异常。@Miggy这对我很有效。我还编辑了我的文章,以确保它与我刚才尝试的内容相同。您也可以使用bot.login(token,bot=True),但它必须在函数中,并且必须等待。您的错误确实提到传递的令牌不正确。只有在bot.run(令牌)或bot.login(令牌)中使用了无效令牌时才会引发。一定是有什么原因使我的结果与你的不同。我在exec()中尝试了try/但在exec()中我运行了最终脚本,错误仍然会出现。@Miggy,将整个脚本发布在记事本上,并将其上载到可访问的地方,如Google Drive或Microsoft OneDrive。我可能需要看完整的剧本。您可以删除所需的任何bot凭据。