我在telegram.ext.filters中遇到“text”属性缺失的问题

1 投票
1 回答
35 浏览
提问于 2025-04-12 18:11

我正在使用 python-telegram-bot 版本 13.7,发现模块 telegram.ext.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()

我试过使用 Filters.text 和 filters.Text,但都不行。我想确认一下 telegram.ext.filters 是否有 "text" 这个属性,结果我看到的情况是确实没有 "text" 这个属性。然后我尝试重新安装、升级和降级,但都没有任何变化。那这个问题该怎么解决呢?

 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'

1 个回答

0

你安装的是 python-telegram-bot 的 13.7 版本,但你在使用 filters 模块时,像是安装了 20 版或更新的版本。关于 13.7 版本的 filters 模块的文档可以在 这里 找到。请注意,PTB 团队不再支持 20 版之前的版本,我建议你按照 过渡指南 更新到最新版本。


免责声明:我目前是 python-telegram-bot 的维护者。

撰写回答