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

解决Telegram机器人报错:TypeError: __init__()收到意外关键字参数'token'

Telegram群组监控机器人错误修复方案

错误原因

你碰到的TypeError: __init__() got an unexpected keyword argument 'token',是因为使用的python-telegram-bot版本为v20+。该版本彻底移除了Updater类,API结构做了重大调整,旧版本的初始化写法不再兼容。

修复后的完整代码

以下是适配新版API,同时修正其他逻辑问题的代码:

import logging
from telegram import Update
from telegram.ext import ApplicationBuilder, MessageHandler, filters, ContextTypes

# 替换为你的Bot Token
TOKEN = '你的真实Token'
# 替换为你接收通知的个人Chat ID(获取方式:给@userinfobot发消息即可拿到)
NOTIFY_CHAT_ID = '你的个人Chat ID'
# 要监控的关键词列表
KEYWORDS = ['June', 'July', 'August']

# 配置日志,方便排查问题
logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.INFO
)

async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
    message = update.message
    if message.text:
        # 忽略大小写,检查消息是否包含任意关键词
        message_text = message.text.lower()
        matched_keywords = [kw for kw in KEYWORDS if kw.lower() in message_text]
        if matched_keywords:
            # 向你的个人Chat ID发送监控通知
            await context.bot.send_message(
                chat_id=NOTIFY_CHAT_ID,
                text=f"监控到关键词{'/'.join(matched_keywords)}:\n群聊:{update.effective_chat.title}\n消息内容:{message.text}"
            )

def main():
    # 使用新版ApplicationBuilder初始化机器人
    application = ApplicationBuilder().token(TOKEN).build()

    # 注册消息处理器,过滤掉机器人命令(如/start)
    message_handler = MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message)
    application.add_handler(message_handler)

    # 启动机器人
    application.run_polling()

if __name__ == '__main__':
    main()

额外修复说明

  1. 替换过时的Updater为v20+的ApplicationBuilder,适配新版API规范
  2. 修正KEYWORD定义错误:原代码是元组,调用lower()会报错,改为列表后遍历检查多关键词
  3. 新增NOTIFY_CHAT_ID:原代码是在群内发通知,现在改为向你个人发送监控提醒
  4. 适配异步语法:v20+要求消息处理器函数使用async/await形式
  5. 优化匹配逻辑:支持同时监控多个关键词,并返回具体匹配项
  6. 过滤机器人命令:避免触发/start这类命令消息的监控

旧版本兼容方案(不推荐)

如果非要使用已停止维护的v13.x版本,只需修改Updater初始化方式(将token作为位置参数传入):

# 仅适用于python-telegram-bot v13.x
updater = Updater(TOKEN, use_context=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 08:43:16