Telegram Bot如何在answerCallbackQuery中无需/start打开自身聊天窗口
answerCallbackQuery场景下无start命令打开Bot自身聊天窗口实现
已测试场景的问题原因
- 链接格式为
https://t.me/<bot-name>?start=<start-parameter>:属于官方公开的标准深度链接,跳转后会自动在聊天框发送/start <start-parameter>指令,无法满足无命令触发的需求 - 链接格式为
https://t.me/<bot-name>?start=a:b:属于Telegram未公开的非标准语法,本质是客户端解析逻辑的边缘行为,没有官方合规性保障,后续版本随时可能失效,不建议生产环境使用 - 无参数、空start参数的t.me链接(包括
https://t.me/<bot-name>?start=、https://t.me/<bot-name>?start、https://t.me/<bot-name>?、https://t.me/<bot-name>、https://t.me/<bot-name>/):触发URL_INVALID报错是因为Telegram客户端对按钮、回调响应中携带的指向自身bot主页的公网t.me链接做了默认拦截,防止出现循环跳转问题
官方合规实现方式
在调用answerCallbackQuery接口响应内联按钮点击事件时,不要使用公网t.me链接,改用Telegram客户端原生支持的私有协议链接即可实现需求:
- 为
answerCallbackQuery方法的url参数传入值`tg://resolve?domain=<替换为你的Bot用户名,不要带@前缀>` - 该链接不需要附加任何start相关参数,用户端收到回调响应后会直接跳转到和Bot的私聊窗口,不会自动发送
/start命令,也不会触发URL_INVALID报错
说明:
tg://resolve是Telegram全平台官方客户端原生支持的标准解析协议,不属于漏洞或未文档化接口,在iOS、Android、Desktop、macOS等所有官方客户端上兼容性稳定,可放心在生产环境使用。
内容的提问来源于stack exchange,提问作者Rafael Dellà
相关产品推荐
相关产品推荐

