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

python-telegram-bot 20.0版本无法导入Dispatcher模块求助

问题原因
  • python-telegram-bot v20.0 做了重大架构更新,移除了telegram.ext.Dispatcher,改用Application类替代原来Dispatcher的核心功能。
  • 你看到的在线教程大多基于v13及更早的旧版本,所以还在使用Dispatcher的导入方式。
  • django-telegram-bot包目前可能未适配python-telegram-bot v20.x版本,导致依赖旧的API结构。
解决方法

方案1:降级python-telegram-bot到兼容版本

如果想继续使用django-telegram-bot,建议把python-telegram-bot降级到v13.x(比如v13.7),这是很多教程和django-telegram-bot适配的稳定版本:

pip install python-telegram-bot==13.7

降级后就能正常从telegram.ext导入Dispatcher了。

方案2:适配python-telegram-bot v20.x(不依赖django-telegram-bot)

如果想保留v20版本,需要放弃django-telegram-bot,直接基于python-telegram-bot v20的API来集成到Django:

  1. 用Application替代原来的Dispatcher,初始化代码示例:
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text('Hello!')

# 初始化Application
application = ApplicationBuilder().token("YOUR_BOT_TOKEN").build()

# 添加命令处理器
application.add_handler(CommandHandler("start", start))
  1. 在Django中运行bot,可以通过自定义管理命令实现,比如创建your_app/management/commands/runtelegrambot.py:
from django.core.management.base import BaseCommand
from your_app.telegram_bot import application

class Command(BaseCommand):
    help = 'Starts the Telegram bot'

    def handle(self, *args, **options):
        application.run_polling()

之后执行python manage.py runtelegrambot就能启动bot。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:30:56