aiogram机器人触发TelegramNetworkError请求超时问题求助
问题
我写了一个带/start命令处理器的简单aiogram机器人,代码如下:
@user_router.message(CommandStart()) async def start_command(message: Message): logger.info(f'Start from user {message.from_user.username} id={message.from_user.id}') await message.answer('Hello')
运行机器人后能看到正常启动日志:
[2024-07-29 20:04:09,944] #INFO bot.py:21 - __main__ - Starting bot [2024-07-29 20:04:10,731] #INFO dispatcher.py:527 - aiogram.dispatcher - Start polling [2024-07-29 20:04:11,034] #INFO dispatcher.py:341 - aiogram.dispatcher - Run polling for bot ....
但发送/start命令后出现错误:aiogram.exceptions.TelegramNetworkError: HTTP Client says - Request timeout error,对应的错误日志如下:
[2024-07-29 20:04:15,519] #INFO user_handlers.py:23 - handlers.user_handlers - Start from user ..... [2024-07-29 20:05:15,969] #INFO dispatcher.py:172 - aiogram.event - Update id=.... is not handled. Duration 60449 ms by bot id=.... [2024-07-29 20:05:15,970] #ERROR dispatcher.py:315 - aiogram.event - Cause exception while process update id=..... by bot id=.... TelegramNetworkError: HTTP Client says - Request timeout error Traceback (most recent call last): File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/client/session/aiohttp.py", line 181, in make_request async with session.post( File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiohttp/client.py", line 1197, in __aenter__ self._resp = await self._coro ^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiohttp/client.py", line 507, in _request with timer: File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiohttp/helpers.py", line 735, in __exit__ raise asyncio.TimeoutError from None TimeoutError During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/dispatcher.py", line 309, in _process_update response = await self.feed_update(bot, update, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/dispatcher.py", line 158, in feed_update response = await self.update.wrap_outer_middleware( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/middlewares/error.py", line 25, in __call__ return await handler(event, data) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/middlewares/user_context.py", line 49, in __call__ return await handler(event, data) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/fsm/middleware.py", line 42, in __call__ return await handler(event, data) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/event/telegram.py", line 121, in trigger return await wrapped_inner(event, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/event/handler.py", line 43, in call return await wrapped() ^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/dispatcher.py", line 276, in _listen_update return await self.propagate_event(update_type=update_type, event=event, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/router.py", line 142, in propagate_event return await observer.wrap_outer_middleware(_wrapped, event=event, data=kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/router.py", line 137, in _wrapped return await self._propagate_event( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/router.py", line 170, in _propagate_event response = await router.propagate_event(update_type=update_type, event=event, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/router.py", line 142, in propagate_event return await observer.wrap_outer_middleware(_wrapped, event=event, data=kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/router.py", line 137, in _wrapped return await self._propagate_event( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/router.py", line 162, in _propagate_event response = await observer.trigger(event, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/event/telegram.py", line 121, in trigger return await wrapped_inner(event, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/dispatcher/event/handler.py", line 43, in call return await wrapped() ^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/handlers/user_handlers.py", line 31, in start_command await message.answer(LEXICON_RU['greeting']) File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/methods/base.py", line 84, in emit return await bot(self) ^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/client/bot.py", line 485, in __call__ return await self.session(self, method, timeout=request_timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/client/session/base.py", line 254, in __call__ return cast(TelegramType, await middleware(bot, method)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/andreisukhar/Projects/Python/rulebreakers/she-bot/venv/lib/python3.12/site-packages/aiogram/client/session/aiohttp.py", line 186, in make_request raise TelegramNetworkError(method=method, message="Request timeout error") aiogram.exceptions.TelegramNetworkError: HTTP Client says - Request timeout error
让朋友在他电脑上运行这个机器人,一切正常且能收到回复。请问这可能是什么原因导致的?
可能的原因
- 网络环境限制:你的网络可能被防火墙、代理或ISP限制了访问Telegram API的出站请求。启动时的polling是拉取请求,而发送消息是出站请求,两者的网络规则可能不同。朋友的网络没有这类限制,所以能正常运行。
- DNS解析问题:本地DNS无法正确解析Telegram API的域名,导致发送请求时超时。可以尝试更换公共DNS测试。
- 请求超时设置过短:aiogram默认的请求超时时间可能不适合你的网络环境。可以在创建Bot实例时手动设置更长的超时时间,比如:
from aiogram import Bot bot = Bot(token="YOUR_TOKEN", timeout=30)
- 本地网络不稳定:你的网络连接波动大,发送消息时的请求在规定时间内无法得到Telegram服务器的响应,而朋友的网络更稳定。
- VPN或代理冲突:如果你的设备开启了VPN或代理,但配置有问题,可能导致出站请求无法正常到达Telegram服务器。可以尝试关闭VPN/代理后重新运行机器人。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

