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

python-telegram-bot 20.2版本Updater初始化报错:未知参数'use_context'

问题解决:python-telegram-bot 20.2 中 Updater 初始化报错

错误原因

python-telegram-bot 从 v13.x 版本开始就默认启用上下文模式,到 v20.x 版本直接彻底移除了use_context参数,所以你在初始化Updater时传入这个参数会触发TypeError。

修复步骤

1. 移除 use_context=True 参数

直接删掉这个参数,初始化Updater只需要传入token即可:

updater = Updater(token)

2. 修正代码里的其他问题

你的代码还有几个细节问题需要调整:

  • 环境变量使用错误:os.environ.get()的参数应该是环境变量的名称,不是具体的token或ID值。比如你需要先在系统环境变量里设置TELEGRAM_BOT_TOKEN和ADMIN_CHAT_ID,再通过os.environ.get('TELEGRAM_BOT_TOKEN')获取。
  • 变量作用域问题:echo函数里重新定义了ADMIN_CHAT_ID,导致无法访问main函数中定义的变量,需要调整作用域。
  • 重复定义token:main函数里重复定义了TOKEN和token变量,统一使用环境变量获取的即可。

修正后的完整代码

import os
from telegram.ext import Updater, CommandHandler, MessageHandler, filters

# 全局变量存储管理员ID
ADMIN_CHAT_ID = None

def start(update, context):
    context.bot.send_message(chat_id=update.effective_chat.id, text="test")

def echo(update, context):
    global ADMIN_CHAT_ID
    context.bot.forward_message(
        chat_id=ADMIN_CHAT_ID,
        from_chat_id=update.message.chat_id,
        message_id=update.message.message_id
    )
    context.bot.send_message(chat_id=update.effective_chat.id, text="test")

def main():
    global ADMIN_CHAT_ID
    # 从环境变量获取token和管理员ID(需先在系统中设置对应环境变量)
    TOKEN = os.environ.get('TELEGRAM_BOT_TOKEN')
    ADMIN_CHAT_ID = os.environ.get('ADMIN_CHAT_ID')

    if not TOKEN or not ADMIN_CHAT_ID:
        print("请设置TELEGRAM_BOT_TOKEN和ADMIN_CHAT_ID环境变量")
        return

    updater = Updater(TOKEN)
    dispatcher = updater.dispatcher

    start_handler = CommandHandler('start', start)
    echo_handler = MessageHandler(filters.text & ~filters.command, echo)

    dispatcher.add_handler(start_handler)
    dispatcher.add_handler(echo_handler)

    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

补充说明

  • 临时设置环境变量的方法:
    • Windows命令行:
      set TELEGRAM_BOT_TOKEN=你的机器人token
      set ADMIN_CHAT_ID=你的管理员聊天ID
      
    • Linux/macOS终端:
      export TELEGRAM_BOT_TOKEN=你的机器人token
      export ADMIN_CHAT_ID=你的管理员聊天ID
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:30:13