You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telegram机器人命令无响应排查:aiogram未处理Update问题

Telegram机器人命令处理器无响应问题排查

问题描述

我有一个大型Telegram机器人项目,今日突然停止运行,不清楚具体是哪些改动导致了该问题,核心表现为命令处理器不再响应指令。日志信息如下:

INFO:aiogram.dispatcher:Start polling
INFO:aiogram.dispatcher:Run polling for bot ...
INFO:aiogram.event:Update id=????? is not handled. Duration 0 ms by bot id=?????

我已将代码简化至基础版本,但问题仍未解决,请问可能的原因是什么?

基础代码(main.py):

import logging
import asyncio
from aiogram.types import Message, FSInputFile
from aiogram.filters import CommandStart
from aiogram import Bot, Dispatcher


bot = Bot(token="79127??????????????????fXTNyc")
dp = Dispatcher()


async def main():
    await dp.start_polling(bot)


if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO)
    asyncio.run(main())


logo_photo = FSInputFile('212649.png')


@dp.message(CommandStart())
async def cmd_start(message: Message):
    await message.answer_photo(photo=logo_photo, caption='текст')

PS:id和token已做隐藏处理

可能的原因及解决方法

1. 命令处理器注册时机错误

这是当前基础代码中最直接的问题:你把@dp.message(CommandStart())装饰的命令处理函数定义放在了asyncio.run(main())之后。而dp.start_polling(bot)启动调度器时,装饰器还没完成处理器的注册,导致调度器完全不知道存在这个/start命令的处理逻辑,自然无法响应指令。

解决方法:将命令处理函数(包括装饰器)和相关变量的定义移到main()函数调用之前,调整后的代码结构如下:

import logging
import asyncio
from aiogram.types import Message, FSInputFile
from aiogram.filters import CommandStart
from aiogram import Bot, Dispatcher


bot = Bot(token="79127??????????????????fXTNyc")
dp = Dispatcher()

# 提前定义变量和处理函数
logo_photo = FSInputFile('212649.png')

@dp.message(CommandStart())
async def cmd_start(message: Message):
    await message.answer_photo(photo=logo_photo, caption='текст')

async def main():
    await dp.start_polling(bot)


if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO)
    asyncio.run(main())

2. 大型项目的其他潜在原因

  • 依赖版本冲突:如果近期更新了aiogram或相关依赖库,可能出现版本不兼容,导致调度器无法正确注册处理器。可以尝试回退到之前项目正常运行时的依赖版本。
  • Webhook与Polling模式冲突:若之前使用Webhook模式,切换到Polling时未正确清理Webhook,Telegram服务器可能仍向旧Webhook地址发送更新,导致本地Polling收不到指令。可在启动Polling前添加await bot.delete_webhook(drop_pending_updates=True)来清理。
  • Token或权限问题:机器人Token可能失效,或机器人被限制权限(如封禁、无法发送消息)。可调用Telegram Bot API的getMe接口验证Token有效性。
  • 文件路径异常:FSInputFile('212649.png')对应的文件不存在或路径错误,可能导致处理函数抛出未捕获的异常。可暂时替换为文本消息测试(如await message.answer('测试')),验证命令处理器是否能正常响应。

内容的提问来源于stack exchange,提问作者Илья Дьяченко

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:15:58