如何通过Telegram频道按钮打开网页应用?解决BUTTON_TYPE_INVALID报错
问题解答
核心原因
Telegram频道不支持使用web_app类型的内联按钮,这是官方明确的功能限制。web_app按钮仅允许在私人聊天(用户与机器人一对一对话)、普通群组/超级群组中使用,频道消息里使用该类型按钮会直接触发BUTTON_TYPE_INVALID错误。
替代解决方案
如果需要在频道内引导用户打开网页或应用,可采用以下两种方式:
使用
url类型内联按钮
将按钮类型替换为url,用户点击后会通过Telegram内置浏览器或系统浏览器打开目标网页,代码修改如下:$telegram = new Telegram($bot_api_key, $bot_username); $keyboard = [ "inline_keyboard" => [ [ [ 'text' => 'Open App', 'url' => 'https://test.com/bot.php', // 替换为url类型 ] ] ] ]; $result = Request::sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'markdown', 'text' => 'Test message', 'reply_markup' => $keyboard ]);引导用户进入私人对话打开Web App
先用url按钮引导用户点击后跳转到与机器人的私人聊天(可使用https://t.me/你的机器人用户名?start=xxx格式的链接),然后在私人聊天中发送带web_app按钮的消息,即可正常打开内嵌网页应用。
内容的提问来源于stack exchange,提问作者Идентикон
相关产品推荐
相关产品推荐

