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

python-telegram-bot v13.7中filters无text/TEXT属性问题求解

问题

使用python-telegram-bot v13.7开发Telegram机器人时,发现telegram.ext.filters模块找不到text或TEXT属性。尝试过Filters.text、filters.TEXT等写法,也重装、升级、降级过库,问题依然存在。

代码示例

import logging
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import telegram.ext.filters as Filters
import openai
import urllib3


openai.api_key = 'token openai'

logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
                    level=logging.INFO)
logger = logging.getLogger(__name__)

def start(update, context):
    update.message.reply_text('Hi I'm your personal bot')

def echo(update, context):
    user_input = update.message.text
    response = generate_response(user_input)
    update.message.reply_text(response)

def generate_response(input_text):
    response = openai.Completion.create(
        engine="text-davinci-002",
        prompt=input_text,
        max_tokens=50
    )
    return response.choices[0].text.strip()

def main():
    updater = Updater("token telegram", use_context=True )

    dispatcher = updater.dispatcher

    dispatcher.add_handler(CommandHandler("start", start))

    dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))

    updater.start_polling()

    updater.idle()

if __name__ == '__main__':
    main()

报错信息

D:\R.M\Python\Lib\site-packages\telegram\utils\request.py:49: UserWarning: python-telegram-bot is using upstream urllib3. This is allowed but not supported by python-telegram-bot maintainers.
  warnings.warn(
Traceback (most recent call last):
  File "D:\R.M\piton\CHATGPTTELEGRAM.PY", line 13, in <module>
    do_stuff()
  File "D:\R.M\piton\CHATGPTTELEGRAM.PY", line 10, in do_stuff
    raise Exception("test exception")
Exception: test exception

Traceback (most recent call last):
  File "D:\R.M\piton\CHATGPTTELEGRAM.PY", line 64, in <module>
    main()
  File "D:\R.M\piton\CHATGPTTELEGRAM.PY", line 55, in main
    dispatcher.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
                                          ^^^^^^^^^^^^
AttributeError: module 'telegram.ext.filters' has no attribute 'TEXT'

解决方案

  • 解决导入冲突:代码中同时做了两次Filters导入,第二次导入会覆盖第一次的Filters对象,导致调用错误。删除第二行导入语句import telegram.ext.filters as Filters即可。
  • 匹配v13.7版本API:python-telegram-bot v13.x版本中,文本消息过滤器是Filters.text,命令过滤器是Filters.command;大写的TEXT/COMMAND是v14及以上版本的写法,v13.x不支持。
  • 修复字符串语法错误:start函数里的字符串存在单引号嵌套问题,将'Hi I'm your personal bot'改为"Hi I'm your personal bot"即可。

修正后的完整代码

import logging
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import openai
import urllib3


openai.api_key = 'token openai'

logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
                    level=logging.INFO)
logger = logging.getLogger(__name__)

def start(update, context):
    update.message.reply_text("Hi I'm your personal bot")

def echo(update, context):
    user_input = update.message.text
    response = generate_response(user_input)
    update.message.reply_text(response)

def generate_response(input_text):
    response = openai.Completion.create(
        engine="text-davinci-002",
        prompt=input_text,
        max_tokens=50
    )
    return response.choices[0].text.strip()

def main():
    updater = Updater("token telegram", use_context=True )

    dispatcher = updater.dispatcher

    dispatcher.add_handler(CommandHandler("start", start))

    dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))

    updater.start_polling()

    updater.idle()

if __name__ == '__main__':
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:32:38