python - 异常机制在一段时间后不起作用
问题描述
我使用 discord.py 库在 Python 中创建了一个 Discord 机器人。这是我的机器人的伪代码:
import discord
client = discord.Client()
async def test_func():
return "This is a test"
async def error_func():
raise Exception
text_to_func = {"test": test_func, "error": error_func}
@client.event
async def on_message(message):
if message.content.startswith("$"):
command = message.content[1:]
try:
func = text_to_func[command]
answer = await func()
except Exception:
answer = "Error !"
await message.reply(answer)
client.run("<TOKEN>")
当机器人收到一条消息时,该on_message
功能就会被执行。它检查消息是否以“$”开头,这是我的机器人的前缀,并在 try/except 块中执行与命令关联的函数。
我使用 ssh 连接在 ubuntu 服务器上运行此脚本。
现在,如果我在我的不和谐服务器上发送“$test”,机器人将回复“这是一个测试”,如果我发送“$error”,它将回复“错误!”。问题是,经过一定时间(可以从 6 小时到 2 天),“$error”命令将不再起作用。机器人不会回复命令,但它仍然会回复“$test”。
有人知道那里发生了什么吗?谢谢您的帮助。
解决方案
我不是 100% 确定您要完成什么,但如果您实际上只是想对错误做出反应,我建议您只使用:
@client.event
async def on_error(event, args, kwargs):
#what you want to happen in the event of an error
而不是把你所做的一切都放在一个 try...except 块中。
这是 on_error 事件监听器的官方文档。
推荐阅读
- nest-device-access - Google Nest 摄像头访问权限
- php - 使用按钮单击另一个 vue 组件或 html 按钮单击在不同页面中获取 vue 组件
- kubernetes - Kubernetes 列出所有未运行的容器
- lua - Lua:在两个字符串之间查找字符串
- javascript - MUI Tab-组件属性到 Tab 渲染但抛出异常
- java - SQL 语句中的错误:NoClassDefFoundError: com/macasaet/fernet/Validator
- javascript - 使用 JavaScript 在栏外单击时如何关闭侧边栏
- perl - 在 Solaris 11 中安装 DBI Perl 模块时出现问题
- audio - Alexa是如何编程唱歌的?
- java - 如何从 recyclerview 创建音频前台通知。任何班级