如何统计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
相关产品推荐
相关产品推荐

