如何使用Python Bot捕获Telegram频道与群组的引荐来源URL
Telegram Bot 捕获引荐来源URL实现方案
核心逻辑说明
Telegram 本身不会直接向Bot传递用户跳转前的站点URL,你需要通过*深度链接(Deep Link)*的方式间接实现引荐来源识别,这是目前唯一可行的落地路径。
具体实现步骤
- 第一步:生成带来源标识的专属Telegram跳转链接
Telegram Bot的深度链接固定格式为https://t.me/你的Bot用户名?start=来源标识参数,你可以在官网等目标站点,把用户跳转Telegram的按钮链接替换为该格式,参数部分可自定义,比如来自官网就设置为start=official_site_2024,不同来源设置不同的参数值即可。 - 第二步:Bot侧捕获启动参数
当用户点击你站内置的专属链接跳转打开Telegram、点击启动Bot后,Bot会收到/start 来源标识参数这条消息,你只需要解析/start后面的参数值,就能匹配到用户的来源。
示例代码片段(Python python-telegram-bot 库):async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: # 获取start指令后的参数值 source = context.args[0] if context.args else None if source == "official_site_2024": # 匹配到官网来源,执行授予专属权限操作 await context.bot.promote_chat_member( chat_id=你的群组/频道ID, user_id=update.effective_user.id, can_send_messages=True # 其他权限按需配置 ) await update.message.reply_text("已为你开通官网用户专属权限") - 第三步:群组/频道场景的权限联动
如果你的需求是用户加入群组/频道才授予权限,可以设置引导流程:用户触发来源匹配后,Bot发送群组/频道邀请链接,用户加入后,Bot监听chat_member_updated事件,对应用户ID和之前匹配到的来源标识,再执行权限配置即可。
注意事项
- 所有来源参数建议做加密或签名校验,避免用户手动拼接参数伪造来源
- 如果你需要获取完整的引荐页面URL,可以把URL做base64编码后放到start参数里,Bot侧解码即可获取原始URL
- Telegram 深度链接的参数长度限制为64字符,超长的话可以做短码映射,服务端存储短码和原URL的对应关系即可
内容的提问来源于stack exchange,提问作者Zakorakis
相关产品推荐
相关产品推荐

