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

Python Telegram Bot报错:MessageHandler的check_update()缺少update参数

python-telegram-bot无法响应普通消息,报错check_update() missing 1 required positional argument: 'update'

问题描述

机器人可正常响应/start、/help等命令,但发送普通文本(如"Hello")时无回复,控制台抛出如下错误:

Update Update(message=Message(channel_chat_created=False, chat=Chat(first_name='cxl❄️', id=854959559, type=\<ChatType.PRIVATE\>, username='dobongkimchi'), date=datetime.datetime(2023, 8, 31, 6, 58, 2, tzinfo=datetime.timezone.utc), delete_chat_photo=False, from_user=User(first_name='cxl❄️', id=854959559, is_bot=False, language_code='en', username='dobongkimchi'), group_chat_created=False, message_id=102, supergroup_chat_created=False, text='Hello'), update_id=177020891) case error check_update() missing 1 required positional argument: 'update'

问题原因

你使用的是python-telegram-bot v20+版本,该版本对过滤器的使用规则做了变更:

  • 代码中MessageHandler(filters.Text, handle_message)里的filters.Text是过滤器类,直接传入MessageHandler会导致内部调用异常——类的check_update方法需要接收update参数,但直接传类的调用逻辑不符合要求。
  • 正确的文本消息过滤器应使用预定义的filters.TEXT(大写),或实例化filters.Text()类。

解决方案

将MessageHandler的过滤器参数修改为filters.TEXT,修改后的代码片段:

# Messages (Telegram)
app.add_handler(MessageHandler(filters.TEXT, handle_message))

如果需要自定义文本匹配规则(比如忽略大小写),可以实例化filters.Text类:

# 匹配包含指定文本的消息,忽略大小写
app.add_handler(MessageHandler(filters.Text(["hello", "bye"], ignore_case=True), handle_message))

验证修改

修改后重新运行机器人,发送"Hello"即可收到预期的"Hey"回复,控制台不再报错。

内容的提问来源于stack exchange,提问作者doni

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:35:19