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

Pyrogram如何实现用户加入频道时的通知与成员校验功能

Pyrogram频道成员加入通知与校验实现方案

核心结论

不能完全复现超级群组的实时加入通知与无感知准入校验能力,但可以通过Pyrogram提供的成员状态变更处理器实现大部分需求。

底层机制差异说明

  • 超级群组的新成员加入会生成公开的系统消息,因此你之前使用MessageHandler配合filters.new_chat_members过滤器可以捕获事件,从new_chat_members字段读取成员信息完成校验踢出。
  • Telegram本身不会为频道的成员加入/退出行为生成系统消息,因此MessageHandler无法捕获到相关事件。

可行实现方案

你需要先将机器人设置为目标频道的管理员,并授予其「管理用户」权限,之后注册ChatMemberHandler配合filters.chat_member过滤器即可捕获频道的成员状态变更事件,示例代码如下:

from pyrogram import Client, filters
from pyrogram.handlers import ChatMemberHandler

async def check_new_channel_member(client, update):
    # 取新加入频道的用户对象
    new_member = update.new_chat_member.user
    # 自定义校验逻辑,示例为判断是否设置用户名
    if not new_member.username:
        # 执行踢出操作,需机器人具备封禁权限
        await client.ban_chat_member(
            chat_id=update.chat.id,
            user_id=new_member.id
        )
        # 若需仅踢出不禁封可在封禁后立即调用unban_chat_member

# 注册频道新成员事件处理器
app.add_handler(
    ChatMemberHandler(
        check_new_channel_member,
        # 过滤仅频道的新成员加入事件
        filters.chat_type.channel & filters.chat_member.new
    )
)

能力局限性说明

和超级群组的实现效果存在以下差异:

  • 无审核的公开频道场景下,用户加入后到机器人执行踢出操作存在极小的时间差,该窗口内用户可以查看频道历史内容,无法做到超级群组的无感知踢出。
  • 若频道开启了加入审核,该处理器可以捕获用户的加入申请事件,直接拒绝不符合要求的申请,此时可以实现和超级群组完全一致的准入校验效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:54:05