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

Python开发Telegram频道欢迎机器人遇NameError问题求助

问题修复与开发指导

错误原因及修复

你遇到的NameError: name 'Filters' is not defined错误,核心原因是python-telegram-bot库的版本差异:

  • v13及更早版本中,过滤器使用大写的Filters,导入路径为from telegram import Filters
  • v14及之后的版本,官方将过滤器统一改为小写的filters,导入路径调整为from telegram.ext import filters

具体修复步骤

  1. 先确认当前库版本:
    pip show python-telegram-bot
    
  2. 根据版本调整代码:
    • 若使用v14+版本:将代码里所有Filters替换为filters,并确保导入语句正确:
      from telegram.ext import filters, MessageHandler, ApplicationBuilder
      
    • 若使用v13及以下版本:检查是否正确导入大写的Filters:
      from telegram import Filters
      

频道新成员私发欢迎消息的实现示例

以下是适配v20+主流稳定版的完整可运行代码:

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

# 替换为你的机器人Token
BOT_TOKEN = "你的机器人Token"

async def welcome_new_member(update: Update, context: ContextTypes.DEFAULT_TYPE):
    # 获取新加入频道的成员列表
    new_members = update.effective_message.new_chat_members
    for member in new_members:
        # 向成员发送私信欢迎消息
        await context.bot.send_message(
            chat_id=member.id,
            text=f"欢迎加入我们的频道!{member.first_name} 😊"
        )
        # 可选:删除频道内的系统入群通知,避免骚扰其他用户
        await update.effective_message.delete()

if __name__ == "__main__":
    # 构建机器人应用
    application = ApplicationBuilder().token(BOT_TOKEN).build()
    
    # 添加新成员事件处理器
    welcome_handler = MessageHandler(filters.StatusUpdate.NEW_CHAT_MEMBERS, welcome_new_member)
    application.add_handler(welcome_handler)
    
    # 启动机器人
    application.run_polling()

关键开发注意事项

  • 机器人需在频道中被设为管理员,开启「读取消息」和「发送消息」权限,否则无法检测新成员或发送私信
  • 部分用户可能设置了「拒绝陌生人私信」,这种情况下机器人无法发送消息,代码会自动抛出权限错误但不会中断运行
  • 建议始终使用最新版库,执行pip install --upgrade python-telegram-bot即可更新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:12:36