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

Telegram机器人能否检测频道新成员加入事件?

如何通过Telegram机器人获取频道新用户ID并发送私信通知

完全可行,以下是具体实现思路、代码示例和注意事项:

核心前提

确保机器人已被设为频道管理员,且必须开启管理频道权限——没有这个权限,机器人无法捕获用户加入频道的事件。

实现步骤

  1. 监听用户加入事件
    使用Telegram Bot API的getUpdates接口,或者基于开发框架(如pyrogram、python-telegram-bot)监听chat_member更新事件。当有新用户加入频道时,机器人会收到包含用户核心信息的事件数据。

  2. 提取用户详情
    从事件数据中提取关键信息:

    • user.id:用户唯一ID(必能获取)
    • user.first_name:用户昵称
    • user.username:用户Telegram用户名(部分隐私用户可能为空)
  3. 发送私信通知
    调用Bot API的sendMessage接口,将整理好的用户详情发送到你的个人账号ID。注意:你需要先主动给机器人发过一条消息,否则机器人无法主动发起私信。

代码示例(基于Pyrogram)

from pyrogram import Client, filters
from pyrogram.types import ChatMemberUpdated

# 替换为你的机器人和个人账号信息
API_ID = 你的API_ID
API_HASH = "你的API_HASH"
BOT_TOKEN = "你的机器人TOKEN"
YOUR_USER_ID = 你的个人账号ID

app = Client("channel_member_bot", api_id=API_ID, api_hash=API_HASH, bot_token=BOT_TOKEN)

@app.on_chat_member_updated(filters.chat("你的频道ID或用户名"))
async def track_new_join(client, update: ChatMemberUpdated):
    # 判断是否为新用户首次加入
    if update.new_chat_member.status == "member" and update.old_chat_member is None:
        user = update.new_chat_member.user
        # 整理用户信息
        user_info = f"新用户加入频道:\nID: {user.id}\n昵称: {user.first_name}"
        if user.username:
            user_info += f"\n用户名: @{user.username}"
        # 发送私信通知
        await client.send_message(YOUR_USER_ID, user_info)

app.run()

注意事项

  • 隐私设置较高的用户,机器人可能无法获取其用户名,但用户ID是一定会返回的。
  • 私有频道中,只有通过邀请链接或管理员手动添加的用户,才会被机器人检测到加入事件。
  • 若使用python-telegram-bot等其他框架,逻辑类似,只需对应调整事件监听和消息发送的API调用方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:52:04