Telegram Bot API:如何判断用户是否通过邀请链接加入群组?
判断用户是否通过Telegram邀请链接加入群组的方法
嘿,这个问题我之前也折腾过!Telegram Bot API确实没有一个直接的字段能告诉你用户是不是通过邀请链接加入的,但有几个实用的间接方法可以帮你实现这个判断:
借助自定义邀请链接和
ChatMemberUpdated的invite_link字段
首先,你需要通过Bot的createChatInviteLink接口创建专属的邀请链接,给每个链接设置唯一的name参数(比如用来标记渠道:"知乎引流"、"好友分享")。当用户通过这个链接加入群组时,Bot会收到ChatMemberUpdated类型的Update,其中的invite_link字段会包含这个链接的详细信息(包括你设置的name)。如果这个字段不存在,基本就能确定用户是通过搜索群组、直接输入群组ID/通用链接,或者被管理员直接拉进群的。给你个Python示例(用python-telegram-bot库):
from telegram import Update from telegram.ext import CallbackContext def handle_chat_member_update(update: Update, context: CallbackContext): chat_member_change = update.chat_member # 只处理用户加入成为普通成员的情况 if chat_member_change.new_chat_member.status == "member": invite_link_info = chat_member_change.invite_link if invite_link_info: print(f"用户通过邀请链接加入!链接标识: {invite_link_info.name}") else: print("用户未通过邀请链接加入(可能是搜索、管理员添加等)")需要注意的特殊情况
有几个例外场景要留意:- 如果用户是被群组管理员手动添加进群的,
invite_link字段同样不会出现。 - 非Bot创建的默认群组链接、或者非常旧的邀请链接,可能无法被API识别,这时候
invite_link也会为空,这种情况就没法区分了。
- 如果用户是被群组管理员手动添加进群的,
内容的提问来源于stack exchange,提问作者Dima Voronenkov
相关产品推荐
相关产品推荐

