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

如何统计Telegram Bot生成的私密频道链接的加入人数?

Telegram Bot统计私密频道邀请链接加入人数及处理加入行为方案

前提条件

  • 你的Bot必须是目标私密频道的管理员,需拥有「查看成员」「管理频道」权限
  • 已完成Bot基础配置:获取官方Token,选择使用Long Polling或Webhook模式

一、统计历史加入人数(快速获取累计数据)

Telegram API直接提供了邀请链接的累计加入人数字段,调用getChatInviteLinks方法即可获取所有私密链接的统计数据:

示例代码(Python-telegram-bot库)

from telegram import Bot

# 初始化Bot
bot = Bot(token='你的Bot Token')
# 私密频道Chat ID(格式为-100xxxxxxxxx,可通过@getidsbot获取)
target_chat_id = '-1001234567890'

# 获取所有频道邀请链接
invite_links = bot.get_chat_invite_links(target_chat_id)

# 遍历输出每个链接的统计信息
for link in invite_links:
    invite_code = link.invite_link.split('/')[-1]
    print(f"邀请链接: {link.invite_link}")
    print(f"邀请码: {invite_code}")
    print(f"累计加入人数: {link.member_count}\n")

二、实时监听并处理用户加入行为

通过监听ChatMemberUpdated事件,可捕获用户通过邀请链接加入频道的动作,进而实现自定义统计或处理逻辑:

示例代码(Python-telegram-bot v13+)

from telegram.ext import Updater, ChatMemberHandler

def handle_new_member(update, context):
    chat_member_update = update.chat_member
    # 仅处理用户从非成员变为正式成员的事件
    if (chat_member_update.new_chat_member.status == 'member' 
        and chat_member_update.invite_link is not None):
        
        # 提取关键信息
        invite_code = chat_member_update.invite_link.split('/')[-1]
        user = chat_member_update.new_chat_member.user
        user_id = user.id
        username = user.username or '匿名用户'
        join_time = update.effective_date
        
        # 1. 统计逻辑:写入数据库(示例用打印代替)
        print(f"[{join_time}] 用户 {username}({user_id}) 通过邀请码 {invite_code} 加入频道")
        
        # 2. 自定义处理行为(示例:发送欢迎消息、验证权限等)
        # 给用户发欢迎私信
        context.bot.send_message(
            chat_id=user_id,
            text=f"欢迎通过专属邀请链接加入频道!你的邀请码是 {invite_code}"
        )
        # 给管理员发通知
        context.bot.send_message(
            chat_id='你的管理员ID',
            text=f"新成员加入:{username}({user_id}),来源邀请码:{invite_code}"
        )

def main():
    updater = Updater('你的Bot Token')
    dp = updater.dispatcher
    # 添加成员更新处理器
    dp.add_handler(ChatMemberHandler(handle_new_member, ChatMemberHandler.CHAT_MEMBER))
    # 启动Long Polling
    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

三、常见扩展场景

  • 精细化统计:将邀请码、用户ID、加入时间存入SQLite/MySQL,后续可生成按邀请码、时间段的统计报表
  • 用户验证:检查用户是否满足前置条件(如已关注指定频道),不满足则调用ban_chat_member移除
  • 权益发放:给特定邀请码来源的用户分配频道内自定义权限,或发送专属资源链接

注意事项

  • Bot必须保持频道管理员身份,否则无法获取邀请链接数据或监听成员事件
  • 私密频道Chat ID需以-100开头,切勿使用普通群聊ID格式
  • Webhook模式需确保服务器具备有效SSL证书,且能被Telegram服务器访问
  • 历史成员数据仅能通过getChatInviteLinks的member_count获取累计值,无法追溯具体用户(除非Bot全程记录事件)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:10:21