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

Telegram Bot集成OpenAI脚本报错:'Updater'无'dispatcher'属性

问题解决:AttributeError: 'Updater' object has no attribute 'dispatcher'

这个报错的核心原因是python-telegram-bot版本不兼容:v20及以上版本彻底移除了Updater类,同时废弃了旧版的dispatcher属性逻辑。以下是两种可行解决方案:

方案一:降级到兼容旧代码的版本

如果不想大幅修改现有代码,直接降级到v19.x系列(最后一个支持Updater的稳定版本):

pip install python-telegram-bot==19.10

降级后,原代码中updater.dispatcher的调用逻辑可以正常运行。

方案二:适配最新版(v20+)代码结构

如果要使用最新库版本,需完全改用Application类替代Updater,同时适配异步语法,示例代码如下:

from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes, filters, MessageHandler
import openai

# 初始化OpenAI
openai.api_key = "你的OpenAI API Key"

# 异步处理函数:调用OpenAI回复
async def chat_with_gpt(update: Update, context: ContextTypes.DEFAULT_TYPE):
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": update.message.text}]
    )
    await update.message.reply_text(response.choices[0].message.content)

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text('发送消息即可调用OpenAI聊天!')

if __name__ == '__main__':
    # 初始化Telegram Bot Application
    app = ApplicationBuilder().token("你的Telegram Bot Token").build()

    # 添加命令处理器
    app.add_handler(CommandHandler("start", start))
    # 添加文本消息处理器(排除命令消息)
    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, chat_with_gpt))

    # 启动轮询
    app.run_polling()

注意事项:

  • 所有消息处理函数必须定义为async异步函数,回复消息需用await调用相关方法
  • 旧版的Filters已迁移到telegram.ext.filters,且命名改为小写(如filters.TEXT代替Filters.text)
  • 若OpenAI调用耗时较长,可考虑用线程池异步处理,避免阻塞Bot的消息响应

内容的提问来源于stack exchange,提问作者Oktorio R.P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:20:17