我在 python-telegram-bot v20 库上有一个电报机器人。有时它会停止应答,我会收到此错误:
vThe above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/leakyspoon/Documents/TelegramBots/venv/lib/python3.11/site-packages/telegram/ext/_application.py", line 1729, in process_error
await callback(update, context)
File "/Users/leakyspoon/Documents/TelegramBots/GPT.py", line 301, in error_handler
await context.bot.send_message(chat_id=492065050, text=message)
File "/Users/leakyspoon/Documents/TelegramBots/venv/lib/python3.11/site-packages/telegram/ext/_extbot.py", line 2644, in send_message
return await super().send_message(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/leakyspoon/Documents/TelegramBots/venv/lib/python3.11/site-packages/telegram/_bot.py", line 388, in decorator
result = await func(self, *args, **kwargs) # skipcq: PYL-E1102
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/leakyspoon/Documents/TelegramBots/venv/lib/python3.11/site-packages/telegram/_bot.py", line 814, in send_message
return await self._send_message(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/leakyspoon/Documents/TelegramBots/venv/lib/python3.11/site-packages/telegram/ext/_extbot.py", line 514, in _send_message
result = await super()._send_message(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/leakyspoon/Documents/TelegramBots/venv/lib/python3.11/site-packages/telegram/_bot.py", line 566, in _send_message
result = await self._post(
^^^^^^^^^^^^^^^^^
File "/Users/leakyspoon/Documents/TelegramBots/venv/lib/python3.11/site-packages/telegram/_bot.py", line 476, in _post
return await self._do_post(
^^^^^^^^^^^^^^^^^^^^
File "/Users/leakyspoon/Documents/TelegramBots/venv/lib/python3.11/site-packages/telegram/ext/_extbot.py", line 332, in _do_post
return await super()._do_post(
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/leakyspoon/Documents/TelegramBots/venv/lib/python3.11/site-packages/telegram/_bot.py", line 504, in _do_post
return await request.post(
^^^^^^^^^^^^^^^^^^^
File "/Users/leakyspoon/Documents/TelegramBots/venv/lib/python3.11/site-packages/telegram/request/_baserequest.py", line 168, in post
result = await self._request_wrapper(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/leakyspoon/Documents/TelegramBots/venv/lib/python3.11/site-packages/telegram/request/_baserequest.py", line 288, in _request_wrapper
raise exc
File "/Users/leakyspoon/Documents/TelegramBots/venv/lib/python3.11/site-packages/telegram/request/_baserequest.py", line 278, in _request_wrapper
code, payload = await self.do_request(
^^^^^^^^^^^^^^^^^^^^^^
File "/Users/leakyspoon/Documents/TelegramBots/venv/lib/python3.11/site-packages/telegram/request/_httpxrequest.py", line 240, in do_request
raise NetworkError(f"httpx.{err.__class__.__name__}: {err}") from err
telegram.error.NetworkError: httpx.ConnectError: [Errno 8] nodename nor servname provided, or not known
如何防止此错误或至少使用错误处理程序处理它?
原因:只要你关闭计算机,你的代码就会停止运行。
为了防止这种情况,您可以在服务器上运行您的程序(此处:telegram chatbot),或者使用在线集成开发环境和网络托管服务,例如https://www.pythonanywhere.com/(我是更担心的是还有许多其他选择)。
另外,为了避免所有这些冗长的错误消息,只需使用
try ... except
捕获它即可。