Telegram Bot:如何让/start命令的唯一密钥在网页端生效?
解决Telegram网页端Deep Link无法传递Unique Key的问题
我之前也碰到过一模一样的问题——客户端里的deep link正常工作,但网页端点击Start按钮后参数就丢了。下面是几个经过验证的解决方法,能让用户点击链接后自动把unique key传给机器人:
1. 使用网页版Telegram的直接深度链接格式
这是最可靠的方案,直接跳过那个只显示Start按钮的中间页面,直接打开网页版聊天界面并触发带参数的/start命令。格式如下:
https://web.telegram.org/k/#@ExampleBot?start=uniqueKey
替换ExampleBot为你的机器人用户名,uniqueKey为用户的专属密钥即可。用户点击这个链接后,只要登录了网页版Telegram,就会直接进入和机器人的聊天,并且自动发送/start uniqueKey,完全不需要手动操作。
2. 改用t.me域名的直接链接
原来的telegram.me域名跳转页面存在参数丢失的问题,换成t.me域名的链接可以解决这个问题:
https://t.me/ExampleBot?start=uniqueKey
这个链接在浏览器中打开时,如果用户已经登录网页版Telegram,会直接跳转至聊天界面并发送带参数的启动命令;如果未登录,登录完成后也会自动触发该命令,不会丢失unique key。
3. 确认机器人端的参数处理逻辑
最后别忘了验证你的机器人代码是否正确解析了/start命令后的参数。比如在Python的python-telegram-bot库中,你可以这样获取参数:
def start(update: Update, context: CallbackContext) -> None: unique_key = context.args[0] if context.args else None # 处理你的密钥逻辑
确保机器人能正确接收并处理这个参数,避免因为后端逻辑问题导致误以为参数没传递。
内容的提问来源于stack exchange,提问作者Petr Adam




